使用Dockerfiel定制镜像文件及优化

本文介绍了Dockerfile的概念,详细阐述了如何使用Dockerfile定制和优化镜像,包括创建nginx镜像的步骤以及如何通过丢入/dev/null、减少RUN指令和多阶段构建来提升效率。
摘要由CSDN通过智能技术生成

一、什么是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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值