Docker|Docker 入门私人笔记(六)使用 Dockerfile 自动构建镜像
1. 什么是 dockerfile ?
Dockerfile 是一个用来实现自动构建镜像的文本文件,它包含一些固定的参数,当定义好参数的值,就可以使用它自动构建你想要的镜像。
包含四要素:
- 基础镜像信息
- 维护者信息
- 镜像操作指令
- 容器启动时执行指令
- FROM
准备基于哪个镜像构建新镜像 - MAINTAINER
镜像维护者信息,例如姓名或邮箱 - RUN
构建镜像时运行的指令 - VOLUME
指定容器挂载点 - USER
为RUN、CMD、和 ENTRYPOINT 执行命令指定运行用户 - WORKDIR
设置 dockerfile 的工作目录,dockerfile 定义的指令都基于这个目录工作,默认为 dockerfile 所在的路径 - HEALTHCHECH
健康检查 - ARG
构建镜像时自定义的一些参数 - EXPOSE
声明容器对外的服务端口 - ENV
设置容器的环境变量 - ADD
从宿主机拷贝文件或目录到容器中,如果是URL或压缩包便会自动下载或自动解压 - COPY
从宿主机拷贝文件或目录到容器中,类似ADD,但无法自动下载或解压的功能 - ENTRYPOINT
运行容器时执行的shell命令 - CMD
容器启动后要干的事情
mkdir /data/dockerfile/mynginx
2.2 编辑 dockerfile
如下示例中的操作,是使用 centos 作为基础镜像,在系统内用 yum 的方式安装 nginx。使用该镜像运行的容器,启动之后直接运行 nginx。
编辑 dockerfile,使用命令:vim Dockerfile
注意:首字母 D 大写是硬性规矩,必须遵守!
Dockerfile 文件内容如下:
#Base Image 指定基础镜像。一个dockerfile 的第一个指令必须是 FROM!
FROM centos#Maintainer 镜像维护者的信息:关键字 MAINTAINER [维护者姓名] [维护者邮箱]
MAINTAINER lu 13510182959@126.com#RUN 想让该镜像做什么
#RUN 后面跟的是制作容器镜像时运行的命令
#ADD 后面分别跟两个参数,宿主机文件和镜像中的文件。即从宿主机复制一个文件到镜像中。本示例中给出的 “/usr/share/nginx/html/index.html” 是 yum 方式安装 nginx 的 index 默认路径。
#EXPOSE 是容器对外的端口
#CMD 是使用该镜像启动的容器要运行的命令
RUN rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
RUN yum install -y nginx --enablerepo=epel
RUN yum clean all
RUN echo "daemon off;
" >> /etc/nginx/nginx.conf
ADD index.html /usr/share/nginx/html/index.html
EXPOSE 80
CMD ["nginx"]
文章图片
3. 使用 Dockerfile 构建一个镜像
docker build -t mynginx:v2 .
命令解释:
- -t 是打标签。
- 命令最后面的点 . 是指要在当前目录下找 Dockerfile。
文章图片
4. 使用新构建的镜像启动一个容器
docker run -d -p 99:80 --name mynginx-auto mynginx:v2
【Docker|Docker 入门私人笔记(六)使用 Dockerfile 自动构建镜像】docker 创建成功后访问宿主机 99 端口,页面如果显示“nginx in docker”则说明前面的操作均正确。
文章图片
推荐阅读
- 『现学现忘』Docker基础|『现学现忘』Docker基础 — 11、Docker安装的问题补充
- 一篇文章带你Java多线程入门
- KafKa|Kafka快速入门(1)
- Vue新的状态管理库Pinia入门教程
- Spring Boot项目微信云托管入门部署
- Spring|Spring Boot项目微信云托管入门部署
- c语言|C语言入门——取余运算
- 云效快速入门指南
- Java基础入门总结之序列化和反序列化
- Java开发热门框架【SpringBoot】初学入门教程