Docker Compose 是一個用於定義和運行多容器 Docker 應用程式的工具。它允許開發人員將他們的應用程式堆疊定義為一個 YAML 文件,只需幾個命令就可以輕鬆創建複雜的環境。然而,使用 Docker Compose 與私有倉庫可能會有些棘手。在本文中,我們將探討如何在 Docker Compose 中使用私有倉庫,包括不同的驗證方法及其範例。
Docker映像可以儲存在私有或公用倉庫。公共倉庫對所有人開放,而私有倉庫需要身份驗證才能存取。私有倉庫通常用於包含專有程式碼或資料的鏡像,這些鏡像不應該公開可用。若要存取私有倉庫,您需要提供身分驗證憑證。
使用Docker Compose與私人儲存庫時,您需要確保執行在主機上的Docker守護程式可以存取儲存庫。根據儲存庫使用的身份驗證方法,有幾種方法可以實現此目的。
Docker守護程式可以使用config.json檔案來儲存身份驗證憑證。這個檔案可以手動創建,也可以使用docker login指令創建。要在Docker Compose中使用config.json文件,您需要將其作為一個磁碟區掛載到容器中。以下是一個範例:
version: '3.8' services: app: image: myprivaterepo/myapp volumes: - $HOME/.docker/config.json:/root/.docker/config.json
在這個範例中,我們將位於使用者的主目錄中的config.json檔案掛載到容器的根目錄。這樣,容器內運行的Docker守護程序就可以存取儲存在檔案中的憑證。
Some private repositories support authentication via environment variables. This method is useful when you don't want to expose your credentials in a config file. Here's an example −
version: '3.8' services: app: image: myprivaterepo/myapp environment: - REGISTRY_USERNAME=username - REGISTRY_PASSWORD=password###在這個範例中,我們將REGISTRY_USERNAME和REGISTRY_PASSWORD環境變數設定為驗證憑證。容器內執行的Docker守護程序可以使用這些變數來與倉庫進行身份驗證。 ### ###Docker Compose .env 檔案### ###Docker Compose允許您在.env檔案中定義環境變量,當您執行docker-compose命令時,該檔案會自動載入。這是一個範例−###
version: '3.8' services: app: image: myprivaterepo/myapp env_file: - .env###在這個範例中,我們使用env_file指令來載入在.env檔案中定義的環境變數。下面是.env檔案的範例內容:###
REGISTRY_USERNAME=username REGISTRY_PASSWORD=password###這種方法與直接在YAML檔案中使用環境變數類似,但它允許您將憑證保留在單獨的檔案中。 ### ###例子### ###私有倉庫與Docker Config.json檔案### ###假設我們在Docker Hub上有一個私有倉庫,並且我們想要在Docker Compose檔案中使用它。我們將首先建立一個包含身份驗證憑證的config.json檔案 −###
{ "auths": { "https://index.docker.io/v1/": { "auth": "dXNlcm5hbWU6cGFzc3dvcmQ=" } } }###在這個範例中,我們使用一個base64編碼的字串作為我們的驗證憑證。字串由使用者名稱和密碼以冒號分隔並進行編碼### ###現在,讓我們建立一個使用我們的私有倉庫的Docker Compose檔案−####
version: '3.8' services: app: image: myprivaterepo/myapp volumes: - $HOME/.docker/config.json:/root/.docker/config.json###在這個例子中,我們定義了一個名為"app"的服務,它使用來自我們私有倉庫的鏡像"myprivaterepo/myapp"。我們也將config.json檔案作為一個磁碟區掛載到容器中,以便容器內執行的Docker守護程式可以存取憑證。 ### ###要執行此Docker Compose文件,我們可以使用以下命令−###
docker-compose up###這將啟動 "app" 服務並從我們的私人倉庫拉取鏡像。 ### ###私有儲存庫與環境變數### ###假設我們有一個託管在自託管註冊表上的私人儲存庫,並且我們想在Docker Compose檔案中使用它。我們將從將身份驗證憑證設定為環境變數開始 -###
export REGISTRY_USERNAME=username export REGISTRY_PASSWORD=password###現在,讓我們建立一個使用我們的私有倉庫的Docker Compose檔案−####
version: '3.8' services: app: image: myprivaterepo/myapp environment: - REGISTRY_USERNAME=$REGISTRY_USERNAME - REGISTRY_PASSWORD=$REGISTRY_PASSWORD###在這個例子中,我們定義了一個名為"app"的服務,它使用來自我們私有倉庫的鏡像"myprivaterepo/myapp"。我們也設定了REGISTRY_USERNAME和REGISTRY_PASSWORD環境變量,用於身份驗證憑證。 ### ###要執行此Docker Compose文件,我們可以使用以下命令−###
docker-compose up###這將啟動 "app" 服務並從我們的私人倉庫拉取鏡像。 ### ### ######私有倉庫與Docker Compose .env檔####### ### ###假設我們有一個託管在自託管註冊表上的私人倉庫,並且我們想在Docker Compose檔案中使用它。我們將首先建立一個包含我們的身份驗證憑證的.env檔 −###
REGISTRY_USERNAME=username REGISTRY_PASSWORD=password###現在,讓我們建立一個使用我們的私有倉庫的Docker Compose檔案−####
version: '3.8' services: app: image: myprivaterepo/myapp env_file: - .env###在這個例子中,我們定義了一個名為"app"的服務,它使用來自我們私有倉庫的鏡像"myprivaterepo/myapp"。我們也使用了env_file指令來載入在.env檔中定義的環境變數。 ###
要运行此Docker Compose文件,我们可以使用以下命令−
docker-compose up
这将启动 "app" 服务并从我们的私有仓库拉取镜像。
如果您在一个swarm上运行Docker,您可以使用Docker配置来存储您的身份验证凭据。要在Docker Compose中使用Docker配置,我们需要创建一个包含我们身份验证凭据的配置文件−
echo "password" | docker secret create registry_password - echo "username" | docker secret create registry_username -
现在,让我们创建一个使用我们的私有仓库的Docker Compose文件−
version: '3.8' services: app: image: myprivaterepo/myapp secrets: - registry_username - registry_password
In this example, we're defining a service called "app" that uses image "myprivaterepo/myapp" from our private repository. We're also using secrets directive to load registry_username and registry_password secrets into container.
要运行此Docker Compose文件,我们可以使用以下命令−
docker-compose up
这将启动 "app" 服务并从我们的私有仓库拉取镜像。
如果您正在构建使用私有仓库的Docker镜像,您可以使用Docker build来对私有仓库进行身份验证。以下是一个示例 -
docker build --build-arg REGISTRY_USERNAME=username --build-arg REGISTRY_PASSWORD=password -t myprivaterepo/myapp .
在这个示例中,我们正在构建一个名为"myprivaterepo/myapp"的镜像,该镜像使用了一个私有仓库。我们通过 --build-arg 参数将我们的身份验证凭据作为构建参数传递。
一旦镜像构建完成,我们可以在Docker Compose文件中使用它−
version: '3.8' services: app: image: myprivaterepo/myapp
在这个例子中,我们定义了一个名为"app"的服务,它使用来自我们私有仓库的镜像"myprivaterepo/myapp"。
要运行此Docker Compose文件,我们可以使用以下命令−
docker-compose up
这将启动“app”服务,并使用来自我们私有仓库的镜像。
使用Docker Compose与私有仓库可能会有一些挑战,但是有几种可用的身份验证方法可以使访问您的镜像变得更容易。在本文中,我们探讨了如何使用Docker Compose与私有仓库,涵盖了不同的身份验证方法及其示例。通过按照这些示例,您可以轻松地对私有仓库进行身份验证,并在Docker Compose中使用您的镜像。
以上是使用docker-compose與私人倉庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!