docker_提交、保存加载、导入导出

保存在容器中安装的内容. 导入镜像, 导出镜像


提交

在进入容器内后修改一些东西后安装某些工具后,保存以便下次 run 镜像是不用再次做同样的操作,这里假设已有一个镜像 my-python-base, 这个镜像是基于 ubuntu:16.04 构建的,构建时只装了python 库,没有vim库

  1. 运行这个镜像后进入容器内使用vim命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    wilker@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
  2. 安装一下 vim,陆续执行一下命令,就安装成功

    1
    2
    3
    4
    5
    root@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
  3. 退出容器

    1
    2
    root@6851e61bbf29:~# exit
    exit
  4. 提交 id 为 6851e61bbf29 的容器,生成镜像 my-python-vim

    1
    2
    3
    4
    5
    6
    7
    wilker@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 386MB
  5. run 一下 镜像 my-python-vim ,并使用 vi 命令看是否保存成功

    1
    2
    3
    4
    5
    wilker@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

export/import

  • 导出 实例

    1
    2
    docker 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 images –tree 已经被废弃,现在使用 $ docker history image_id

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    wilker@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