文章目录
一、什么是Dockerfile
Dockerfile 是一个用来构建镜像的文本文件,文本中包含了一条条构建镜像所需的指令和说明。
二、Dockerfile 操作指令
| 指令 | 说明 |
|---|---|
| FROM 镜像 | 指定创建的镜像所基于的镜像,第一条指令必须是FROM指令,每创建一个镜像就需要一条FROM指令。 |
| MAINTAINER 名字 | 说名镜像的维护人信息。 |
| RUN命令 | 在所基于的镜像上执行命令,并提交到新的镜像中。 |
| CMD[“要运行的程序”,“参数1”,“参数2”] | 指定启动容器是要运行的命令或者脚本,dockerfile中只能有一条CMD命令,如果指定多条则只有最后一条生效。 |
| EXPOSE 端口号 | 指定镜像加载到docker时要开启的端口 |
| ENV 环境变量 变量值 | 设置一个环境变量的值,会被后面的RUN使用 |
| ADD 源文件/目录 目标文件/目录 | 将源文件复制到目标文件,源文件要与Dockerfile位于相同目录中,或者是一个URL。如果源文件是压缩包,ADD还会执行解压缩的功能 |
| COPY 源文件/目录 目标文件/目录 | 将本地主机上的文件/目录复制到目标目录,源文件要与Dockerfile位于相同目录中 |
| VOLUME [“目录”] | 在容器中创建一个挂载点 |
| USER 用户名/UID | 指定运行容器时的用户 |
| WORKDIR 路径 | 为后续的RUN CMD ENTRYPOINT指定工作目录 |
| ONBUILD 命令 | 指定所生成的镜像作为一个基础镜像时所要运行的命令 |
| HEALTHCHECK | 健康检查 |
三、使用 Dockerfile 定制镜像
以nginx为例演示
3.1 创建nginx目录,并上传nginx压缩包
[root@docker ~]# mkdir nginx
[root@docker ~]# cd nginx
[root@docker nginx]# ls
nginx-1.15.9.tar.gz
[root@docker nginx]#
3.2 创建Dockerfile
vim Dockerfile
FROM centos:7
RUN yum install -y gcc pcre pcre-devel devel zlib-devel make
ADD nginx-1.15.9.tar.gz /mnt
WORKDIR /mnt/nginx-1.15.9
RUN sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc //关闭debug日志
RUN ./configure --prefix=/usr/local/nginx
RUN make
RUN make install
EXPOSE 80
VOLUME ["/usr/local/nginx/html"]
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]
3.3 基于Dockerfile文件构建镜像,并查看镜像大小
[root@docker nginx]# docker build -t "nginx:v1" .
Sending build context to Docker daemon 1.035MB
Step 1/11 : FROM centos:7
7: Pulling from library/centos
2d473b07cdd5: Pull complete
Digest: sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e
Status: Downloaded newer image for centos:7
---> 8652b9f0cb4c
Step 2/11 : RUN yum install -y gcc pcre pcre-devel devel zlib-devel make
---> Running in b43f12278ea7
Loaded plugins: fastestmirror, ovl
Determining fastest mirrors
* base: mirrors.cn99.com
* extras: mirrors.ustc.edu.cn
* updates: mirrors.ustc.edu.cn
Package pcre-8.32-17.el7.x86_64 already installed and latest version
No package devel available.
Resolving Dependencies
--> Running transaction check
---> Package gcc.x86_64 0:4.8.5-44.el7 will be installed
--> Processing Dependency: libgomp = 4.8
本文介绍了Dockerfile的概念,详细阐述了如何使用Dockerfile定制和优化镜像,包括创建nginx镜像的步骤以及如何通过丢入/dev/null、减少RUN指令和多阶段构建来提升效率。
最低0.47元/天 解锁文章
494

被折叠的 条评论
为什么被折叠?



