docker_提交、保存加载、导入导出
保存在容器中安装的内容. 导入镜像, 导出镜像
提交
在进入容器内后修改一些东西后安装某些工具后,保存以便下次 run 镜像是不用再次做同样的操作,这里假设已有一个镜像 my-python-base, 这个镜像是基于 ubuntu:16.04 构建的,构建时只装了python 库,没有vim库
运行这个镜像后进入容器内使用vim命令
1
2
3
4
5
6
7
8
9wilker@ubuntu:~/Desktop/test_docker$ docker run -i -t my-python-base /bin/bash
root@6851e61bbf29:/app# cd
root@6851e61bbf29:~# vi
bash: vi: command not found # 报了没有找到vi命令
root@6851e61bbf29:~# apt install vim # 直接安装有报错,执行第2步
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package vim安装一下 vim,陆续执行一下命令,就安装成功
1
2
3
4
5root@6851e61bbf29:~# apt-get update
root@6851e61bbf29:~# apt-get install apt-file
root@6851e61bbf29:~# apt-file update
root@6851e61bbf29:~# apt-get install vim
root@6851e61bbf29:~# vi test.lua # 测试一下,ok退出容器
1
2root@6851e61bbf29:~# exit
exit提交 id 为 6851e61bbf29 的容器,生成镜像 my-python-vim
1
2
3
4
5
6
7wilker@ubuntu:~/Desktop/test_docker$ docker commit 6851e61bbf29 my-python-vim # 提交生成镜像
sha256:5e96806e09fdd8f54aad4c009ea5489c182dd5b6674138476f4c4ad5ddedb5ae
wilker@ubuntu:~/Desktop/test_docker$ docker images # 查看所有镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
my-python-vim latest 5e96806e09fd 12 seconds ago 557MB # 大了好多m
my-python-base latest 989afb411fcb 2 hours ago 386MBrun 一下 镜像 my-python-vim ,并使用 vi 命令看是否保存成功
1
2
3
4
5wilker@ubuntu:~/Desktop/test_docker$ docker run -i -t my-python-vim /bin/bash
root@813cfa249508:/app# cd
root@813cfa249508:~# ls # 之前生成的测试文件也是存在的
test.lua
root@813cfa249508:~# vi test.lua # vi 命令也正常使用, ok
save、load 和 export、import 的区别
save/load
导出 镜像. save、load,不会丢失 提交信息 layers
1
2
3wilker@ubuntu:~$ docker save mysql > ~/Desktop/mysql.tar # 导出
wilker@ubuntu:~$ docker load < ~/Desktop/mysql.tar # 导入
Loaded image: mysql:latestexport、import,会丢失 提交信息 layers,导出包体会小那么一点点
参考资料
export/import
导出 实例
1
2docker export furious_bell > /home/myubuntu-export-1204.tar
docker import /home/myubuntu-export-1204.tar my/ubuntu1804:0.1查看一下导入进来的
1
2
3$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
my/ubuntu1804 0.1 ad91361b3e23 6 seconds ago 409MB
镜像 pull、push
- pull docker hub 上面一些大家常用的镜像,如果做了加速处理,那么速度还是可以的,但是 pull 自己 push 上去的镜像,速度一般都是龟速。猜测是没有cdn缓存
- 同样,push 自己的镜像到 docker hub 也是龟速,push 到第三方仓库(如:daocloud.io),要收费。
- 基于以上两点,做一个自己私人镜像仓库就很有必要了,参考docker_自建私有仓库.md
查看镜像提交历史
$ docker images –tree
已经被废弃,现在使用$ docker history image_id
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16wilker@ubuntu:~/Desktop/test_docker$ docker history my-python-vim
IMAGE CREATED CREATED BY SIZE COMMENT
5e96806e09fd 10 hours ago /bin/bash 171MB
989afb411fcb 12 hours ago /bin/sh -c #(nop) CMD ["bash"] 0B
0e6f9e346436 12 hours ago /bin/sh -c #(nop) EXPOSE 80/tcp 0B
fdc6ffd55f16 12 hours ago /bin/sh -c #(nop) WORKDIR /app 0B
3ef90a443672 12 hours ago /bin/sh -c mkdir -p /app 0B
3202ed14a283 12 hours ago /bin/sh -c apt-get update && apt-get... 267MB
d82706247032 12 hours ago /bin/sh -c echo "deb http://mirrors.163.co... 873B
dbb5ca2cb734 13 hours ago /bin/sh -c #(nop) MAINTAINER Wilker <3641... 0B
d355ed3537e9 11 days ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
<missing> 11 days ago /bin/sh -c mkdir -p /run/systemd && echo '... 7B
<missing> 11 days ago /bin/sh -c sed -i 's/^#\s*\(deb.*universe\... 2.76kB
<missing> 11 days ago /bin/sh -c rm -rf /var/lib/apt/lists/* 0B
<missing> 11 days ago /bin/sh -c set -xe && echo '#!/bin/sh' >... 745B
<missing> 11 days ago /bin/sh -c #(nop) ADD file:c251a21fbe3a651... 119MB