Docker第4部分:构建和发布定制Docker窗图像

在本教程中,我们将使用Whale Docker镜像。鲸鱼是Docker的官方吉祥物,鲸鱼Docker窗图像类似于牛仔进程

第一 部分第二部分中 ,我们介绍了通过准备我们的Docker容器管理系统来运行容器的基本原理,以及从技术角度来看,使用docker容器对其他虚拟化技术的意义。 然后,在第三部分 ,我们用docker图像进行了手,了解了基础知识,并使用WordPress或DokuWiki创建了我们的第一个记事本容器。

在第四部分中,我们将看到docker图像的构建方式,我们将创建自己的自定义图像,以便下载并与我们的朋友,同事和社区共享。

在本教程中,我们将使用Whale Docker映像。 鲸鱼是Docker的官方吉祥物,鲸鱼码头图像类似于在终端中产生一条消息的母牛的ASCII图片的奶牛节目。 它也可以使用其他动物的预制图像来生成图像,如Tux the Penguin,Linux吉祥物。

Docker

Docker文件简介

在上一部分,我们介绍了Docker Hub,并了解到它是一个基于云的容器图像发现,图像构建和分发这些图像的集中资源。 我们还了解到,码头影像是基础图像之上的多层图像。 也就是说,使用基本图像消除了从头开始创建适用于Docker映像的操作系统的麻烦,并为我们提供了自定义软件所在上层的选项。

要通过使用基本映像创建自定义映像,我们需要为Docker引擎提供有关如何安装和配置软件包和文件的说明,还有一些与之配合的设置。 这些指令是用一个名为“dockerfile”的纯文本文件编写的。 Dockerfiles就像你把食物交给Chef,他/她为你做了一顿美味的食物。 这些docker文件使用简单的描述性的一组称为“指令”的步骤编写。 每个指令在我们的图像中创建一个新的图层。 指令包括运行命令,添加文件或目录,从映像启动容器时运行的进程等操作。此过程就像您在shell脚本中设置一系列命令一样。 一旦你要求建立一个图像,Docker读取docker文件执行指令,并返回一个最终的图像。

建立码头图像

有两种方法来构建您的自定义Docker映像。 您可以在计算机上构建它,也可以使用我们以前讨论过的Docker Hub。 在这部分中,我们将学习如何在本地构建Docker映像,然后在Docker Hub Registry上发布。

在本地使用Dockerfile构建

我们将使用“Whale say”图像创建一个定制的Docker Image,该图像是一个小型Docker Image(基于Ubuntu映像),当您运行它时,它会显示您编程的内容。

首先,打开一个终端并创建一个新的文件夹,键入:

mkdir mywhale

此目录用作您的构建的“上下文”。 上下文只是意味着它包含了为了成功构建图像而需要的所有东西。

进入您的新文件夹:

cd mywhale

并通过键入以下内容在文件夹中创建一个Docker文件:

touch Dockerfile

现在,如果你给出'll'命令,你应该看到我们创建的空Docker文件:

ll

$ ll
total 8.0K
-rw-rw-r-- 1 user user 0 23:26 Dockerfile

用你喜欢的文本编辑器打开它,然后添加:

FROM docker/whalesay:latest

使用FROM关键字的第一行说明告诉Docker您的图像是基于哪个图像。 你正在把你的新作品放在现有的鲸鱼形象上。

我们将添加的下一条指令将使我们的鲸鱼能够发财。 要完成此任务,我们将使用Ubuntu存储库中提供的幸运软件包(请记住,鲸鱼映像基于Ubuntu映像)。 财富计划有一个命令,打印出我们的鲸鱼说的明智的Discourse。

所以,第一步是安装它。 为了做到这一点,我们添加了常用的apt安装指令:

RUN apt -y update && apt -y install fortunes

一旦图像具有所需的软件,就可以指示软件在加载图像时运行。 为此,我们添加以下指令:

CMD /usr/games/fortune -a | cowsay

上面的一行告诉幸运计划将随机选择的报价发送给cowsay程序

我们完成了! 现在保存文件并退出。
您可以通过运行“cat Dockerfile”来验证您的操作,以便您的Dockerfile如下所示:

cat Dockerfile

FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsay

现在,所有的东西(希望)看起来都很好,它建立Docker Image的时候(别忘了命令的时期):

docker build -t my-docker-whale .

上述命令将Dockerfile放在当前文件夹中,并在本地计算机上构建一个名为“my-docker-whale”的映像。

您可以验证您的Docker图像确实存储在您的计算机上:

docker images

然后,您可以通过键入以下内容来运行Docker映像:

docker run my-docker-whale

一旦运行,您将获得如下图像

码头鲸图像

在Docker Hub上发布自定义Docker映像

您的下一个选择是在Docker Hub Repository上发布创建的Docker映像。 为此,您需要在Docker Hub注册网页上创建一个帐户,您将在其中为您的帐户提供名称,密码和电子邮件地址。 我也应该指出,Docker Hub服务是免费的公共码头图像。 创建帐户后,您可以推送先前创建的图像,使其可供其他人使用。

为此,您将需要您的“我的码头 - 鲸鱼”图像的ID和TAG。

再次运行“docker图像”命令,并注意您的Docker图像的ID和TAG,例如a69f3f5e1a31。

现在,通过以下命令,我们将准备Docker Image进入外部世界(该命令的帐户名称部分是Docker Hube配置文件页面上的您的帐户名称):

docker tag a69f3f5e1a31 accountname/my-docker-whale:latest

运行“docker图像”命令并验证新标记的图像。

接下来,使用“docker login”命令从命令行登录Docker Hub。

login命令的格式为:

docker login --username=yourhubusername --email=youremail@provider.com

出现提示时,输入密码并按回车键。

现在,您可以将图像推送到新创建的存储库:

docker push accountname/my-docker-whale

上述命令可能需要一段时间才能完成,具体取决于您的连接的上传带宽,因为它上传了180MB的数据(在我们的示例中)。 一旦完成,您可以在Docker Hub上访问您的个人资料,并查看您的新图片。

下载您的自定义图像

如果要从Docker Hub存储库中拉出图像,则需要首先从本地机器中删除原始图像,因为Docker将拒绝从集线器拉出,因为本地和远程映像相同。

从上一节您记得,要删除码头图像,您必须运行“docker rmi”命令。 您可以使用ID或名称来删除图像:

docker rmi -f a69f3f5e1a31

现在图像已被删除,您可以使用“docker run”命令从您的存储库中拉出并加载映像,方法是将Docker Hub中的帐户名称包含在内。

docker run accountname/my-docker-whale

由于我们以前删除了该图像,并且在本地系统上不再可用,Docker将下载并将其存储在指定位置。

概要

在这部分中,我们学习了如何创建一个Docker文件,写一些基本的指令以及使用它作为配方的构建和映像。 我们还涵盖推动我们的新的自定义图像Docker窗中心登记,并拉动我们本地机器的基本知识。 在本系列Docker教程的下一部分中,我将展示如何自动化图像构建过程,以便我们可以在需要时立即创建自定义图像! 敬请关注。