簡體   English   中英

如何使用 Codebuild 構建 Docker 映像?

[英]How can I build a Docker image with Codebuild?

我想從 Dockerfile 構建 docker 映像,並將此映像發布到 AWS ECR(Docker 注冊表)。

In order to succeed, I need to have access to docker build and docker push from within the Codebuild container, which is problematic (installing docker inside a docker container causes errors such as Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? )。

請問如何繼續做這樣的事情? 有什么方法可以使用 codebuild 從 Dockerfile 構建 Docker 圖像?

我找到了解決方案。 按照此鏈接獲取代碼,不要忘記在“環境”配置屏幕中啟用“特權”。

CodeDeploy 的Docker 示例列出了以下步驟:

  • 對於圖像,選擇aws/codebuild/standard:4.0
  • 因為您使用此構建項目來構建 Docker 映像,所以 select Privileged

並提供以下說明:

筆記

默認情況下,Docker 容器不允許訪問任何設備。 特權模式授予構建項目的 Docker 容器對所有設備的訪問權限。 有關詳細信息,請參閱 Docker 文檔網站上的運行時特權和 Linux 功能。

如果您仍有問題, AWS::CodeBuild::Project Environment的 CloudFormation 文檔的PriviledgedMode部分包含以下用於初始化 Docker 守護程序的步驟:

您可以在構建的安裝階段初始化 Docker 守護程序,方法是將以下一組命令添加到構建規范文件的安裝階段:

如果操作系統的基礎鏡像是 Ubuntu Linux:

- nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://0.0.0.0:2375 --storage-driver=overlay&

- timeout 15 sh -c "until docker info; do echo.; sleep 1; done"

如果操作系統的基礎鏡像是 Alpine Linux 並且前面的命令不起作用,則在 timeout 中添加 -t 參數:

- nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://0.0.0.0:2375 --storage-driver=overlay&

- timeout -t 15 sh -c "until docker info; do echo.; sleep 1; done"

只需單擊 CodeBuild 設置特權模式中的“特權模式”按鈕

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM