大家好,我叫徐锦桐,个人博客地址为www.xujintong.com。平时记录一下学习计算机过程中获取的知识,还有日常折腾的经验,欢迎大家访问。
前言
一些自己经常用到的Dockerfile知识。Dockerfile就是构建自己的镜像的一个配置文件。
一、各字段用法
1.1、CMD
指定容器运行后的运行命令,通常是一个脚本。
# 设置容器进程为:go run helloworld.go
CMD ["./test.sh"]
1.2、RUN
在镜像中安装软件包或运行命令。镜像构建过程中,多个 RUN 指令可能会生成多个镜像层。为了减小镜像的层数,可以将多个命令组合到一个 RUN 指令中。多个层数会降低性能,所以一般所有命令就放在一个RUN中。
RUN一般用&&
来支持多个命令,支持末尾加个\
换行。
# 举例
RUN 命令1 \
&& 命令2 \
&& 命令3
1.3、COPY
和一般的copy使用方法一样。
用于将本地文件或目录复制到正在构建的 Docker 镜像中的指定位置。
它是构建镜像时的一项关键操作,允许将主机文件系统上的文件或目录复制到容器镜像中,以供后续在容器内部使用。
# 将当前目录下的所有内容复制到 /app 下
COPY . /app
1.4、WORKDIR
用于设置容器内部的工作目录。这个工作目录是在容器启动后,所有相对路径操作的基础路径。
也就是说,当你在容器中执行命令时,如果使用了相对路径,那么这些相对路径会以 WORKDIR 指定的目录为起点进行解析。
# 将工作目录设置为 /app
WORKDIR /app
在一个 Dockerfile 中,可以多次使用 WORKDIR 指令来切换工作目录,但请注意,每次使用都会更改容器中的当前工作目录。
1.5、EXPOSE
暴露的容器端口。
# 允许宿主机访问容器的 8000 端口
EXPOSE 8000