本地准备好镜像
从上图可知,镜像的生成无非三种方式:
- 由dockerfile文件build
- 由容器commit
- 从远程仓库pull
这里准备push的镜像是之前安装了vim和telnet的centso镜像:
[root@izbp13m488196e5hna361rz ~]# docker images mycentos REPOSITORY TAG IMAGE ID CREATED SIZE mycentos 1.0 3b0cb5ffbc9f 4 weeks ago 281MB
在阿里云控制台创建镜像仓库
https://cr.console.aliyun.com/cn-shenzhen/instances/repositories
创建好镜像仓库之后,点进去就可以看到仓库的地址和相关操作指南:
按照操作指南将镜像推送到镜像仓库
1.登录
docker login --username=shuqiaona1991 registry.cn-shenzhen.aliyuncs.com
[root@izbp13m488196e5hna361rz ~]# docker login --username=shuqiaona1991 registry.cn-shenzhen.aliyuncs.com Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded
这里输入的密码是镜像仓库的密码,不是阿里云账号的密码
2.将镜像上传到私有注册中心之前,需要给镜像重命名
docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/nick0922/nick_centos:[镜像版本号]
[root@izbp13m488196e5hna361rz ~]# docker images mycentos REPOSITORY TAG IMAGE ID CREATED SIZE mycentos 1.0 3b0cb5ffbc9f 4 weeks ago 281MB [root@izbp13m488196e5hna361rz ~]# docker tag 3b0cb5ffbc9f registry.cn-shenzhen.aliyuncs.com/nick0922/nick_centos:1.0.0
注意,这里重命名后,两个镜像都会存在,且容器ID是同一个:
ps:docker tag 也常用于给镜像打标签,记录版本号:
[root@izbp13m488196e5hna361rz ~]# docker images son REPOSITORY TAG IMAGE ID CREATED SIZE son latest 9d087b204a81 2 weeks ago 241MB [root@izbp13m488196e5hna361rz ~]# docker tag son son:1.0 [root@izbp13m488196e5hna361rz ~]# docker tag son son:2.0 [root@izbp13m488196e5hna361rz ~]# docker images son REPOSITORY TAG IMAGE ID CREATED SIZE son 1.0 9d087b204a81 2 weeks ago 241MB son 2.0 9d087b204a81 2 weeks ago 241MB son latest 9d087b204a81 2 weeks ago 241MB
3.在本地将镜像推送
docker push registry.cn-shenzhen.aliyuncs.com/nick0922/nick_centos:[镜像版本号]
[root@izbp13m488196e5hna361rz ~]# docker push registry.cn-shenzhen.aliyuncs.com/nick0922/nick_centos:1.0.0 The push refers to repository [registry.cn-shenzhen.aliyuncs.com/nick0922/nick_centos] 3a2579d8936d: Pushed ba779d07444c: Pushed 2653d992f4ef: Pushed 1.0.0: digest: sha256:3392e34214e3d4ec02c5c8639652b6d4e1d7d96f0564012f8c57260e3806e742 size: 952
4.阿里云查看已推送镜像
在镜像中心 -- 镜像搜索 中通过镜像仓库或者命名空间搜索:
点进去查看详情,其中有对应的下载地址,方便pull提取:
5.将阿里云的新镜像提取到本地,运行容器验证
为了避免重复,先删除本地原有的:
[root@izbp13m488196e5hna361rz ~]# docker rmi -f registry.cn-shenzhen.aliyuncs.com/nick0922/nick_centos:1.0.0 Untagged: registry.cn-shenzhen.aliyuncs.com/nick0922/nick_centos:1.0.0 Untagged: registry.cn-shenzhen.aliyuncs.com/nick0922/nick_centos@sha256:3392e34214e3d4ec02c5c8639652b6d4e1d7d96f0564012f8c57260e3806e742
远程拉取镜像:
[root@izbp13m488196e5hna361rz ~]# docker pull registry.cn-shenzhen.aliyuncs.com/nick0922/nick_centos:1.0.0 1.0.0: Pulling from nick0922/nick_centos Digest: sha256:3392e34214e3d4ec02c5c8639652b6d4e1d7d96f0564012f8c57260e3806e742 Status: Downloaded newer image for registry.cn-shenzhen.aliyuncs.com/nick0922/nick_centos:1.0.0 registry.cn-shenzhen.aliyuncs.com/nick0922/nick_centos:1.0.0
根据registry.cn-shenzhen.aliyuncs.com/nick0922/nick_centos:1.0.0创建容器,并验证:
root@izbp13m488196e5hna361rz ~]# docker run -it registry.cn-shenzhen.aliyuncs.com/nick0922/nick_centos:1.0.0 [root@b5067d3f4abd local]# which vim /usr/bin/vim [root@b5067d3f4abd local]# which telnet /usr/bin/telnet
容器可以使用vim和telnet,验证成功。