Docker Compose est un outil permettant de définir et d'exécuter des applications Docker multi-conteneurs. Il permet aux développeurs de définir leur pile d'applications sous forme de fichier YAML, ce qui facilite la création d'environnements complexes avec seulement quelques commandes. Cependant, utiliser Docker Compose avec un référentiel privé peut s'avérer un peu délicat. Dans cet article, nous explorerons comment utiliser des référentiels privés avec Docker Compose, y compris différentes méthodes d'authentification et leurs exemples.
Les images Docker peuvent être stockées dans des référentiels privés ou publics. Les référentiels publics sont ouverts à tous, tandis que les référentiels privés nécessitent une authentification pour y accéder. Les référentiels privés sont généralement utilisés pour les images contenant du code propriétaire ou des données qui ne devraient pas être accessibles au public. Pour accéder à un référentiel privé, vous devez fournir des informations d'authentification.
Lorsque vous utilisez Docker Compose avec un référentiel privé, vous devez vous assurer que le démon Docker exécuté sur la machine hôte peut accéder au référentiel. Il existe plusieurs façons d'y parvenir en fonction de la méthode d'authentification utilisée par le référentiel.
Le démon Docker peut utiliser le fichier config.json pour stocker les informations d'authentification. Ce fichier peut être créé manuellement ou à l'aide de la commande docker login. Pour utiliser le fichier config.json dans Docker Compose, vous devez le monter en tant que volume dans le conteneur. Voici un exemple :
version: '3.8' services: app: image: myprivaterepo/myapp volumes: - $HOME/.docker/config.json:/root/.docker/config.json
Dans cet exemple, nous montons le fichier config.json situé dans le répertoire personnel de l'utilisateur dans le répertoire racine du conteneur. Cela permet au démon Docker exécuté à l'intérieur du conteneur d'accéder aux informations d'identification stockées dans le fichier.
Certains référentiels privés prennent en charge l'authentification via des variables d'environnement. Cette méthode est utile lorsque vous ne souhaitez pas exposer vos informations d'identification dans un fichier de configuration −
.version: '3.8' services: app: image: myprivaterepo/myapp environment: - REGISTRY_USERNAME=username - REGISTRY_PASSWORD=password
Dans cet exemple, nous définissons les variables d'environnement REGISTRY_USERNAME et REGISTRY_PASSWORD comme informations d'authentification. Le démon Docker exécuté à l'intérieur du conteneur peut utiliser ces variables pour s'authentifier auprès du référentiel.
Docker Compose vous permet de définir des variables d'environnement dans un fichier .env, qui est automatiquement chargé lorsque vous exécutez la commande docker-compose. Voici un exemple −
version: '3.8' services: app: image: myprivaterepo/myapp env_file: - .env
Dans cet exemple, nous utilisons la directive env_file pour charger les variables d'environnement définies dans le fichier .env. Voici l'exemple de contenu du fichier .env :
REGISTRY_USERNAME=username REGISTRY_PASSWORD=password
Cette méthode est similaire à l'utilisation de variables d'environnement directement dans le fichier YAML, mais elle vous permet de conserver les informations d'identification dans un fichier séparé.
Supposons que nous ayons un référentiel privé sur Docker Hub et que nous souhaitions l'utiliser dans un fichier Docker Compose. Nous allons d'abord créer un fichier config.json contenant les informations d'authentification −
{ "auths": { "https://index.docker.io/v1/": { "auth": "dXNlcm5hbWU6cGFzc3dvcmQ=" } } }
Dans cet exemple, nous utilisons une chaîne codée en base64 comme informations d'authentification. La chaîne se compose d'un nom d'utilisateur et d'un mot de passe séparés par deux points et codés
Maintenant, créons un fichier Docker Compose en utilisant notre référentiel privé −
version: '3.8' services: app: image: myprivaterepo/myapp volumes: - $HOME/.docker/config.json:/root/.docker/config.json
Dans cet exemple, nous définissons un service appelé « app » qui utilise l'image « myprivaterepo/myapp » de notre référentiel privé. Nous montons également le fichier config.json en tant que volume dans le conteneur afin que le démon Docker exécuté à l'intérieur du conteneur puisse accéder aux informations d'identification.
Pour exécuter ce fichier Docker Compose, nous pouvons utiliser la commande suivante −
docker-compose up
Cela démarrera le service « app » et extraira l'image de notre référentiel privé.
Supposons que nous ayons un référentiel privé hébergé sur un registre auto-hébergé et que nous souhaitions l'utiliser dans un fichier Docker Compose. Nous allons commencer par définir les informations d'authentification en tant que variables d'environnement -
export REGISTRY_USERNAME=username export REGISTRY_PASSWORD=password
Maintenant, créons un fichier Docker Compose en utilisant notre référentiel privé −
version: '3.8' services: app: image: myprivaterepo/myapp environment: - REGISTRY_USERNAME=$REGISTRY_USERNAME - REGISTRY_PASSWORD=$REGISTRY_PASSWORD
Dans cet exemple, nous définissons un service appelé « app » qui utilise l'image « myprivaterepo/myapp » de notre référentiel privé. Nous définissons également les variables d'environnement REGISTRY_USERNAME et REGISTRY_PASSWORD pour les informations d'authentification.
Pour exécuter ce fichier Docker Compose, nous pouvons utiliser la commande suivante −
docker-compose up
Cela démarrera le service « app » et extraira l'image de notre référentiel privé.
Dépôt privé avec fichier Docker Compose .env
Supposons que nous ayons un référentiel privé hébergé sur un registre auto-hébergé et que nous souhaitions l'utiliser dans un fichier Docker Compose. Nous allons d'abord créer un fichier .env contenant nos identifiants d'authentification −
REGISTRY_USERNAME=username REGISTRY_PASSWORD=password
Maintenant, créons un fichier Docker Compose en utilisant notre référentiel privé −
version: '3.8' services: app: image: myprivaterepo/myapp env_file: - .env
Dans cet exemple, nous définissons un service appelé « app » qui utilise l'image « myprivaterepo/myapp » de notre référentiel privé. Nous avons également utilisé la directive env_file pour charger les variables d'environnement définies dans le fichier .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中使用您的镜像。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!