如何从github中提取docker映像并在ec2中构建映像?

如何从github中提取docker映像并在ec2中构建映像?,docker,github,Docker,Github,我的实际需求是从GitHub中提取docker映像,并在ec2实例中构建一个docker映像,然后将该映像推送到ecr。所以,我只是想通过请求帮助从git中提取图像来明确我的第一步,这对所有这一切来说都是全新的。要澄清一些要点: Github:它是一种基于web的托管服务,用于使用git进行版本控制。因此,您无法从Github中提取docker映像。 要构建Docker映像,需要Dockerfile。因此,您可以分叉具有此Dockerfile的GitHub项目 然后,要在ec2上构建它,您可以在

我的实际需求是从GitHub中提取docker映像,并在ec2实例中构建一个docker映像,然后将该映像推送到ecr。所以,我只是想通过请求帮助从git中提取图像来明确我的第一步,这对所有这一切来说都是全新的。

要澄清一些要点: Github:它是一种基于web的托管服务,用于使用git进行版本控制。因此,您无法从Github中提取docker映像。 要构建Docker映像,需要Dockerfile。因此,您可以分叉具有此Dockerfile的GitHub项目

然后,要在ec2上构建它,您可以在ec2服务器上签出包含Dockerfile的项目,并使用以下方法构建它: 然后,您可以使用以下命令将其推送到任何注册表:

让我们浏览一下您在需求中询问的每个步骤:

  • 从GitHub拉取-您不会从这里拉取docker映像,但是您可以从这里拉取Dockerfile,它将用于构建映像。执行此操作的命令与克隆任何其他存储库一样:
    gitclone
  • 在ec2上构建映像-首先需要在ec2实例上安装docker。假设您在ec2实例上运行Ubuntu,请按照Docker页面()上的说明操作。安装docker后,导航到包含Dockerfile的目录(从git克隆),然后键入
    docker build--标记mytag
  • 将映像推送到ecr—为此,您需要在机箱上安装amazon CLI,并且需要AWS IAM提供的访问密钥ID和机密访问密钥。一旦有了这些,就可以通过将它们存储为环境变量来配置连接,或者通过键入
    aws configure
    并输入它们来配置连接。配置凭据后,通过键入aws ECR get login--no include email登录到ECR,然后复制/粘贴它给您的命令。(您也可以在其周围加上`以跳过复制步骤)。这将允许您使用docker push推送至ecr
    Github不存储图像。它只存储Dockerfiles,您必须自己构建它帮助了我,谢谢!在这之后,我需要自动化所有这些,我想通过使用Jenkins我可以自动化这些,我需要一个脚本来自动化这些,还是Jenkins可以通过docker使用的命令来处理这些?我知道这是一个愚蠢的问题,实际需求是,如果对Github中的image/Dockerfile进行任何更改,它应该会触发jenkins构建新映像的过程,jenkins应该将其推送到ECR,因为我刚刚了解这个过程,我试图通过步骤了解它Github是git存储库,所以您可以使用jenkins的“轮询scm”功能定期检查GitHub的更改。在进行更改时,您将启动一个新的Jenkins作业,该作业将完成上面的所有步骤(签出git、构建docker、推到ECR)。如果您的EC2是一个持久的Jenkins从机,那么您只需要安装docker和aws cli一次。您应该使用Jenkins凭据存储作为您的访问密钥和密钥,这样它们就不会以明文形式出现在您的工作中。我这里有两个问题,1)这样我可以使用轮询scm检查dockerfile中的更改?2) “jenkins凭证存储您的访问密钥和密钥”是指为ECR生成的身份验证密钥?或任何其他凭证?Poll SCM通常会检查您的回购协议是否有更改。如果要使其仅在dockerfile更改时触发,则可以设置包含和排除规则。对于凭证存储,我指的是您的访问密钥id和AWS的秘密访问密钥,因为您需要在每次构建时登录到ecr。