Dockerfile保留字指令
保留字指令 | 含义 |
---|---|
FROM | 基础镜像,表示当前镜像是基于哪个镜像的 |
MAINTAINER | 镜像维护者的姓名和邮箱地址 |
RUN | 容器构建时需要运行的命令 |
EXPOSE | 当前容器对外暴露的端口号 |
WORKDIR | 指定容器创建后,终端默认登录进来的工作目录 |
ENV | 在构建过程中设置环境变量 |
ADD | 将宿主机目录下的文件拷贝到镜像中 ※:ADD命令会自动处理URL和解压tar压缩包 |
COPY | 类似于ADD,拷贝文件和目录到镜像中 |
VOLUME | 容器数据卷,用于数据保存、数据持久化和数据共享 |
CMD | 指定容器启动时要运行的命令 ※:Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换 |
ENTRYPOINT | 指定容器启动时要运行的命令 ※:ENTRYPOINT和CMD一样,都是在指定容器启动命令及参数 |
ONBUILD | 父镜像被子镜像继承后,父镜像的ONBUILD被触发 |
指令实例
Base镜像(scratch)
Docker hub中99%的镜像都是通过在base镜像中安装和配合需要的软件构建出来的。
Docker hub中centos7的Dockerfile:
FROM scratch
ADD centos-7-docker.tar.xz /
LABEL org.label-schema.schema-version="1.0" \
org.label-schema.name="CentOS Base Image" \
org.label-schema.vendor="CentOS" \
org.label-schema.license="GPLv2" \
org.label-schema.build-date="20181006"
CMD ["/bin/bash"]
自定义centos镜像
- 通过docker hub上centos镜像创建的centos容器有以下特点:
默认工作路径是/;
默认不支持vim;
默认不支持ifconfig;
- 自定义mycentos镜像使其具有以下特点:
登陆后的默认工作路径为:/root;
支持vim命令;
支持ipconfig命令; - 编写Dockerfile:
# 设置基础镜像
FROM centos
# 设置当前镜像的维护者姓名和邮件
MAINTAINER NullPointerException<xxxxxxxxx.@163.com>
# 设置环境变量
ENV MYPATH /root
# 设置默认工作路径
WORKDIR $MYPATH
# 安装 vim
RUN yum -y install vim
# 安装 net工具
RUN yum -y install net-tools
# 设置对外暴露的端口号
EXPOSE 8088
# 打印默认工作路径的环境变量
CMD echo $MYPATH
CMD echo "build success ^.^"
CMD /bin/bash
- build Dockerfile
docker build -f /myDocker/Dockerfile -t mycentos:1.0 .
查看build好的mycentos镜像:
- 运行mycentos容器:
docker run -it --name mycentos_container mycentos:1.0
通过上图可以看到自定义的mycentos跟预期的完全一致???