Docker Dockerfile指令

本章我们将介绍Dockerfile的一些常用指令,更多指令可参考官方文档。

指令的基本语法

Dockerfile中,指令的基本语法如下:

# Comment
INSTRUCTION arguments

INSTRUCTION指令本身可以是大写或小写,但通常为了与参数区别,指令习惯用大写。

示例

#This is a demo Image
FROM ubuntu
MAINTAINER kevin@qikegu.com

RUN apt-get update
RUN apt-get install -y nginx
CMD ["echo", "Image created"]

FROM

FROM指令用指定基础镜像。如果本地没有基础镜像,将从Docker Hub下载。

示例

FROM docker.io/centos:latest
FROM docker.io/centos:6
  • 如果tag(类似版本) 6没有指定,将会用最新的镜像,即lastest
  • FROM指令在Dockerfile中是必须的,其他指令是可选的,可根据需要添加。

MAINTAINER

MAINTAINER指明此镜像的维护者。

示例

FROM docker.io/centos:latest
FROM docker.io/centos:6

LABEL

LABEL指令配置镜像的元数据信息。一个LABEL指令配置一个键值对。

示例

LABEL "Application_Environment"="Development"
LABEL "Application_Support"="LearnITGuide.net Group"

COPY

COPY指令向镜像添加目录、文件等。

该指令有2种格式:

示例

COPY src dest

COPY /root/testfile /data/

COPY [“src”,”dest”]

COPY ["/root/testfile","/data/"]

RUN

RUN指令为当前镜像执行命令。

示例

RUN yum update
RUN systemctl start httpd

或者

RUN ["yum","update"]
RUN ["systemctl","start","httpd"]

CMD

CMD指令设置容器运行时的默认命令。例如:nginx容器运行时,需要默认启动nginx服务器,可以CMD指令设置。

Dockerfile中只允许有一个CMD指令,如果有多个,只有最后一个会生效。如果运行容器时,指定了其他命令,CMD会被覆盖,例如:docker run -it nginx /bin/bash,指定了/bin/bash,会运行此命令,覆盖了CMD中指定的命令。

示例

CMD ping google.com
CMD python myapplication.py

或者

CMD ["ping","google.com"]
CMD ["python","myapplication.py"]

WORKDIR

WORKDIR指令为Dockerfile中的任何RUN、CMD和COPY指令设置工作目录。如果工作目录不存在,默认情况下将创建它。可以在Dockerfile中多次使用WORKDIR。

示例

WORKDIR /app/
WORKDIR /java_dst/

ENV

ENV指令设置容器中的环境变量。例如: APP_DIR = /data,app_version = 2.0,如下所示

示例

ENV APP_DIR /data/
ENV app_version 2.0

EXPOSE

EXPOSE指令公开容器的端口,但仅用于容器间通信。

示例

EXPOSE 80 443
EXPOSE 80/tcp 8080/udp

如果想将容器端口与主机端口绑定,让外部可以访问,应该使用docker run-p参数,如下所示:

docker run -p <HOST_PORT>:<CONTAINER_PORT> IMAGE


浙ICP备17015664号 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载