如何用Docker快速创建一个自定义镜像

99 阅读3分钟

[

Jennelle Cosby

](medium.com/@jennelle.c…)

詹妮尔-科斯比

关注

6月6日

-

5分钟阅读

[

拯救

](medium.com/m/signin?ac…)

如何用Docker快速创建一个自定义镜像

是容器化的新手吗?你知道的!

Docker为用户提供了一种快速开发、运输和运行应用程序的方法。我只是刚刚开始了解这个平台的能力。

这篇攻略是为那些像我一样,对Docker和容器化比较陌生的人准备的。我写这篇文章的目的是介绍一种创建和部署Docker容器的简单方法,用一个文件来介绍容器的部署日期。

先决条件和资源考虑

  • 我将会利用 AWS Cloud9用于我的IDE(集成开发环境)。这项服务非常适合那些刚接触Docker的人,他们需要一种快速的方式来管理无服务器的工作流程,并且能够专注于开发而不是安装必要的工具。它预装了流行的SDK、插件、库和编程语言。如果你选择不使用Cloud9,你将不得不安装Docker,以及其他必要的工具。

Cloud9设置。外壳 -创建一个新的EC2实例,实例类型 -t2.micro,平台 -Ubuntu 18.04 LTS

一旦Cloud9环境被创建,在安全组中添加一个入站规则,允许实例访问80端口。

导航到EC2以确定Cloud9实例,然后从仪表板上选择 "安全组 "以添加入站规则。

  • AWS Elastic Container Registry(ECR)--在创建自定义镜像以创建容器后,数据将被保存到ECR。这将提供一个安全的、高度可用的方式来保存和发布容器镜像。

使用Dockerfile创建容器

Dockerfile是一个简单的文本文件,它包含了组装一个自定义镜像所需的所有指令。Dockerfile容易复制且高效,它允许开发人员快速创建容器,而无需在CLI中使用长字符串。

  1. 在Cloud9中,打开一个终端,使用下面的命令提取NGINX镜像。$ docker pull nginx:latest.为了确认镜像被拉出,运行命令$ docker images

这个镜像就是Dockerfile在创建容器的命令中所参考的内容。

2.2. 在你想要的目录下创建Dockerfile,确保保持大写字母,以便Docker能够识别它。(**如果使用终端,请确保你在你想要的目录中使用$ cd ,name-of-directory> ,并使用命令$ touch Dockerfile 来创建文件。)一旦它被创建,打开该文件。

我直接在Cloud9的环境窗格中创建了Docker文件,以确保它在正确的目录中。

3.3.在Docker文件中,你要根据文档为你要构建的镜像提供说明。在本攻略中,我们将使用一个NGINX基础镜像,使用8080端口,以及一个包含容器部署日期的文件。

此外,你将需要创建一个包含提供容器部署日期的代码的index.html。

对于index.html,请随意查看其他改变代码的方法,以使页面独一无二,例如改变颜色和字体

4.在包含Docker文件的目录中,使用$ docker build -t nginx1 .. (我把这个镜像命名为 nginx1,以区别于我从资源库中提取的镜像)构建新的镜像

通过使用$ docker images确认镜像已经建立。

使用$ docker run -d --name <container-name> -p 8080:80 nginx1 ,从这个新的、自定义的镜像中创建容器。这个命令将用一个自定义的名字来创建容器(--如果你不包括--name 选项,容器将被随机分配一个名字),在后台运行容器(-d ),将8080端口从容器暴露给公共互联网的80端口(-p 8080:80 ),并使用自定义镜像(nginx )。

通过使用$ docker ps确认容器已经被创建。

5.通过使用$ curl localhost:8080 ,确认容器文件能够通过指定的端口(8080)访问互联网。

如果成功,输出结果应该和上面的一样,并显示index.html页面代码。

由于我们使用的是Cloud9,我们需要使用运行环境的EC2实例的公共IP,通过在搜索栏中粘贴<public-ip-address-of-instance>:8080 ,在浏览器中测试。

该页面根据Dockerfile的指示正确地运行了脚本!

提示*:对页面进行创造性的处理,改变html中的颜色和样式,以获得一些不同的东西。*

这个图片是index.html的另一个视图,使用了一些样式选项。

通过推送到AWS ECR来保存容器数据

  1. AWS管理控制台,导航到Elastic Container Registry→创建一个存储库→ 选择 "开始"。

选择你想要的可见性设置和存储库的名称,保留其他默认设置,然后点击 "创建存储库"。

选择 "查看推送命令"以访问弹出窗口,该窗口将提供用于推送容器数据到存储库的CLI命令。

复制步骤1的命令并在终端运行。跳过第2步,因为镜像已经建立了。对于第3步,改变命令,在 "docker tag "后加入镜像标签而不是版本库名称。

第4步的输出应该像上面的图片那样。

完成推送命令后,你创建的自定义镜像应该出现在ECR的 "图像"中。

上图显示推送命令成功地将自定义镜像推送到ECR资源库中。

请确保在终端使用$ docker rm -f $(docker ps -a -q) (针对容器)和$ docker rmi -f $(docker images -a -q) (针对任何创建的图像)来删除容器和图像。

现在,图像已经存储在ECR中,可以被拉出来供将来使用了