如何列出 Docker 容器
2024年3月17日安装和配置 Webmin 以以图形方式远程管理 Linux 服务器
2024年3月17日Docker提供了一种简单的方法来配置任何 docker 映像并在 dockerfile 的帮助下创建您自己的自定义映像。
在本教程中,您将学习如何从 Docker 存储库中提取官方镜像并根据自己的要求进行自定义。然后您可以运行并验证自定义 docker 映像。
创建自定义 docker 镜像
![](https://www.alaica.com/wp-content/uploads/linux-48.jpg)
因此,在此示例中,您将使用默认情况下不包含 Vim 编辑器的Alpine Linux映像。您将修改此 Docker 映像以创建默认包含Vim 编辑器的新 Alpine Linux docker 映像。没有比这更简单的了。它可以?
先决条件
如果您尚未安装 Docker,请在 Ubuntu或您正在使用的任何 Linux 发行版上安装 Docker。确保将自己添加到 docker 组,以便无需 sudo 即可运行 docker。
您需要有效的互联网连接才能下载基础 Docker 映像。
第1步:获取docker镜像[可选]
我在这个例子中选择了 Alpine Linux,因为它真的很小。Alpine docker 镜像大小还不到 5 MB,你能相信吗?它是容器化的完美 Linux 发行版。
此步骤是可选的。我将其包含在内是为了表明您可以将其与自定义的 docker 映像进行比较。
使用 docker pull 命令拉取 Alpine Linux 的最新 docker 镜像:
docker pull alpine
第 2 步:创建具有所需自定义的 Dockerfile
现在让我们使用touch 命令创建一个名为 Dockerfile 的新空文件。
touch Dockerfile
现在您需要编辑该文件及其这三行并保存。您可以使用 Vim或Nano等编辑器或使用 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 .
![](https://www.alaica.com/wp-content/uploads/linux-335.png)
现在让我们看看系统上可用的 Docker 镜像:
abhishek@linuxhandbook:~$ 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
您可以看到,安装了 Vim 后,基本 docker 镜像的大小几乎没有 5 MB,现在变成了 33 MB(并且更新了包缓存)。
现在,让我们通过运行容器来验证修改后的docker 映像是否已安装 vim:
docker container run -ti alpine-with-vim /bin/sh
进入容器后,您可以通过检查其版本来验证 Vim 是否已安装:
/ # vim --version
VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Dec 12 2019 19:30:49)
Compiled by Alpine Linux
在终端中输入 exit退出容器。停止容器、删除容器并删除 docker 映像(如果需要)以释放磁盘空间。
恭喜!您刚刚学习了如何创建您自己的定制 docker 镜像。
我知道这不是一个非常广泛的教程,您可能有复杂的需求。但本教程是理解 docker 镜像定制的第一步。
我强烈建议您阅读有关 Dockerfile 的更多内容,以了解还有哪些其他选项可用于自定义 docker 映像。
如果您有疑问或建议,请在下方留言。