Doker: 基于 Dockerfile 构建新镜像
Doker: 基于 Dockerfile 构建新镜像
概述
Docker 官方并不推荐使用 docker commit 的方法来构建镜像,而是推荐使用 Dockerfile 定义的文件和 docker build 命令来构建镜像。Dockerfile 使用基于 DSL 语法的指令来构建一个 Docker 镜像,之后使用 docker build命令基于改 Dockerfile 中的指令构建一个新的镜像。
1. 创建 Dockerfile
cd /d/vm/
mkdir website
cd website
touch Dockerfile
Dockerfile 内容:
# Version: 0.0.1
FROM ubuntu:latest
MAINTAINER Allan Ma
RUN apt-get update
RUN apt-get install -y nginx
RUN echo 'Hi, I am in your container' \
>/usr/share/nginx/html/index.html
EXPOSE 80
Dockerfile 由一系列指令和参数组成。每条指令,如 FROM,都必须为大写字母,且后面跟随一个参数:FROM ubuntu:latest。Dockerfile 中的指令会按顺序从上到下执行,所以应该根据需要合理安排指令的顺序。
每条指令都会创建一个新的镜像层并对镜像进行提交。Docker 大体上按照如下流程执行 Dockerfile 中的指令:
- Docker 从基础镜像运行一个容器;
- 执行一条指令,对容器做出修改;
- 执行类似 docker commit 的操作,提交一个新的镜像层;
- Docker 再基于刚提交的镜像运行一个新容器;
- 执行 Dockerfile 中的下一条指令,直到所有指令都执行完毕。
如果你的 Dockerfile 由于某些原因(如,某条指令失败了)没有正常结束,那么你将得到一个可以使用的镜像。这对调试非常由帮助:可以基于改镜像运行一个具备交互功能的容器,使用最后创建的镜像对为什么你的指令会失败进行调试。
2. 创建镜像流程
docker build -t=“allan01/website” .
Dockerfile 文件因为路径不对报错
进入生成的 < none > 镜像,查看路径,然后修改 Dockerfile 指令并保存
docker run -it 8804a8d010db bash
再次执行 docker build,成功创建新镜像
查看 index.html 文件