个人技术分享

参考:59_Dockerfile保留字简介_哔哩哔哩_bilibili

FROM

作用指定基础镜像,即在这个基础镜像上构建新镜像,如下所示,表示在ubuntu20.04镜像的基础上构建新镜像

FROM ubuntu:20.04

MAINTAINER

作用:镜像维护者的姓名和邮箱地址

RUN

作用:构建容器时需要执行的命令。通常用于安装软件包、更新系统等

RUN apt-get update && \
    apt-get install -y \
    package1 \
    package2 \
    package3 \
    && rm -rf /var/lib/apt/lists/*

EXPOSE

指定当前容器对外暴露的端口

WORKDIR

作用:指定容器创建后,进入容器时的默认工作目录

USER

作用指定镜像以什么样的用户去执行,如果都不指定,默认是root

ENV

作用设置环境变量,如下所示,为系统环境变量PATH添加新值

ENV PATH /opt/conda/envs/vln/bin:$PATH

ADD

作用:将宿主机目录下的文件拷贝进镜像,且会自动处理URL和解压tar压缩包,如下所示,该命令表示从cmake网站上下载对应的sh文件,并将其放入容器的根目录下

ADD https://cmake.org/files/v3.12/cmake-3.12.2-Linux-x86_64.sh /cmake-3.12.2-Linux-x86_64.sh

又或者这段代码,表示将宿主机上的run.tar文件拷贝进镜像中并自动进行解压

ADD run.tar

COPY

作用:只有拷贝作用,将宿主机中的文件拷贝进镜像中,如下,表示将宿主机下的~/.ssh/config文件拷贝进config文件夹中

COPY ~/.ssh/config config

CMD

作用:指定容器启动后要执行的命令,如下,表示容器启动后执行catalina.sh

CMD ["catalina.sh"]

注,假如有多个CMD命令,则后边的CMD命令会覆盖掉前者的命令,并且docker run之后的参数会替换掉最后一个CMD指令 

ENTRYPOINT

作用:指定容器启动后运行的命令,但ENTRYPOINT 指定的命令不会被修改

一般情况下,我们使用ENTRYPOINT 传定参,CMD命令传变参

使用格式

ENTRYPOINT ["executable","parm1","parm2",...]

假如我们通过以下镜像构建了一个nginx:test镜像

FROM nginx
ENTRYPOINT ["nginx","-c"]
CMD ["/etc/nginx/nginx.conf"]
是否传参 按照dockerfile编写执行 传参运行
Docker命令 docker run nginx:test docker run nginx:test -c /etc/nginx/new.conf
对应实际命令 nginx -c /etc/nginx/nginx.conf  nginx -c /etc/nginx/new.conf