介绍
Dockerfile 是创建docker 镜像的文本文件,通过一条条按顺序执行的指令,构建镜像,类似于 shell 脚本。
Dockerfile 指令
指令 | 指令说明 |
---|---|
FROM | 构建镜像依赖的基础镜像(FROM search表示从零开始构建 ) |
MAINTAINER | 设置镜像作者 |
RUN | 编译镜像时运行的脚本 |
CMD | 设置镜像启动命令(多个指令只会执行最后一个) |
LABEL | 设置镜像标签 |
EXPOSE | 镜像暴露的端口信息 |
ENV | 设置容器环境变量 |
ADD | 编译镜像时,添加文件到镜像(提前下载好,压缩包会自动解压) |
COPY | 编译镜像时复制文件到镜像中 |
ENTRYPOINT | 设置容器入口程序 |
VOLUME | 设置容器挂载卷 |
USER | 设置运行RUN CMD ENTRYPOINT 的用户名 |
WORKDIR | 设置容器默认的工作目录 |
cmd:指令会被docker run 指令替换,entrypoint 是拼接指令
CMD ls 可使用 docker run 容器id ll 替换
ENTRYPOINT ls 会与docker run -al 拼接使用
构建过程
任务
- 创建一个自定义 centos 镜像,安装 vim, ifconfig 指令(官网centos 没有这些命令),运行centos
- 使用自定义容器,创建一个新的镜像
- 创建Dockerfile 文件
FROM centos #基于centos 创建
MAINTAINER guanzc #配置作者
RUN -y yum install vim #创建时运行的脚本
RUN -y yum install net-tools
ENV MYPATH /usr/home #定义环境变量
WORKDIR $MYPATH #指定默认工作目录
EXPOSE 80 #暴露端口
CMD '/bin/bash'
指令按顺序执行,指令必须大写
- 执行命令
docker build -f dockerfile -t guan-centos:1.0 .
文件默认名称为 Dockerfile
,不是默认名称加 -f
构建成功
- 查看
docker images
- 过程查看
docker history e56e0c9de99b
每一指令都会生成一个新的镜像层
- 运行自定义镜像,创建容器
docker run -it --name centos-9527 guan-cneots:1.0
运行成功
- 使用容器创建一个镜像
docker commit -a 'guan custom cetos' \ # 作者
-m 'test dockerfile build images' \ # 信息
b34a34380c0b \
centos-8-001:1.0
总结
整个流程演示了,使用自定义Dockerfile构建自己镜像,使用自定义镜像创建容器并运行。再次使用容器创建一个新的镜像。镜像和容器可以相互转变