一 docker仓库和镜像tag
A. docker仓库分类
docker镜像是需要放到一个统一的仓库的,以便不同的主机可以下载和使用相同的镜像而不必每次都用dockerfile自己做,docker镜像仓库按如下方式划分
公共仓库
私有仓库
官方命令行仓库:registry
第三方web仓库:harbor
B. docker镜像tag命名规范
在基础知识部分,介绍了标准镜像名由四部分组成: 仓库地址/项目名/镜像名:标签 ,如 daocloud.io/library/nginx:latest
一个高效的版本命名方案可以让用户清楚地知道当前使用的是哪个镜像,同时还可以保持足够的灵活性。
每个镜像可以有多个 tag,而多个 tag 可能对应的是同一个镜像。下面介绍 Docker 社区普遍使用的 tag 方案。
初始版本v1.9.1
镜像名为myimage,当前需要的版本为 v1.9.1。那么可以给镜像打上四个 tag:1、1.9、1.9.1和 latest。
1 2 3 4 docker tag myimage-v1.9.1 myimage:1 docker tag myimage-v1.9.1 myimage:1.9 docker tag myimage-v1.9.1 myimage:1.9.1 docker tag myimage-v1.9.1 myimage:latest
小版本更新v1.9.2
过了一段时间,发布了 v1.9.2。这时可以打上 1.9.2 的 tag,并将1、1.9和 latest 从 v1.9.1 移到 v1.9.2。
1 2 3 4 docker tag myimage-v1.9.2 myimage:1 docker tag myimage-v1.9.2 myimage:1.9 docker tag myimage-v1.9.2 myimage:1.9.2 docker tag myimage-v1.9.2 myimage:latest
大版本更新
之后,v2.0.1 发布了。这时可以打上2、2.0、2.0.1的tag,并将 latest 移到 v2.0.1。
1 2 3 4 docker tag myimage-v2.0.1 myimage:2 docker tag myimage-v2.0.1 myimage:2.0 docker tag myimage-v2.0.1 myimage:2.0.1 docker tag myimage-v2.0.1 myimage:latest
tag方法有点总结
myimage:1 始终指向 1 这个分支中最新的镜像。
myimage:1.9 始终指向 1.9.x 中最新的镜像。
myimage:latest 始终指向所有版本中最新的镜像。
如果想使用特定版本,可以选择 myimage:1.9.1、myimage:1.9.2 或 myimage:2.0.1。
Docker Hub 上很多 repository 都采用这种方案,要熟练使用。
二 公共仓库docker hub
docker hub是docker官方提供的的公共镜像仓库,类似于代码仓库github,需要注册.
官方地址:https://hub.docker.com/
本人账号:luoxiaogang
账号密码:隐藏
私有仓库:c7-nginx
A. 修改镜像名
修改镜像名,使其符合docker hub命名规范
1 2 3 4 docker image tag c7-nginx:v2 luoxiaogang/c7-nginx:v2 [root@docker01 ~] REPOSITORY TAG IMAGE ID CREATED SIZE luoxiaogang/c7-nginx v2 669691018aa6 5 days ago 789MB
B. 登录docker hub
1 2 3 4 [root@docker01 ~] Password: ...... Login Succeeded
C. 推送镜像
1 2 3 4 5 6 7 8 9 10 [root@docker01 ~] The push refers to repository [docker.io/luoxiaogang/c7-nginx] fd2fdb015cf0: Pushed 7912ce70bbc0: Pushed 2de8d3b18deb: Pushed f903e5a29540: Pushed 228f6119c990: Pushed 54470def7538: Pushed d69483a6face: Pushed v2: digest: sha256:12843dfd....6 size: 1782
三 私有仓库(命令行)
A. 公共操作-添加信任仓库
需要添加信任的原因是docker默认需要使用https的安全连接来下载镜像,而我们自己搭建的环境只有http,所以需要信任该地址.
1 2 3 4 5 6 vi /etc/docker/daemon.json { "registry-mirrors" : ["https://registry.docker-cn.com" ], "insecure-registries" : ["10.0.0.11:5000" ,"10.0.0.11:5001" ] } systemctl restart docker
B. 无密码认证的私有仓库
运行docker仓库
1 docker run -d -p 5000:5000 --restart=always -v /opt/myregistry:/var/lib/registry registry
修改tag并推送
1 2 docker image tag c7-nginx:v2 10.0.0.11:5000/c7-nginx:v2 docker push 10.0.0.11:5000/c7-nginx
C. 带密码认证的私有仓库
base认证密码文件准备
1 2 3 yum install httpd-tools -y mkdir /opt/registry-var/auth/ -phtpasswd -Bbn luogang 123456 >> /opt/registry-var/auth/htpasswd
启动docker私有仓库
1 2 3 4 5 6 docker run -d -p 5001:5000 -v /opt/registry-var/auth/:/auth/ \ -v /opt/myregistry:/var/lib/registry \ -e "REGISTRY_AUTH=htpasswd" \ -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \ -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \ registry
登录docker仓库
1 docker login 10.0.0.11:5001 -u luogang
修改tag并推送
1 2 docker image tag c7-nginx:v2 10.0.0.11:5001/c7-nginx:v2 docker push 10.0.0.11:5001/c7-nginx
四 私有仓库(harbor)
企业级私有仓库harbor需要用到docker的单机编排工具docker-compose,所以这里仅列出步骤,等学过后便的docker-compose工具后,在单独写harbor的部署
安装docker和docker-compose
下载harbor
修改harbor.cfg配置文件
执行安装脚本
参考链接:https://www.cnblogs.com/pangguoping/p/7650014.html