跟我一块儿学docker(八)--Dockerfile

1.利用Dockerfile建立镜像nginx

什么是Dockerfile?docker

定义:Dockerfile是一个文本格式的配置文件,用户能够使用Dockerfile快速建立自定义镜像。shell

基本结构:ubuntu

Dockerfile由一行行的命令语句组成。而且支持以#开头的注释行。通常Dockerfile分为四个部分:基础镜像信息、维护者信息、镜像操做指令和容器启动时的指令。工具

Dockerfile示例:学习

#This is a Dockerfileui

#Author:limingurl

#第一行必须指定基础镜像3d

FROM ubuntu调试

#维护者信息

MAINTAINER <394498036@qq.com>

#镜像的操做指令

RUN apt-get update

RUN apt-getinstall -y nginx

RUN echo “\ndaemonoff:” >> /etc/nginx/nginx.conf

#容器启动时的指令

CMD /usr/sbin/nginx

操做一下:

首先建立目录testDockerfile并进入


vi Dockerfile


建立命令:

docker build –t =“<镜像名称>”.

注意:执行此命令要和Dockerfile在同级目录,文件名称必须为Dockerfile。命令后面的”.”表示在当前目录下执行。


2.Dockerfile指令集

1 FROM


第一条指令必须为FROM指令,用于指定基础镜像。

2 MAINTAINER

格式为 MAINTAINER ,指定维护者信息。

3 RUN

格式为 RUN ,会在shell终端运行命令。

4 EXPOSE

格式为 EXPOSE [ ...],容器须要暴露的端口号。镜像启动能够经过 –P 或 -p 进行端口映射的绑定。

5 ENV

格式为 ENV 。

指定一个环境变量,能够被后续的RUN引用,而且在容器中记录该环境变量。

6 ADD

格式为 ADD 。

该命令将复制指定的到容器中的。其中能够是Dockerfile所在目录的一个相对路径;也能够是url,还能够是tar文件(自动解压)。

7 VOLUME

格式为 VOLUME [path]。

建立一个能够从本地主机或其余容器挂载点,通常用来存放须要保持的数据。

8 USER

格式为 USER 。

指定运行容器时的用户名,后续的RUN也会指定该用户。

9 WORKDIR

格式为 WORKDIR 。

指定工做空间,运行完WORKDIR后,后续执行的RUN、CMD、ENTRYPOINT都会在此目录下执行。

10 COPY

格式为 COPY 。

复制本地主机的到容器中的,目标路径不存在时,会自动建立。

当使用本地目录为源目录时,推荐使用COPY。

11 CMD

推荐格式为 CMD [“executable”,”param1”,”param2”] 。

做为ENTRYPOINT的默认参数为 CMD[”param1”,”param2”]。

指定容器的启动命令,每一个Dockerfile只能有一条CMD命令,若是指定多条,只有最后一条会执行。

用户启动容器时指定运行命令,会覆盖掉Dockerfile中的CMD命令。

12 ENTRYPOINT

格式为 ENTRYPOINT [“executable”,”param1”,”param2”]。

配置容器启动后的命令,可被docker run提供的--entrypoint参数覆盖。

每一个Dockerfile只能有一条ENTRYPOINT命令,若是指定多条,只有最后一条会执行。



3.容器内安装工具的方法



4.Dockerfile最佳实践

1 错误定位

每一个Dockerfile的指令能够生成新的一层镜像,若是经过Dockerfile建立镜像出错,能够根据出错所在步骤的上一层启动容器,而后手工执行出错层的命令,以达到调试目的。

2 好的使用习惯

http://dockone.io/article/131

http://dockone.io/article/132

我的主页:idig8.com

往期docker学习:

认识docker

核心概念和安装

镜像的经常使用操做

容器的基本操做

仓库

数据卷


相关文章
相关标签/搜索