DockerFile定制镜像

一、Dockerfile概述

Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

简单理解就是:通过编写Dockerfile文件来实现特殊镜像的构建

1.简单的定制Nginx例子

1.创建Dockerfile文件

$ mkdir mynginx
$ cd mynginx
$ touch Dockerfile

2.编写Dockerfile

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

2.构建镜像(build)

执行样例

$ docker build -t nginx:v3 .
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM nginx
 ---> e43d811ce2f4
Step 2 : RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
 ---> Running in 9cdc27646c7b
 ---> 44aa4490ce2c
Removing intermediate container 9cdc27646c7b
Successfully built 44aa4490ce2c

这里我们使用了 docker build 命令进行镜像构建。其格式为:

docker build [选项] <上下文路径/URL/->

在这里我们指定了最终镜像的名称 -t nginx:v3,构建成功后,我们可以使用docker run来运行镜像

1.镜像构建上下文Context含义(.)

上下文就是从宿主机打包到Docker Server中的文件空间。默认用"."就是代表当前目录的上下文上传到dockerServer中。
上下文含义

二、Dockerfile指令

FROM 引用

RUN 执行命令

COPY 复制文件

ADD 复制并解压文件(过时)

CMD 容器启动命令(执行脚本)

一般使用ENTRYPOINT 因为CMD默认执行使用一次,如果是多个,默认最后一个生效

ENTRYPOINT 入口点(执行脚本)

目的和CMD一样,同样只能使用一次。
一般解决方案是通过外部传入一个脚本,用ENTRYPOINT来执行脚本。

ENV 设置环境变量

定义容器内可用的环境变量值

EXPOSE 暴露端口

如果需要暴露多个端口的时候可以使用

WORKDIR 指定工作目录(和cd类似)

指定工作目录,意思就是已交互的方式进入容器后的当前目录可以用此命令指定.

ARG 构建参数

VOLUME 定义匿名卷

USER 指定当前用户

HEALTHCHECK 健康检查

ONBUILD 为他人做嫁衣


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 18846433665@163.com

文章标题:DockerFile定制镜像

文章字数:537

本文作者:Xu Shengcai

发布时间:2019-10-10, 16:14:25

最后更新:2019-10-10, 16:54:55

原始链接:http://yoursite.com/2019/10/10/DockerFile定制镜像/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏