如何使用 Dockerfile 创建自定义 Docker 映像

码头工人 提供了一种简单的方法来配置任何 docker 镜像并在 dockerfile 的帮助下创建您自己的自定义镜像。

在本教程中,您将学习如何从 Docker 存储库中拉取官方镜像并根据自己的需求进行自定义。 然后您可以运行并验证自定义 docker 映像。

创建自定义泊坞窗图像

所以,在这个 example,您将使用 高山 Linux 默认情况下不包含 Vim 编辑器的图像。 您将修改此 Docker 映像以创建 Alpine Linux 的新 Docker 映像,其中包括 Vim 编辑器 默认情况下。 没有比这更简单的了。 它可以?

先决条件

如果您还没有,请在 Ubuntu 或您使用的任何 Linux 发行版上安装 Docker。 确保将自己添加到 docker 组,这样您就可以在没有 sudo.
您需要有效的 Internet 连接才能下载基本 docker 映像。

第一步:获取docker镜像 [optional]

我在此选择了 Alpine Linux example 因为它真的很小。 这 高山泊坞窗图像 几乎只有 5 MB 大小,你能相信吗? 它是用于容器化的完美 Linux 发行版。

此步骤是可选的。 我包含它是为了表明您可以将它与自定义的 docker 图像进行比较。

使用 docker pull 命令拉取 Alpine Linux 的最新 docker 镜像:

docker pull alpine

第 2 步:使用所需的自定义创建 Dockerfile

现在让我们使用 touch 命令创建一个名为 Dockerfile 的新空文件。

touch Dockerfile

现在你需要编辑这个文件和这三行并保存它。 您可以使用 Vim 之类的编辑器或 纳米 或使用 cat 命令将这些行添加到 Dockerfile。

FROM alpine:latest
RUN apk update
RUN apk add vim

您在这里所做的是通过从 Docker Hub 下载最新的 Alpine docker 镜像来创建一个新的 docker 镜像。

像 apt 一样,Alpine 使用 apk 包管理器. 所以接下来的两个命令基本上是告诉 Alpine Linux 更新可用的包缓存(apk update),然后安装 Vim(apk add vim)。

如您所见,使用 Dockerfile 中的 RUN,您可以通过运行特定命令来自定义您的基础 docker 映像。

第 3 步:使用 Dockerfile 创建自定义 docker 镜像

从 Dockerfile 构建自定义映像的命令如下所示:

docker build -t new_docker_image_name PATH_to_Dockerfile

使用 -t 标签,您可以指定自定义 docker 映像的名称。

考虑到您的 Dockerfile 位于当前目录中,您可以创建安装了 Vim 的 Alpine Linux 的新 docker 映像,如下所示:

docker build -t alpine-with-vim .

现在让我们看看系统上可用的 Docker 镜像:

[email protected]:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
alpine-with-vim     latest              fa8255cf0de0        5 seconds ago       33.9MB
alpine              latest              a187dde48cd2        3 weeks ago         5.6MB

您可以看到,大小几乎没有 5 MB 的基本 docker 映像现在是 33 MB,上面安装了 Vim(并更新了包缓存)。

现在,让我们通过运行容器来验证您修改后的 docker 镜像是否已安装 vim:

docker container run -ti alpine-with-vim /bin/sh

进入容器后,您可以通过检查 Vim 的版本来验证是否安装了 Vim:

/ # vim --version
VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Dec 12 2019 19:30:49)
Compiled by Alpine Linux

Exit 通过在终端中键入 exit 来创建容器。 停止容器,移除容器并移除 docker 镜像(如果需要)以释放磁盘空间。

恭喜! 您刚刚学习了如何创建自己的自定义 docker 映像。

我知道这不是一个非常广泛的教程,您可能有复杂的需求。 但本教程是了解 docker 镜像定制的第一步。

我强烈推荐 阅读更多关于 Dockerfile 了解您可用于自定义 docker 图像的其他选项。

如果您有任何问题或建议,请在下方发表评论。