Dockerfile

简介 #

Dockerfile类似于我们学习过的脚本,将我们在上面学到的docker镜像,使用自动化的方式实现出来。

Dockerfile的作用:

  • 找一个镜像: ubuntu
  • 创建一个容器: docker run ubuntu
  • 进入容器: docker exec -it 容器 命令
  • 操作: 各种应用配置….
  • 构造新镜像: docker commit

Dockerfile 使用准则:

  • 大: 首字母必须大写D
  • 空: 尽量将Dockerfile放在空目录中。
  • 单: 每个容器尽量只有一个功能。
  • 少: 执行的命令越少越好。

Dockerfile文件内容:

  • 首行注释信息
  • 指令(大写) 参数
#构建镜像命令格式:
docker build -t [镜像名]:[版本号][Dockerfile所在目录] 
#构建样例:
docker build -t nginx:v0.2 /opt/dockerfile/nginx/ 
#参数详解:
-t 指定构建后的镜像信息,
/opt/dockerfile/nginx/ 则代表Dockerfile存放位置,如果是当前目录,则用 .(点)表示

快速入门 #

接下来我们快速的使用Dockerfile来基于ubuntu创建一个定制化的镜像:nginx。

#创建Dockerfile专用目录
$ mkdir ./docker/images/nginx -p
$ cd docker/images/nginx/ #创建Dockerfile文件 :~/docker/images/nginx$ vim Dockerfile
# 构建一个基于ubuntu的docker定制镜像 # 基础镜像
FROM ubuntu
# 镜像作者
MAINTAINER panda kstwoak47@163.com
# 执行命令
RUN mkdir hello
RUN mkdir world
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN sed -i 's/security.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN apt-get update
RUN apt-get install nginx -y
# 对外端口 EXPOSE 80

基础指令 #

FROM #

FROM
#格式:
FROM <image>
    FROM <image>:<tag>
#解释:
#FROM 是 Dockerfile 里的第一条而且只能是除了首行注释之外的第一条指令 #可以有多个FROM语句,来创建多个image
#FROM 后面是有效的镜像名称,如果该镜像没有在你的本地仓库,那么就会从远程仓库Pull取,如果远程也
没有,就报错失败
#下面所有的 系统可执行指令 在 FROM 的镜像中执行。

MAINTAINER #

MAINTAINER
#格式:
MAINTAINER <name>
#解释:
#指定该dockerfile文件的维护者信息。类似我们在docker commit 时候使用-a参数指定的信息

RUN #

RUN
#格式:
RUN <command> (shell模式) RUN["executable", "param1", "param2"] (exec 模式)
#解释:
#表示当前镜像构建时候运行的命令,如果有确认输入的话,一定要在命令中添加 -y 
#如果命令较长,那么可以在命令结尾使用 \ 来换行 
#生产中,推荐使用上面数组的格式
#注释:
#shell模式:类似于 /bin/bash -c command
#举例: RUN echo hello
#exec模式:类似于 RUN["/bin/bash", "-c", "command"] 
#举例: RUN["echo", "hello"]

EXPOSE #

EXPOSE
#格式:
EXPOSE <port> [<port>...]
#解释: 设置Docker容器对外暴露的端口号,Docker为了安全,不会自动对外打开端口,如果需要外部提供访问, 还需要启动容器时增加-p或者-P参数对容器的端口进行分配。

运行时指令 #

CMD #