计算机网络/计算机科学与应用/系统/运维/开发

Dockerfile 基本命令的使用

命令总结:https://www.runoob.com/docker/docker-dockerfile.html


一、Dockerfile的组成

主体内容四部分:基础镜像信息、维护者信息、镜像操作指令、和容器启动时执行指令

构建镜像的基本步骤:(Nginx)

vim Dockerfile 

FROM nginx 

RUN echo '这是一个nginx镜像' > /usr/share/nginx/html/index.html 

FROM 定制的镜像是基于FROM的镜像,基础镜像 

RUN 执行后面的命令行 

shell 格式: 

RUN <命令行命令>

exec格式:

RUN ["可执行文件","参数1","参数2"]

注意: 

Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大

FROM centos

RUN yum -y install wget

RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"

RUN tar -xvf redis.tar.gz

简化形式:

FROM centos

RUN yum -y install wget \

&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \

&& tar -xvf redis.tar.gz

&& 符号连接命令,这样执行后,只会创建 1 层镜像

构建镜像: 

$ docker build -t nginx:v3  .

. 表示本次执行的上下文路径

二、指令说明 

FROM  指定基础镜像,用于后续的指令构建

MAINTAINER 指定Dockerfile的作者/维护者。(已弃用,推荐使用LABEL指令)

LABEL 添加镜像的元数据,使用键值对的形式

RUN  在构建过程中在镜像中执行命令

CMD  指定容器创建时的默认命令 (可以被覆盖)

ENTRYPOINT 设置容器创建时的主要命令(不可以被覆盖)

EXPOSE 声明容器运行时监听的特定网络端口

ENV  在容器内部设置环境变量

ADD 将文件、目录或远程URL复制到镜像中

COPY 将文件或目录复制到镜像中

VOLUME 为容器创建挂载点或声明卷

WORKDIR 设置后续指令的工作目录

USER 指定后续指令的用户上下文

ARG 定义在构建过程中传递给构建器的变量,可使用 "docker build" 命令设置

ONBUILD 当该镜像被用作另一个构建过程的基础时,添加触发器

STOPSIGNAL 设置发送给容器以退出的系统调用信号

HEALTHCHECK 定义周期性检查容器健康状态的命令

SHELL 覆盖Docker中默认的shell,用于RUN、CMD和ENTRYPOINT指令


人生建议:不要因为嘴硬而失去重要的东西,清醒,知趣,明得失,知进退。

评论

^