发布于 2025-12-10 2 阅读
0

创建用于 Amazon ECR 的容器映像

创建用于 Amazon ECR 的容器映像

Amazon Elastic Container Registry (Amazon ECR) 是一项 AWS 托管的容器镜像注册服务,安全、可扩展且可靠。Amazon ECR 使用 AWS IAM 支持具有基于资源权限的私有存储库。这样,指定的用户或 Amazon EC2 实例就可以访问您的容器存储库和镜像。

本文旨在演示如何创建 Docker 镜像并将其推送到 Amazon ECR(一个容器注册表)。我假设您对 Docker 的概念及其工作原理有基本的了解。

先决条件

在开始之前,请确保您已具备以下条件:

  • 设置您的 AWS 账户。

  • 完成 Amazon ECR 设置步骤。您可以找到有关如何设置 Amazon ECR 的信息。

  • 您使用的用户应具有访问和使用 Amazon ECR 的 IAM 权限。要了解更多信息,请参阅

  • 您的机器上应该已经安装了 Docker。

  • 最后,您还应该安装并配置 AWS CLI。

创建 Docker 镜像

在本节中,我们将为一个简单的 Web 应用程序创建一个 Docker 镜像,并在本地机器上测试该镜像,然后将其推送到容器注册表 Amazon ECR(与 DockerHub 非常相似)。

创建一个简单的 Web 应用程序的 Docker 镜像。

  • 第一步是创建一个名为Dockerfile的文件。Dockerfile 是一个文本文档,其中包含用户可以在命令行上调用以组装镜像的所有命令。
touch Dockerfile
Enter fullscreen mode Exit fullscreen mode

图片描述

  • 现在将继续编辑 Dockerfile:
vim Dockerfile
Enter fullscreen mode Exit fullscreen mode

添加以下代码:

FROM ubuntu:18.04 

# Install dependencies 
RUN apt-get update && \
  apt-get -y install apache2 

# Install apache and write hello world message 
RUN echo 'Hello World!' > /var/www/html/index.html 

# Configure apache 
RUN echo '. /etc/apache2/envvars' > /root/run_apache.sh && \ 
  echo 'mkdir -p /var/run/apache2' >> /root/run_apache.sh && \ 
  echo 'mkdir -p /var/lock/apache2' >> /root/run_apache.sh && \
  echo '/usr/sbin/apache2 -D FOREGROUND' >> /root/run_apache.sh && \ 
  chmod 755 /root/run_apache.sh 

EXPOSE 80 

CMD /root/run_apache.sh
Enter fullscreen mode Exit fullscreen mode

我认为有必要谈谈上面的代码。此 Dockerfile 使用的是 Ubuntu 18.04 镜像。

RUN指令将更新包缓存,它将为 Web 服务器安装一些依赖的软件包,然后将“Hello World”语句打印到 Web 服务器的文档根目录。

EXPOSE指示容器将暴露到的端口(80)。而CMD启动 Web 服务器。

  • 接下来我们将构建Docker 镜像:
docker build -t hello-world .
Enter fullscreen mode Exit fullscreen mode

图片描述

  • 现在我们已经构建了图像,我们现在可以继续验证图像是否正确创建:
docker images --filter reference=hello-world 
Enter fullscreen mode Exit fullscreen mode

图片描述

  • 然后在-p 80:80上运行docker 镜像
docker run -t -i -p 80:80 hello-world
Enter fullscreen mode Exit fullscreen mode

图片描述

  • 为了确认我们的运行命令是否成功,我们将浏览器指向http://localhost/并查看带有“Hello World!”语句的网页。

图片描述

  • 现在我们的镜像已经构建并成功运行,我们可以通过输入Ctrl + c来停止 Docker 容器。

现在是时候将图像推送到 Amazon Elastic Container Registry 了。

Amazon ECR 是一项托管的 AWS Docker 镜像仓库服务。您可以使用 Docker CLI 推送、拉取和管理 Amazon ECR 存储库中的镜像。

标记您的图像并将其推送到 Amazon ECR。
  • 首先,我们必须创建一个 Amazon ECR 存储库来保存我们的hello-world图像。
aws ecr create-repository --repository-name hello-repository --region region
Enter fullscreen mode Exit fullscreen mode

图片描述

需要注意以下几点:

上面输出中的 repositoryUri。其次 ,将region替换为您的 AWS 区域,在我上面的例子中,我使用了us -east-1区域。

  • 下一步是使用上一步中的repositoryUri值标记hello-world图像。
docker tag hello-world aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository
Enter fullscreen mode Exit fullscreen mode

图片描述

  • 此时,我们必须登录到我们的注册表,这将要求我们获取我们的登录密码凭证(使用aws ecr get-login-password)。
docker login -u AWS -p $(aws ecr get-login-password --region REGION) aws_account_id.dkr.REGION.amazonaws.com
Enter fullscreen mode Exit fullscreen mode

图片描述

我们应该看到登录成功的输出。

  • 使用前面步骤中的 repositoryUri 值将图像推送到我们的 Amazon ECR。
docker push aws_account_id.dkr.ecr.region.amazonaws.com/hello-repository
Enter fullscreen mode Exit fullscreen mode

图片描述

我们还可以通过AWS控制台确认:

图片描述

是时候清理我们的资源以节省成本了:

为了清理我们的资源,我们必须删除前面步骤中创建的存储库:

aws ecr delete-repository --repository-name hello-repository --region region --force
Enter fullscreen mode Exit fullscreen mode

图片描述

至此我们已经结束了这篇文章,我希望它能够对大家有很大的帮助。

欢迎通过Linkedin与我联系

文章来源:https://dev.to/oloruntobiolurombi/creating-a-container-image-for-use-on-amazon-ecr-3e3