Registry(remote image)

管理image

image (local image)

查看、详情、备份(本地|服务器)、tag、rm、load or import from BankUp

Container

create container rely on image
image.png

镜像创建

  1. 通过镜像的提交 docker commit

    将容器打包成一个镜像 可以把容器中的数据也打包到镜像中 流程

    1. 下载镜像ubuntu:19.04(基础镜像)
    2. 使用该镜像创建一个容器 (R+W) (apt-get update | 更新软件 | 其他操作)
    3. exit 退出容器
    4. docker commit 来提交容器的副本 (docker commit -m=”new version” -a=”author” [container_id] [image_name]/ubuntu:new)

    千层饼结构-如何把多个镜像层统筹成一个可以运行的容器—联合挂载—对内:可把多个目录挂载到同一个目录上(甚至可以对应不同的文件技术)—对外:显示这些目录的整合(联合)形态 docker中使用的这样的文件系统—AUFS-AnotherUnionFileSystem

  2. 通过镜像的构建

    根据自己的需求,自定义一个镜像,通过dockfile文件 centOs — docker build 其他定制化的操作系统—几十兆 DockerFile — 指令

  3. docker file 指令

    1. from 基础镜像的来源
    2. run 在镜像中执行了什么命令
    3. MAINTAINER
    4. CMD
    5. ENV
    6. EXPOSE
    7. WORKDIR
    8. VOLUME
    9. USER
    10. ADD
    11. COPY
    12. ONBUILD

    Docker Build 实战

    1. 编写docker file 文件
    2. 使用docker build开始构建

    docker build -f dockerfile -t test/custom_centos:v1.

    1. 使用Docker run创建运行容器
    2. docker history test/custom_centos:v1. 查看构建的历史
    3. docker run -it test/custom_centos:v1. 使用刚才创建的镜像创建容器 观察工作目录是否是指定的目录
  1. # 通过DockerFile自定义CentOs系统镜像
  2. # 在home目录下创建一个dockerfile
  3. # vim dockerfile
  4. # 从哪一个基础镜像构建
  5. FROM centos
  6. # 定义作者的信息
  7. MAINTAINER '1907'
  8. # 定义一个变量
  9. ENV newpath /tmp
  10. # 设置登录后的工作路径
  11. WORKDIR $newpath
  12. # 干了什么?执行要的操作,
  13. RUN yum install -y vim
  14. RUN yum install -y net-tools
  15. ## 如果有更多的需求接着RUN
  16. # 开放指定的端口 ports,尽量少,安全
  17. # EXPOSE 80
  18. # EXPOSE 22
  19. ## 执行命令
  20. CMD echo $newpath
  21. CMD echo "seccess......OK"
  22. CMD /bin/bash

分层构建

image.png

镜像的结构 分层存储(数据+元数据)

数据—layer层—4个layer层
元数据—json文件
image的文件分层存储,是只读的。

通过docker inspect 查看镜像的详情,(json格式进行描述)
有趣的形容为千层饼结构
在容器内部执行 sudo apt-get update 相当于执行了一个更新镜像的操作