获取镜像
[root@server78 opt]# pwd
/opt
[root@server78 opt]#wget http://download.openvz.org/template/precreated/centos-7-x86_64-minimal.tar.gz
导入
[user@server78 opt]$ cat ./centos-7-x86_64-minimal.tar.gz |docker import - centos7:minimal
[user@server78 opt]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos7 minimal da29a6779904 About a minute ago 435MB
更换容器的yum源
[root@2f332116e0da /]#mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak
[root@2f332116e0da /]#wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@2f332116e0da /]#yum makecache
[root@2f332116e0da /]#yum -y update
在容器中安装supervisor
[root@2f332116e0da /]# yum install epel-release
[root@2f332116e0da /]# yum install supervisor
现在将容器内容修改后提交到镜像,导出容器是指导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行状态,可以使用docker export 命令。
先查看下所有容器
[user@server78 ~]$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
43a6a7f4b4c0 centos7:minimal "/bin/bash" 22 minutes ago Up 22 minutes nifty_hodgkin
2f332116e0da centos7:minimal "/bin/bash" About an hour ago Exited (1) 24 minutes ago serene_gates
f6b4f52d74e7 centos7.2-ssh:1903 "/bin/bash" 19 hours ago Exited (0) 18 hours ago stupefied_boyd
导出容器
[user@server78 ~]$ docker export -o centos7_minimal_190314.tar 43a
[user@server78 ~]$ ls
centos7_minimal_190314.tar
导入容器, centos7_minimal_190314.tar可以使用 docker import 命令导入变成镜像
[user@server78 ~]$ docker import ./centos7_minimal_190314.tar centos7:minimal190314
[user@server78 ~]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos7 minimal190314 cf6233c7bb24 23 seconds ago 670MB
centos7 minimal da29a6779904 About an hour ago 435MB
再次运行生成的镜像
[user@server78 ~]$ docker run -it centos7:minimal190314 '/bin/bash'
查看yum源,修改的内容已经保存在镜像中了
在另外一个节点机上测试
[user@server81 ~]$ scp user@server78:/home/user/centos7_minimal_190314.tar .
[user@server81 ~]$ docker import centos7_minimal_190314.tar centos7:minimal190314
[user@server81 ~]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos7 minimal190314 8b0a07e6730d 15 seconds ago 670MB
[user@server81 ~]$ docker run -it centos7:minimal190314 /bin/bash
[root@d07767877f8a /]#
[root@d07767877f8a /]# cat /etc/yum.repos.d/CentOS-Base.repo
确实是已经修改过的CentOS-Base.repo
建议
可以依据具体使用场景来选择命令
若是只想备份images,使用save、load即可
若是在启动容器后,容器内容有变化,需要备份,则使用export、import
从容器中创建一个新的镜像
Docker commit 命令
Docker 命令大全Docker 命令大全
docker commit :从容器创建一个新的镜像。
语法
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
实例
将容器 86999be36110 保存为新的镜像,并添加提交人信息和说明信息。
[user@server78 ~]$ docker commit -a "dockeruser" -m "centos7-sshd" 86999be36110 centos7-sshd