Docker Dockerfile如何编写?

server/2024/10/20 16:38:34/

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


http://www.ppmy.cn/server/40668.html

相关文章

Python-VBA函数之旅-sum函数

目录 一、sum函数的常见应用场景 二、sum函数使用注意事项 三、如何用好sum函数? 1、sum函数: 1-1、Python: 1-2、VBA: 2、推荐阅读: 个人主页: https://myelsa1024.blog.csdn.net/ 一、sum函数的常…

【JavaEE】【1.3 Servlet】1.3.3 HttpServletRequest的应用

Http报文结构 请求报文 HTTP的请求报文由四部分组成(请求行请求头部空行请求体): 请求行(Request Line)①②③: ① 请求方法(Method):要执行的HTTP操作,…

安卓动态加载view

目录 前言一、addview1.1 addView 的重载方法1.2 在 LinearLayout 中的使用1.2.1 addView(View child)方法的分析:1.2.2 addView(View child, int index)方法的分析:1.2.3 小结 1.3 在 RelativeLayout 中的使用 二、addContentview2.1 测试 12.2 测试 22…

【OpenGauss源码学习 —— (ALTER TABLE(ExecRewriteCStoreTable))】

ALTER TABLE(ExecRewriteCStoreTable) 概述ExecRewriteCStoreTable 函数ATCStoreRewriteTable 函数ATCStoreGetRewriteAttrs 函数ChangeTableSpaceForDeltaRelation 函数ATOnlyCheckCStoreTable 函数 声明:本文的部分内容参考了他人的文章。在…

SpringBoot整合JSR303分组校验

文章目录 JSR303 校验&#xff1a;分组校验 &#xff1a; JSR303 校验&#xff1a; 分组校验 &#xff1a; 首先导入依赖&#xff1a; <!-- JSR303 校验--><dependency><groupId>javax.validation</groupId><artifactId>validatio…

Spring6 的JdbcTemplate的JDBC模板类的详细使用说明

1. Spring6 的JdbcTemplate的JDBC模板类的详细使用说明 文章目录 1. Spring6 的JdbcTemplate的JDBC模板类的详细使用说明每博一文案2. 环境准备3. 数据准备4. 开始4.1 从数据表中插入(添加)数据4.2 从数据表中修改数据4.3 从数据表中删除数据4.4 从数据表中查询一个对象4.5 从数…

Mysql 基础 - 常见 子句

算数运算符 > < > < !/<> 逻辑运算符 3i in is null is not null 2l limit like 2o or 、order by 1a and ib between and 1n not and、or 、not、 in、 orderby、 limit、 like、 between...and、 is null 、is not null

docker 部署SSM项目(包含打包)

一&#xff1a;SSM项目打包 1.这个一定要勾选防止静态资源没打包上 2.第二步 3.第三步 4.更改名字(注意部署到线上的时候这里如果用docker或者window部署的话需要带这个项目名&#xff0c;不然会出现找不到接口的情况) ![在这里插入图片描述](https://img-blog.csdnimg.cn/dir…