web-dev-qa-db-ja.com

Dockerスタックデプロイの結果、「そのようなイメージエラーはありません」

Docker Swarmを使用していますが、docker-composeを使用してサービスをデプロイしたいと考えています。私のサービスはmyuser/myrepo:mytagと呼ばれるカスタムイメージを使用しており、これをDocker-Hubにプライベートリポジトリに正常にデプロイします。

私のdocker-composeは次のようになります。

version: "3.3"

services:

  myservice:
    image: myuser/myrepo:mytag
    ports:
      - "8080:8080"

実行する前に、docker pull myuser/myrepo:mytagで画像を正常にプルしました。

docker stack deploy -c docker-compose.yml myappを実行すると、常に"No such image: myuser/myrepo:mytag"というエラーが表示されます。

興味深いことに、docker-compose up(つまり、スウォームモードなし)のみを使用して同じファイルを実行すると、すべてが正常に機能し、サービスが開始されます。

なぜこれが失敗するのか本当に分かりませんか?既にdocker system Pruneでdockerをクリーンアップしてから、イメージを拒否しましたが、成功しませんでした。

15
user2350644

すでに解決策が見つかりました。私の画像はプライベートリポジトリでホストされています。 swarm manager(コマンドを実行した場所)の他に、実行中のswarmワーカーがいました。

docker stack deploy -c docker-compose.yml myapp dockerを実行したときに、サービスをワーカーノードに展開しました(思ったとおりのマネージャーノードではありません)。ワーカーノードでは、Dockerにはプライベートリポジトリからイメージをプルするための資格情報がありませんでした。したがって、これを修正するには、フラグ--with-registry-auth(リポジトリの資格情報をワーカーノードにプッシュする)を渡すか、イメージが存在するノードにサービスがデプロイされていることを確認します。

参照: https://docs.docker.com/engine/reference/commandline/deploy/

25
user2350644

企業のファイアウォールの背後にあるMacでも同様の問題がありました。

インターネットに直接接続して初めて解決できました。

更新するだけで、VPNを使用している間、プロキシ設定なしでインターネットにアクセスでき、docker runを使用して画像をダウンロード(ドッカー)できます。問題はdocker-composeのみにあります。

VMのresolv.confでネームサーバーを8.8.8.8に変更しようとしましたが、問題は解決しませんでした。

0
ghitesh