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

相关推荐
木童6625 分钟前
Kubernetes 操作管理完全指南:从陈述式到声明式,覆盖全生命周期
云原生·容器·kubernetes
DX_水位流量监测1 小时前
大坝安全监测之渗流渗压位移监测设备技术解析
大数据·运维·服务器·网络·人工智能·安全
电商API&Tina1 小时前
京东 API 数据采集接口接入与行业分析
运维·服务器·网络·数据库·django·php
不想画图1 小时前
Kubernetes(三)——组网概念和基础操作指令
云原生·容器·kubernetes
Mr_Xuhhh1 小时前
博客标题:深入理解Shell:从进程控制到自主实现一个微型Shell
linux·运维·服务器
f***24114 小时前
高效自动化管理临时文件的技术方案
运维·自动化
m0_738120725 小时前
应急响应——知攻善防靶场Linux-1详细应急过程
linux·运维·服务器·网络·web安全·ssh
青州从事5215 小时前
20260108【mac】【brew】【docker】安装
macos·docker·eureka
obboda5 小时前
磁盘管理(MBR、LVM)
运维·5g
kylezhao20195 小时前
S7-1200 CPU 与 S7-200 SMART S7通信(S7-1200 作为服务器)
运维·服务器