Registry(remote image)
image (local image)
查看、详情、备份(本地|服务器)、tag、rm、load or import from BankUp
Container
create container rely on image
镜像创建
通过镜像的提交 docker commit
将容器打包成一个镜像 可以把容器中的数据也打包到镜像中 流程
- 下载镜像ubuntu:19.04(基础镜像)
- 使用该镜像创建一个容器 (R+W) (apt-get update | 更新软件 | 其他操作)
- exit 退出容器
- docker commit 来提交容器的副本 (docker commit -m=”new version” -a=”author” [container_id] [image_name]/ubuntu:new)
千层饼结构-如何把多个镜像层统筹成一个可以运行的容器—联合挂载—对内:可把多个目录挂载到同一个目录上(甚至可以对应不同的文件技术)—对外:显示这些目录的整合(联合)形态 docker中使用的这样的文件系统—AUFS-AnotherUnionFileSystem
通过镜像的构建
根据自己的需求,自定义一个镜像,通过dockfile文件 centOs — docker build 其他定制化的操作系统—几十兆 DockerFile — 指令
docker file 指令
- from 基础镜像的来源
- run 在镜像中执行了什么命令
- MAINTAINER
- CMD
- ENV
- EXPOSE
- WORKDIR
- VOLUME
- USER
- ADD
- COPY
- ONBUILD
Docker Build 实战
- 编写docker file 文件
- 使用docker build开始构建
docker build -f dockerfile -t test/custom_centos:v1.
- 使用Docker run创建运行容器
- docker history test/custom_centos:v1. 查看构建的历史
- docker run -it test/custom_centos:v1. 使用刚才创建的镜像创建容器 观察工作目录是否是指定的目录
# 通过DockerFile自定义CentOs系统镜像# 在home目录下创建一个dockerfile# vim dockerfile# 从哪一个基础镜像构建FROM centos# 定义作者的信息MAINTAINER '1907'# 定义一个变量ENV newpath /tmp# 设置登录后的工作路径WORKDIR $newpath# 干了什么?执行要的操作,RUN yum install -y vimRUN yum install -y net-tools## 如果有更多的需求接着RUN# 开放指定的端口 ports,尽量少,安全# EXPOSE 80# EXPOSE 22## 执行命令CMD echo $newpathCMD echo "seccess......OK"CMD /bin/bash
分层构建

镜像的结构 分层存储(数据+元数据)
数据—layer层—4个layer层
元数据—json文件
image的文件分层存储,是只读的。
通过docker inspect 查看镜像的详情,(json格式进行描述)
有趣的形容为千层饼结构
在容器内部执行 sudo apt-get update 相当于执行了一个更新镜像的操作
