Docker Dockerfile如何编写?

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

1.指令说明

FROM,构建镜像基于哪个镜像

MAINTAINER,镜像维护者姓名或邮箱地址

RUN,构建镜像时运行的指令

CMD,运行容器时执行的shell环境

VOLUME,指定容器挂载点到宿主机自动生成的目录或其他容器

USER,为RUN、CMD、和 ENTRYPOINT 执行命令指定运行用户

WORKDIR,为 RUN、CMD、ENTRYPOINT、COPY 和 ADD 设置工作目录,就是切换目录

HEALTHCHECH,健康检查

ARG,构建时指定的一些参数

EXPOSE,声明容器的服务端口(仅仅是声明)

ENV,设置容器环境变量

ADD,拷贝文件或目录到容器中,如果是URL或压缩包便会自动下载或自动解压

COPY,拷贝文件或目录到容器中,跟ADD类似,但不具备自动下载或解压的功能

ENTRYPOINT,运行容器时执行的shell命令

2.关键点

RUN 执指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大,大部分命令可以简化如下:

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

Copy

上下文路径,是指 docker 在构建镜像,有时候想要使用到本机的文件(比如复制),docker build 命令得知这个路径后,会将路径下的所有内容打包。

上下文路径

由于 docker 的运行模式是 C/S。我们本机是 C,docker 引擎是 S。实际的构建过程是在 docker 引擎下完成的,所以这个时候无法用到我们本机的文件。这就需要把我们本机的指定目录下的文件一起打包提供给 docker 引擎使用。

如果未说明最后一个参数,那么默认上下文路径就是 Dockerfile 所在的位置。

Compose

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

相关说明:https://www.runoob.com/docker/docker-compose.html

相关推荐
你好,帅哥19 分钟前
openssl ,msys2 ,交叉编译
linux·运维·服务器
计算机安禾30 分钟前
【Linux从入门到精通】第36篇:DNS服务探秘——自己搭建一个内网DNS
linux·运维·servlet
Web极客码1 小时前
2026年Linux VPS安全加固清单:SSH、防火墙与审计就绪配置
运维·服务器·数据库
星恒讯工业路由器2 小时前
配网自动化多网融合应用解决方案
运维·自动化
智慧物业老杨2 小时前
智慧物业收费系统的数智化落地实践:从人工硬扛到自动化闭环
运维·自动化
techdashen2 小时前
Cloudflare 为何抛弃 NGINX,用 Rust 自研了一个代理
运维·nginx·rust
南城猿2 小时前
保姆级 Ubuntu 部署 禅道
linux·运维·ubuntu
珠海西格电力3 小时前
零碳园区产业园管理系统的全场景源网荷储氢协同调度功能是如何实现的
大数据·运维·人工智能·物联网·能源
木雷坞3 小时前
K8s GPU 推理服务 ImagePullBackOff 排查与预热
云原生·容器·kubernetes·gpu算力
wj3055853783 小时前
CC-Switch 在 WSL Ubuntu 中安装记录
linux·运维·ubuntu