docker 镜像的导入和导出

获取镜像
[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

猜你喜欢

转载自blog.csdn.net/lepton126/article/details/88554749