web-dev-qa-db-ja.com

権限拒否エラーのためにDocker Stackタスクが拒否されました

docker stack deployコマンドを使用してスタック(1つのサービスを含む)をデプロイし、swarm上のアプリケーションから2つのインスタンスを実行しようとしました!これが私のdocker-composeファイルです:

version: "3"
services:
  server:
    image: makbn/thumbnailer-server:v1
    deploy:
      replicas: 2
      update_config:
        parallelism: 2
      resources:
        limits:
          cpus: "0.1"
          memory: 1024M
      restart_policy:
        condition: on-failure
    ports:
      - 8080:8080
    networks: 
      - server_network
networks: 
  server_network:

Sudo docker stack deploy -c ./docker-compose.yml tsコマンドを実行した後、私のスタックはswarmに正常にデプロイされましたが、ここに私のdocker stack ps ts出力があります:

ID                  NAME                IMAGE                         NODE                DESIRED STATE       CURRENT STATE             ERROR                              PORTS
8zmjp6wt47ki        ts_server.1         makbn/thumbnailer-server:v1   fanap9-lp           Ready               Rejected 2 seconds ago    "mkdir /var/lib/docker: permis…"   
88vizpnabbi8         \_ ts_server.1     makbn/thumbnailer-server:v1   fanap9-lp           Shutdown            Rejected 7 seconds ago    "mkdir /var/lib/docker: permis…"   
609hl7hy7tnu         \_ ts_server.1     makbn/thumbnailer-server:v1   fanap9-lp           Shutdown            Rejected 12 seconds ago   "mkdir /var/lib/docker: permis…"   
gif8fvbgdhpy         \_ ts_server.1     makbn/thumbnailer-server:v1   fanap9-lp           Shutdown            Rejected 17 seconds ago   "mkdir /var/lib/docker: permis…"   
x60x9c6albe5         \_ ts_server.1     makbn/thumbnailer-server:v1   fanap9-lp           Shutdown            Rejected 22 seconds ago   "mkdir /var/lib/docker: permis…"   
ugvbw1gpdp8e        ts_server.2         makbn/thumbnailer-server:v1   fanap9-lp           Ready               Rejected 2 seconds ago    "mkdir /var/lib/docker: permis…"   
p34x1kp55ch8         \_ ts_server.2     makbn/thumbnailer-server:v1   fanap9-lp           Shutdown            Rejected 7 seconds ago    "mkdir /var/lib/docker: permis…"   
3exxflukrl4y         \_ ts_server.2     makbn/thumbnailer-server:v1   fanap9-lp           Shutdown            Rejected 12 seconds ago   "mkdir /var/lib/docker: permis…"   
ud83xfj5nefj         \_ ts_server.2     makbn/thumbnailer-server:v1   fanap9-lp           Shutdown            Rejected 17 seconds ago   "mkdir /var/lib/docker: permis…"   
ws35na8up793         \_ ts_server.2     makbn/thumbnailer-server:v1   fanap9-lp           Shutdown            Rejected 22 seconds ago   "mkdir /var/lib/docker: permis…"   

そして、完全なエラーメッセージはmkdir/var/lib/docker:権限が拒否されました

もう1つの問題は、docker service createコマンドサービスをデプロイして正常に実行してスタックを作成しようとしたが、ローカルホストからサービスにアクセスできないことです。 2つの質問があります。

  1. 構成ファイルからのデプロイスタックの問題と、なぜmkdir/var/lib/docker:権限が拒否されましたエラーが発生するのですか?
  2. ホストからアクセスできるようにサービスネットワークを構成する方法
10
Mehdi Akbarian

(注:snap経由でdockerをインストールした可能性があるユーザーにのみ関連します)

snapにdockerをインストールしたため、この問題が発生しました。つまり、docker-composeがdockerのインストールについて混乱していました。私のシステムが実際に/var/lib/dockerでdockerを使用していたため、/snap/bin/dockerはファイル権限エラーを出していました

これが当てはまるかどうかを確認するには、which dockerを実行します。 /usr/bin/dockerが返された場合は、通常のアプリのインストールが完了しています。パス/snap/で何かが返された場合は、snap dockerパッケージからインストールされていることを意味します(これは維持されなくなりました。参照: https://github.com/docker/docker-snap

この問題を修正するために、最初にsnap remove dockerを使用してsnap docker installをアンインストールし、次にdockerセットアップ手順 https://docs.docker.com/install/linux)でインストールしました/ docker-ce/ubuntu /#docker-ee-customers 。それをしたら、問題なくスタックをデプロイできました。

代わりにdocker snap install dockerのアイデアが頭に浮かびましたが、リポジトリをセットアップしてSudo apt install docker.ioを実行してインストールする方法が適しているようです。

7
Robert Townley

数時間前にこの問題のトラブルシューティングを行っていましたが、同じPermission Deniedエラーが原因でコンテナが拒否されてシャットダウンされたと表示されました。また、サービスを手動で作成してスケーリングすることはできますが、.ymlで同じ結果を達成することはできません。

Getting Started Guide に続いて、docker-compose.ymlの例ではversion: "3"を使用していますが、対応するCompose File Format番号と一致すると想定されているとは言わないでください。私の番号は、インストールしたDockerのバージョンに基づいて「3.7」になり、docker-compose.ymlで変更した後、docker stack deploy -c docker-compose.yml some-nameを介してコンテナーを意図どおりに複製できました。

Compose File Format(CFF):Docker Engine Release(DCR)

CFF     DCR
3.7     18.06.0+
3.6     18.02.0+
3.5     17.12.0+
3.4     17.09.0+
3.3     17.06.0+
3.2     17.04.0+
3.1     1.13.1+
3.0     1.13.0+
2.4     17.12.0+
2.3     17.06.0+
2.2     1.13.0+
2.1     1.12.0+
2.0     1.10.0+
1.0     1.9.1.+

参照ドキュメントが利用可能( ここ

無効から有効への変更の例

# From the Example
version: "3"
services:
  web:
    image: username/repo:tag

# What's actually required (in my case, because I'm using docker version 18.09.2)
version: "3.7"
services:
  web:
    image: username/repo:tag

変更後の結果

owner@test_server:~/myyml$ docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE                               PORTS
baxip2g6xgzy        first-swarm_web     replicated          5/5                 [username]/getting-started:my-serv   *:4000->80/tcp

owner@test_server:~/myyml$ docker service ps first-swarm_web
ID                  NAME                IMAGE                               NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
ss6jn07htkhp        first-swarm_web.1   [username]/getting-started:my-serv   test_server         Running             Running 37 minutes ago                       
n5eael5ae3jl        first-swarm_web.2   [username]/getting-started:my-serv   test_server         Running             Running 37 minutes ago                       
kzb3l1hzdpet        first-swarm_web.3   [username]/getting-started:my-serv   test_server         Running             Running 37 minutes ago                       
6ijgoebvhhdg        first-swarm_web.4   [username]/getting-started:my-serv   test_server         Running             Running 37 minutes ago                       
h0mbz1fp1id6        first-swarm_web.5   [username]/getting-started:my-serv   test_server         Running             Running 37 minutes ago
0
saniboy