在这份指南中,我们将看到 Dockerfile 的简要介绍以及如何在 Linux 中使用 Dockerfile 来自动的 创建自定义 Docker 镜像 。,Dockerfile 是附有构建 Docker 镜像说明的易于理解的文本文件。它囊括了用户在创建镜像时可以调用的所有命令。,我们可以使用 Dockerfile 创建自定义的镜像。可以通过 Docker Hub 分享的自定义 Docker 镜像。,如果你还不知道,Docker Hub 是 Docker 提供的托管存储库服务,用于团队查找和共享容器镜像,当然世界上任何人也都可以访问。,想象一下,早期如果我们想用 Nginx,我们要通过很多步骤,才能安装和配置好 Nginx 。得益于 Docker Hub ,现在我们可以在几分钟内,下载并运行 Nginx 的预置容器镜像。,
,Nginx Docker Image In Dockerhub,运行如下命令从 Docker Hub 上拉取 Nginx 镜像:,一旦我们拉取了 Docker 镜像,可以运行如下命令使用它:,就这样,十分简单!,Docker Hub 上有超过十万个来自软件供应商、开源项目以及社区的容器镜像。,你可以从 Docker Hub 上下载你选择的镜像,并且使用上面的命令开始使用它。,Docker 可以读取 Dockerfile 中的 指令 来自动的创建镜像。,典型的 Dockerfile 包含如下指令:,1、FROM —— 这会设置容器的基础镜像。,例如:,这会将容器的基础镜像设置为 Ubuntu 。如果 ‘22.04’ 这个标志没有特别指明,则会设为最新版本(latest)。,2、LABEL —— 这是用来明确镜像的元数据信息的键值对。,例如:,3、RUN —— 这会在基础镜像中执行指令并创建一个新层。,例如:,4、CMD —— 这用来设置容器启动后先执行的命令。,例如:,5、EXPOSE —— 设置用于访问容器的端口。容器将会监听该端口。我们可以用来获得输出。,例如:,6、``MAINTAINER` —— 显示创建镜像作者的信息。,例如:,7、ENV —— 用来设置环境变量的键值对。这些变量在镜像创建的时候设置,并在容器创建好后可以使用。,例如:,8、COPY —— 用来拷贝本地文件至容器中。,例如:,9、ADD —— 具有与拷贝相同的功能,不过更进一步还可以提取本地的 tar 文件或者从 URL 拷贝文件。,例如:,10、ENTRYPOINT —— 用来设置镜像的主要命令。与 CMD 指令功能相同。不同的是 ENTRYPOINT 中的指令不会被重写。,例如:,11、VOLUME —— 该指令用来创建指定位置的挂载点。,例如:,12、USER —— 将设置运行镜像并使用的用户名称以及用户组。,例如:,13、WORKDIR —— 这会设置工作目录。如果目录不存在,则会创建。,例如:,这是一个 Dockerfile 的样本,可以参考一下:,我将向你展示创建一个 Dockerfile 、创建并使用镜像的简单例子。,创建一个名为 dockerfile 的文件:,添加下面几行命令。我们将更新并安装 vim 和 curl 包:,
,Dockerfile For Alpine Linux,按下 CTRL+O 和 CTRL+X 键保存文件并关闭。,现在 Dockerfile 已经就位。让我们继续,用该 Dockerfile 创建一个镜像。,注意: 如果你在使用 Docker 桌面版,你可以以一个普通用户运行 docker 命令。,只需运行以下命令,便可以使用 Dockerfile 创建 Docker 镜像:,请注意最后有一个 点(.)。,输出示例:,按照上面的命令, Docker 会通过保存在当前工作目录中的 Dockerfile 中的命令开始自动的创建镜像。还记得我们在 Dockerfile 中保存的 apk update、apk add vim 和 apk add curl 命令吗?这些命令也将会自动的执行。,如果 Dockerfile 保存在其他目录,你可以使用 -f 标志来指定路径,例如:,创建好镜像后,我们可以使用如下命令运行它:,该命令会启动这个 Alpine 容器并连接到它。,如果你使用 Docker 桌面版,你可以通过容器Containers标签页界面来查看运行中的容器。,
,View Containers In Docker Desktop,这就是使用 Dockerfile 构建自定义容器映像的方式。,我们仅仅讲了基础内容。你可以用 Dockerfile 做到很多东西。建议你参考一下官方 Dockerfile 参考 ,以了解更多内容。
© 版权声明
文章版权归作者所有,未经允许请勿转载。