Docker - Dockerfile Customize Image

镜像的定制实际上就是定制每一层所添加的配置、文件。Dockerfile是一个文本文件,其内包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

基本命令

例子:

1
2
FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html

这里只介绍两个最基本的,还有很多,用到的时候再学习。

From

指定基础image,在其上进行定制,必须要有且是第一条指令。

Run

是用来执行命令行命令的。主要有两种格式:

  • Shell
    RUN <命令>,就像直接在命令行中输入的命令一样。
  • Exec
    RUN ["可执行文件", "参数1", "参数2"],这更像是函数调用中的格式。

Union FS 是有最大层数限制的,所以别用太多Run命令建很多层,如果有多条命令要执行,使用 && 将各个所需命令串联起来。
Dockerfile 支持 Shell 类的行尾添加 \ 的命令换行方式,以及行首 # 进行注释的格式。

到此,要定制的内容就完成了,下面就是构建了。

构建

用 docker build 命令来构建镜像。

例子:

1
2
3
4
5
6
7
8
9
10
docker@default:~/myngix$ docker build -t nginx:v5 .
Sending build context to Docker daemon 2.048kB
Step 1/2 : FROM nginx
---> 9e7424e5dbae
Step 2/2 : RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
---> Running in 0f77e86fba64
---> d725428dfdad
Removing intermediate container 0f77e86fba64
Successfully built d725428dfdad
Successfully tagged nginx:v5

1
2
3
4
docker@default:~/myngix$ docker image ls -a
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx v5 d725428dfdad 16 seconds ago 108MB
nginx latest 9e7424e5dbae 2 weeks ago 108MB
唐胡璐 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
分享创造价值,您的支持将鼓励我继续前行!