web-dev-qa-db-ja.com

Dockerはスタックのセットコンテナー名を作成します

小さなスタックを [〜#〜] ucp [〜#〜] にデプロイしています

私が直面している問題の1つは、service1のコンテナーに名前を付けることです。

mycustomimageforservice2によって使用されるため、コンテナーの静的名が必要です

container_nameオプションは、(バージョン3)Composeファイルを含むスウォームモードでスタックをデプロイする場合は無視されます。

version:作成ファイルを使用する必要があります。

version: "3"
services:

  service1:
    image: dockerhub/service1
    ports: 
      - "8080:8080"
    container_name: service1container
    networks:
      - mynet

  service2:
    image: myrepo/mycustomimageforservice2
    networks:
      - mynet
    restart: on-failure

networks:
  mynet:

私のオプションは何ですか?

8
Igor L.

(レプリカの数を更新することにより)サービスのスケーリングなどを許可するように設計されているように、composeでcontainerNameを強制することはできません。これは名前では機能しません。 1つのサービスは、代わりにservicename( http:// serviceName:internalServicePort )を使用して他のサービスにアクセスでき、Dockerが残りの作業を行います(実際のコンテナーアドレスへの解決、レプリカ間の負荷分散など)。 。)。

これは、オーバーレイであるデフォルトのネットワークタイプで動作します

6
herm

Docker-compose.ymlファイルでサービスをリンクする問題に直面することができます。何かのようなもの:

version: "3"
services:

  service1:
    image: dockerhub/service1
    ports: 
      - "8080:8080"
    networks:
      - mynet

  service2:
    image: myrepo/mycustomimageforservice2
    networks:
      - mynet
    restart: on-failure
    links:
      - service1

networks:
  mynet:

Docker-compose.ymlでリンク引数を使用すると、コンテナー名を使用して一部のサービスが別のサービスにアクセスできるようになります。この場合、service2は、linksパラメーターのおかげでservice1への接続を確立します。なぜネットワークを使用するのかはわかりませんが、linksパラメータを指定する必要はありません。

1
Yor Jaggy

バージョン3を使用する必要があるが、swarmsを使用しない場合は、コマンドに--compatibilityを追加できます。

0
Joris Boschmans