许多同学不知道Dockerfile应该如何写,不清楚Dockerfile中的指令分别有什么意义,能达到什么样的目的,接下来我将在容器化专栏中详细的为大家解释每一个指令的含义以及用法。
专栏订阅传送门https://blog.csdn.net/qq_38220908/category_11989778.html
指令不区分大小写。但是,按照惯例,它们应该是大写的,以便更容易地将它们与参数区分开来。(引用至官方文档>>>)
进入正题
一般来说,Dockerfile中的同一个构建阶段,除了ARG指令外,第一个命令就应该是FROM。
语法
FROM [--platform=<platform>] <image> [AS <name>]
或者
FROM [--platform=<platform>] <image>[:<tag>] [AS <name>]
或者
FROM [--platform=<platform>] <image>[@<digest>] [AS <name>]
可选参数:
–platform=<platform> 如果引用的是一个多平台的镜像,我们可以通过–platform指定镜像的平台,例如:
linux/amd64
、linux/arm64
或windows/amd64
。:<tag> 指定引用镜像的tag,如果不指定,会默认使用最新的镜像
@<digest> 指定引用镜像的digest,如果不指定,会默认使用最新的镜像
AS <name> 给引用的镜像重命名,可用于后续的FROM 或者COPY –FROM
概念
FROM的意思就是获取一个基础的镜像,作为容器的基础环境,所以Dockerfile一般都是以FROM指令开头的。我们可以从Docker官方镜像库中获取基础镜像。
比如需要部署一个以apache为基础环境的容器:
我们先在Docker官方镜像库列表中,搜索关键词httpd
然后点击联想词条httpd进入到官方镜像详情页中,在详情页中,给出了如何使用httpd作为基础环境。
然后我们只需要在我们的Dockerfile中协商 FROM httpd:2.4 就将基础环境引入了,这时候,你的容器中就自动配置了apache相关的环境了。然后只需要使用COPY指令,将你的项目代码拷贝到容器中的/usr/local/apache2/htdocs/目录下就可以了。
FROM httpd:2.4
[1] 感谢大佬 @kenllf 的斧正