容器镜像的管理主要围绕镜像仓库(Registry)来进行。在实际应用中,不管开发人员或CI系统发布镜像,仍是测试人员或运维人员下载镜像,都要经过镜像仓库来完成。镜像仓库分为公有仓库和私有仓库两种,例如Docker Hub就属于公有仓库,公有仓库的优势是能够直接使用,无须本身维护。但考虑到访问效率和镜像安全等方面的缘由,企业可构建本身内部的私有仓库,供内部员工上传、下载镜像使用。
系统环境:docker
服务器 | 操做系统 | IP地址 | 已安装软件 |
---|---|---|---|
docker仓库主机 | Centos 7.5 64位 | 192.168.2.225 | docker-ce-18.06.1.ce |
docker主机 | Centos 7.5 64位 | 192.168.2.226 | docker-ce-18.06.1.ce |
一、下载registry镜像docker pull registry
二、建立容器并运行apache
docker run -itd -p 192.168.2.225:5000:5000 -v /data/docker/registry:/var/lib/registry --restart=always --name registry registry:latest
参数说明:
-itd:开启交互模式,分配一个伪终端,之后台方式运行
-p:把容器的5000端口映射到宿主机指定IP的5000端口上
-v:把容器的/var/lib/registry目录映射到宿主机的/data/docker/registry目录,/var/lib/registry是容器中存放镜像文件的目录,来实现数据的持久化
--restart=always:重启策略,容器异常退出会自动重启容器
--name:指定容器的名称为registry
三、查看仓库中的镜像curl http://192.168.2.225:5000/v2/_catalog
由于才刚运行,还未上传任何镜像,因此是空的json
一、将以前建立好的镜像打个标签
注:centos/httpd:test是我上一篇博文里制做的镜像,http://www.javashuo.com/article/p-hqpgquik-bu.htmldocker tag centos/httpd:test 192.168.2.225:5000/httpd-test:v1
参数说明:
tag:标记本地镜像,将其归于某一个仓库
centos/httpd:test是源镜像和标记信息
192.168.2.225:5000/httpd-test:v1是目标镜像,包含私有仓库的IP和端口
二、修改配置文件,添加私有仓库地址vim /etc/docker/daemon.json
vim
{ "registry-mirrors": ["https://registry.docker-cn.com"], "graph": "/data/docker", "insecure-registries": ["192.168.2.225:5000"] }
三、重启docker服务systemctl restart docker
四、将镜像上传到私有仓库docker push 192.168.2.225:5000/httpd-test:v1
五、查看私有仓库中的镜像
查看全部镜像curl http://192.168.2.225:5000/v2/_catalog
查看httpd-test镜像有哪些tagscurl http://192.168.2.225:5000/v2/httpd-test/tags/list
六、将本地镜像打包成tar文件,保存到/tmp/目录下docker save -o /tmp/httpd-test-v3.tar 192.168.2.225:5000/httpd-test
参数说明:
save:将指定镜像保存成tar归档文件
-o:目标文件,可以使用绝对路径和相对路径
七、删除已经打过包的本地镜像docker rmi -f 192.168.2.225:5000/httpd-test:v1 centos/httpd:test
八、从私有仓库下载httpd-test镜像docker pull 192.168.2.225:5000/httpd-test:v1
九、建立并启动容器centos
docker run -itd --privileged --restart=always --name httpd_test -p 80:80 192.168.2.225:5000/httpd-test:v1 /usr/sbin/init
注:具体参数使用请参考个人上一篇部署博文https://blog.51cto.com/andyxu/2174652
十、经过浏览器访问http://192.168.2.226
能正常访问到apache主页,OK浏览器