base镜像
1、不依赖其他镜像,从 scratch 构建。
2、其他镜像可以之为基础进行扩展
能称作 base 镜像的通常都是各种 Linux 发行版的 Docker 镜像,比如 Ubuntu, Debian, CentOS 等,提供最小安装的 Linux 发行版。不同Linux发现版的Docker镜像共用Docker Host 的kernel(bootfs),加载不同的rootfs。
镜像分层结构
镜像可以从头创建scratch,也可以在其他镜像基础上创建扩展,Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的。
例如如下Dorkerfile:
FROM ubuntu //新镜像不再是从scratch开始,而是直接在ubuntu上构建
RUN apt-get install apache2 //安装apache2
CMD ["/bin、bash"] //容器启动时运行bash
新镜像是从 base 镜像一层一层叠加生成的。每安装一个软件,就在现有镜像的基础上增加一层。容器运行的时候采用Copy-on-Write机制,一层一层向下查找文件,找到后加装到容器层,容器层是加载到镜像的顶部,可写的一层,容器层之下的都是镜像层,容器层可写,镜像层只读。
构建镜像
Docker 提供了两种构建镜像的方法:docker commit 命令、Dockerfile 构建文件
docker commit 命令是创建新镜像最直观的方法,其过程包含三个步骤:
1、运行容器
2、修改容器
3、将容器保存为新的镜像
docker ps //查看运行的容器
docker commit naughty_goldwasser centos-with-vi //将容器名称为naughty_goldwasser的容器创建一个镜像名为centos-with-vi的镜像。
Dockerfile 构建镜像
Dockerfile 是一个文本文件,记录了镜像构建的所有步骤。
Dockerfile 内容:
执行创建命令
docker build -t centos-with-vi-dockerfile .
镜像列表:
问题
1、attach进入一个base镜像容器,执行ls、date等命令无响应,
2、应用针对不用环境有不同的配置文件,镜像分层结构正好可以用于配置文件覆盖打包成镜像?