很多时候,我们docker pull一个镜像之后,会对镜像做一些修改。比如,开启SSH连接等。但是,如果这个容器关闭之后,那么这个容器里面的东西就会丢失,恢复到初始状态。那此时就需要把这个修改过的镜像重新打包,然后推送到某个仓库。然后使用到的时候,再次把这个镜像拉取下来就可以了。下面介绍一下怎样把自己的docker镜像推送到阿里云镜像仓库。
一、创建本地镜像
1.1 下载基本镜像
作者下载的是阿里云的centos7镜像
$ sudo docker pull centos:centos7
1.2 用基本镜像启动容器
启动下载的基本镜像,方便在里面部署自己需要的服务,例如jdk、tomcat等
# 查看所有已经下载的镜像
$ sudo docker images
# 启动容器
$ sudo docker run -d 5e35e350aded /bin/sh -c "while true; do echo hello world; sleep 1; done"
# 或者用以下命令启动
$ sudo docker run --privileged -ti -d 5e35e350aded /usr/sbin/init
1.3 修改镜像
#进入上步启动的容器中
$ sudo docker exec -it 1da110c443fc /bin/bash
进入之后相当于一个全新的centos7系统,在里面可以安装自己需要的任何服务
1.4 重新打包修改后的镜像
$ sudo docker commit -a "Alan" -m "my image" 容器ID new-image:版本号
说明: -a :镜像的作者;-m:镜像的提交信息,容器Id是运行镜像之后得到的那个容器Id。
二、发布镜像到阿里云服务器
2.1 在阿里云服务器创建镜像
- 打开阿里云镜像管理中心
https://cr.console.aliyun.com
- 创建一个命名空间。
点击命名空间管理,然后点击右上角的创建命名空间。
- 创建镜像列表
填写仓库名称,摘要,设置代码源为本地仓库。最后点击创建镜像仓库即可。
- 推送镜像源
点击管理
按照提示即可把自己的镜像源推送到阿里云镜像仓库。
如果不知道或者忘记自己登陆docker的密码,可以点击下面的按钮镜像更改。
按照讲解中的步骤执行即可,如下:
#将镜像推送到Registry
$ sudo docker login --username=404206162@qq.com registry.cn-beijing.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-beijing.aliyuncs.com/topca/tomcat7_jdk7:[镜像版本号]
$ sudo docker push registry.cn-beijing.aliyuncs.com/topca/tomcat7_jdk7:[镜像版本号]