• docker学习笔记(五): Dockerfile指令


    CMD

    CMD指令用于指定一个容器启动时需要运行的命令。

    RUN指令是容器被构建时需要运行的命令。

    sudo docker run -d -p 80 --name static_web docker/nginx:web –c /bin/bash

    同等与Dockerfile中的

    CMD[“/bin/bash”,”-c”]

    ENTRYPOINT

    ENTRYPOINT指令和CMD指令类似,但是CMD指令会被覆盖,而ENTRYPOINT指令则不会。

    ENTRYPOINT [“/usr/sbin/nginx”,”-g”,”daemon off;”]

    WORKDIR

    WORKDIR用来从镜像创建一个新容器时,在容器内部设置一个工作目录

    docker run 命令添加参数 –w /dir 会将Dockerfile中的工作目录覆盖掉

    ENV

    ENV指令用来在镜像构建过程中设置环境变量

    也可以在命令行中 通过-e 来指定环境变量

    sudo docker run –ti –e “WEB_PORT=8080” Ubuntu

    USER

    USER 指令用来指定该镜像会以什么样的用户去运行

    如:USER nginx

    可以通过docker run命令中 –u选项覆盖该指令指定的值

    如果不知道USER用户 默认为root用户

    VOLUME

    VOLUME指令用来向基于镜像创建的容器添加卷。一个卷可以存在于一个或者多个容器内特定的目录,这个目录可以绕过联合文件系统,并提供如下共下数据或者对数据持久化的功能。

    1、     卷可以在容器间共享和重用

    2、     一个容器可以不是必须和其他容器共享卷

    3、     对卷的修改是立时生效的

    4、     对卷的修改不会对更新镜像产生影响

    5、     卷会一直存在直到没有容器再使用它

    VOLUME [“/opt/project”] 

    基于此镜像创建的任何容器一个名为/opt/project的挂载点

    也可以一次创建多个卷

    VOLUME [“/opt/project”,”/data”]

    ADD

    用来将构建环境下的文件和目录复制到镜像中。

    如:

    ADD software.lic /opt/application/software.lic

    ADD指令指向源文件的位置参数可以是一个URL,或者构建上下文或者环境中文件名或者目录

    在ADD文件时,Docker通过有无/判断是文件夹还是文件

    如果ADD指令中源文件是一个压缩文件,ADD会自动将这个文件解压

    COPY

    类似于ADD指令,不同在于COPY只关心在构建上下文中复制本地文件,而不会做提取和解压文件。

    COPY conf.d/ /etc/apache2

    (将本地目录中的文件复制到/etc/apache2中)

    文件源路径必须是一个与当前构建环境相对的文件或目录,本地文件都放到和Dockerfile一个目录下。不能复制该目录下的文件。

    如果复制的目的位置不存在,Docker会自动创建该文件夹

    ONBUILD

    该指令能为镜像添加触发器。当一个镜像被用作其他镜像的基础镜像时,该镜像中的触发器会被执行。

    触发器在构建过程中会插入新指令,触发器可以是任何构建指令

    ONBUILD RUN cd /cpp/src && make

    ONBUILD指令可以在镜像上运行 docker inspect 命令查看

    用放荡不羁的心态过随遇而安的生活
  • 相关阅读:
    phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接 解决办法
    MySQL意外关闭, 导致软件崩溃而无法启动的解决办法
    !function 笔记
    C++中四种类型转换方式
    SpringCloud面试题及答案
    Spring Boot面试题
    javaWeb常用面试题
    mysql行转列 问题 SUM(IF(条件,列值,0))
    mysql行列转换
    C++面试常见题
  • 原文地址:https://www.cnblogs.com/re-myself/p/4698511.html
Copyright © 2020-2023  润新知