参考:59_Dockerfile保留字简介_哔哩哔哩_bilibili
作用:指定基础镜像,即在这个基础镜像上构建新镜像,如下所示,表示在ubuntu20.04镜像的基础上构建新镜像
FROM ubuntu:20.04
作用:镜像维护者的姓名和邮箱地址
作用:构建容器时需要执行的命令。通常用于安装软件包、更新系统等
- RUN apt-get update && \
- apt-get install -y \
- package1 \
- package2 \
- package3 \
- && rm -rf /var/lib/apt/lists/*
指定当前容器对外暴露的端口
作用:指定容器创建后,进入容器时的默认工作目录
作用:指定镜像以什么样的用户去执行,如果都不指定,默认是root
作用:设置环境变量,如下所示,为系统环境变量PATH添加新值
ENV PATH /opt/conda/envs/vln/bin:$PATH
作用:将宿主机目录下的文件拷贝进镜像,且会自动处理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
作用:只有拷贝作用,将宿主机中的文件拷贝进镜像中,如下,表示将宿主机下的~/.ssh/config文件拷贝进config文件夹中
COPY ~/.ssh/config config
作用:指定容器启动后要执行的命令,如下,表示容器启动后执行catalina.sh
CMD ["catalina.sh"]
注,假如有多个CMD命令,则后边的CMD命令会覆盖掉前者的命令,并且docker run之后的参数会替换掉最后一个CMD指令
作用:指定容器启动后运行的命令,但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 |