Docker 镜像制作

本文将介绍 Docker 中镜像的制作方法。

一、Dockerfile

1. 什么是 Dockerfile?

镜像通过 Dockerfile 制作,它是一个文本文件,其中应该包含一系列构建指令(例如选择基础镜像、拷贝文件等),Docker 顺序执行这些指令,最终创建出一个镜像。

2. 构建指令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# 指定基础镜像
FROM XXXXX

# 描述维护者信息
MAINTAINER codewld

# 指定进程执行者
USER root

# 指定工作目录
WORKDIR 目录

# 拷贝文件
COPY 宿主机路径 容器路径 # 简单拷贝文件
ADD 宿主机路径 容器路径 # 增强拷贝文件 【支持自动解压文件、下载远程文件并拷贝】

# 定义构建参数/环境变量
ARG IMAGE_TAG="alpine" # 构建参数,在镜像构建时可见
ENV DEBUG=OFF # 环境变量,在镜像构建时、容器运行时可见

# 执行命令
RUN apt-get update \
&& apt-get install -y build-essential curl make unzip \
&& cd /tmp \
&& curl -fSL xxx.tar.gz -o xxx.tar.gz \
&& tar xzf xxx.tar.gz \
&& cd xxx \
&& ./config \
&& make \
&& make clean

# 执行脚本中的命令
COPY setup.sh /tmp/ # 拷贝脚本
RUN cd /tmp \
&& chmod +x setup.sh \ # 添加权限
&& ./setup.sh \ # 运行脚本
&& rm setup.sh # 删除脚本

# 指定容器启动时的默认运行命令;容易被替换
CMD echo "hello world"

# 指定容器启动时的主执行命令;不容易被替换;会将其它运行命令作为其参数
ENTRYPOINT echo "hello world"

# 声明暴露的端口
EXPOSE 443

3. 镜像构建

1
docker build -t 镜像名:镜像Tag 构建目录

需要注意的是:

  • 构建目录为 Dockerfile 所在的路径

    若为当前路径,可以简化为 .

参考