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指令设置容器中的环境变量。例如: A P P D I R = / d a t a , APP_DIR = /data, APPDIR=/dataapp_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
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值