Docker本地仓库简单使用一些例子

作者:袖梨 2022-11-14

docker镜像命令

获取镜像:docker pull centos
查看镜像:docker images
查看镜像详细信息:docker inspect [NAME:tag]
搜索镜像:docker search [NAME:tag]
删除镜像:docker rmi [NAME:tag&ID]

​ -f:强制删除

创建镜像:docker commit
导入镜像:cat 镜像.tar |docker import - centos:7
存出镜像:docker save -o centos:7.tar centos7
载入镜像:docker load --imput cnetos7.tar
​ 或者:docker load < centos7.tar
上传镜像:docker push
添加标签后在上传,如下:
​ docer tag centos:7 mark/centos:7
​ docker push mark/centos:7

docker容器命令

新建容器:docker create -it centos:tag
启动容器:docker start NAME
创建并后台启动:docker run --name mynginx -d nginx
-d 守护进程模式

创建启动并连接容器并启动一个bash终端:docker run -it mynginx /bin/bash
当docker run来创建并启动容器时,Docker在后台运行操作包括:
1,检查本地是否存在指定镜像,不存在则从共有仓库下载
2,利用镜像创建并启动一个容器
3,分配一个文件系统,并在只读的镜像层外挂载一层可读写层
4,从宿主机配置的网桥借口中桥接一个虚拟借口到容器中
5,从地址池分配一个ip地址给容器
6,执行用户指定的应用程序
7,执行完毕后终止

其中-t选项让docker分配一个伪终端并绑定到容器的标准输出上,-i则让容器的标准输入保持打开
查看容器:docker ps -a
关闭容器: docker stop NAME

docker stop它首先会向容器发送一个SIGTERM信号,等一段时间后,默认10秒后,在发送SIGKILL来终止rongqi
启动容器:docker start NAME
强行终止:docker kill ID
进入容器运行命令:docker exec -it ID /bin/bahs
当然,也可以不进入容器运行命令:docker exec NAME ps

删除容器:docker rm ID
删除运行中的容器:docker rm -f ID
导出容器:docker export ID > name.tar
导入容器:cat name.tar | docker import - test/centos:7

创建和使用本地私有仓库:

1,下载安装registry

我们通过官方提供的registry镜像来简单搭建本地的私有仓库环境
docker run -d -p 5000:5000 registry
这将自动下载并启动一个registry容器,创建本地的私有仓库服务
默认情况下回创建在容器的/tmp/registry目录下,可以通过-v参数来讲镜像放在本地的指定路径上
下面例子将上传的镜像放到/opt/registry 目录
docker run -d -p 5000:5000 -v /opt/registry:/tmp/registry registry

[root@gitlab conf]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry latest c6c14b3960bd 4 weeks ago 33.28 MB

2,确保registry是up状态

我们可以看到registry一件被run起来来

[root@gitlab conf]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
29c0811c9195 registry "/entrypoint.sh /etc/" 17 minutes ago Up 17 minutes 0.0.0.0:5000->5000/tcp awesome_wescoff
240c99335256 marksugar/nginx "/usr/local/nginx/sbi" 2 hours ago Up 2 hours 0.0.0.0:81->80/tcp mynginx
b889bfd7a6ee marksugar/nginx:8.33 "/bin/bash" 21 hours ago Up 7 hours 0.0.0.0:80->80/tcp nginx
[root@gitlab conf]#

3,将镜像标记并上传

使用docker tag将一个镜像标记,格式如下:
10.10.239.222:5000/alpine,其中10.10.239.222是本地仓库地址,5000为仓库端口,alpine是镜像标签
这里的10.10.239.222可以是本地的ip也可以是域名,如:www.111com.net

[root@gitlab conf]# docker tag benyoo/alpine:3.4.20160812 10.10.239.222:5000/alpine
当标记完成后,本地的images中会存放一个和标记名称一样的镜像,我们将这个镜像上传即可

[root@gitlab conf]# docker push 10.10.239.222:5000/alpine
The push refers to a repository [10.10.239.222:5000/alpine]
93d40cd73394: Pushed
4fe15f8d0ae6: Pushed
latest: digest: sha256:41250fea2bc5dfdc204d54e4d2108aae7a452876bed359ae277983aea4ae3e02 size: 739
[root@gitlab conf]#

4,使用本地仓库pull

尝试一次pull方才进行push到本地仓库的镜像,你会发现本地镜像速度比docker hub要快上很多

[root@localhost ~]# docker pull 10.10.239.222:5000/alpine
Using default tag: latest
latest: Pulling from alpine
Digest: sha256:41250fea2bc5dfdc204d54e4d2108aae7a452876bed359ae277983aea4ae3e02
Status: Downloaded newer image for 10.10.239.222:5000/alpine:latest
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
marksugar/alpine latest 07a4ff4374e1 23 hours ago 11.54 MB
debian latest 031143c1c662 29 hours ago 125.1 MB
marksugar/nginx 8.30 e50a274c5823 33 hours ago 13.77 MB
10.10.239.222:5000/alpine latest 0ae37ed604b2 2 weeks ago 11.54 MB
benyoo/alpine 3.4.20160812 0ae37ed604b2 2 weeks ago 11.54 MB
nginx latest 0d409d33b27e 3 months ago 182.7 MB
[root@localhost ~]#

报错解决办法:

Error response from daemon: Get https://10.10.239.222:5000/v1/_ping: http: server gave HTTP response to HTTPS client
只需要两步即可:

1,Create or modify /etc/docker/daemon.json

[root@localhost ~]# echo '{ "insecure-registries":["10.10.239.222:5000"] }' > /etc/docker/daemon.json
[root@localhost ~]# cat /etc/docker/daemon.json
{ "insecure-registries":["10.10.239.222:5000"] }
2,重载docker
root@localhost ~]# systemctl restart docker

相关文章

精彩推荐