「Docker関連」の版間の差分
(→ネットワーク関係) |
(→ネットワーク関係) |
||
行76: | 行76: | ||
(追記) 上記はoverlayネットワークがダウンしていたわけではなく、計算機再起動によりswarm通信用のポートが閉じていたためだった。[[DockerでcryoSPARCクラスタ#ホストマシンを再起動した後のクラスタの復旧]] | (追記) 上記はoverlayネットワークがダウンしていたわけではなく、計算機再起動によりswarm通信用のポートが閉じていたためだった。[[DockerでcryoSPARCクラスタ#ホストマシンを再起動した後のクラスタの復旧]] | ||
+ | |||
+ | ==== swarmに参加できない ==== | ||
+ | * 症状 | ||
+ | とあるノードにて | ||
+ | <pre> | ||
+ | > docker swarm join --token *** 192.168.5.88:2377 | ||
+ | </pre> | ||
+ | すると | ||
+ | |||
+ | <pre> | ||
+ | Error response from daemon: unlinkat /var/lib/docker/swarm/certificates: read-only file system | ||
+ | </pre> | ||
+ | と出てきてswarmに参加できない |
2020年11月17日 (火) 11:44時点における版
Dockerを利用して研究、開発の環境を構築する方法を書いていきます。
目次
用語の整理
なかなかに複雑なので用語を整理しておきます。間違っている部分もあるかもしれないので、適宜修正してください。
用語 | 説明 |
---|---|
Docker | |
Docker machine | |
Docker engine | |
Docker desktop | |
Docker CLI | |
Docker compose | |
Docker swarm | 複数のホストマシン上のDockerをネットワークを介して相互接続する機能。 |
Kubernetes (K8s) | |
NVIDIA Docker | |
NVIDIA Container Toolkit |
Dockerのネットワークについて
1つのホストマシン上のDocker上でのコンテナ間の通信や、複数のホストマシン上のDocker上でのコンテナ間の通信、自分の好みのDockerネットワークを組む方法などについて、公式ドキュメント( https://docs.docker.com/network/ )がある。
Docker swarm
複数のホストマシン上のDockerをネットワークを介して相互接続する機能。SwarmでDockerのクラスタを作った暁には、overlayと呼ばれるタイプのDockerネットワークを作成し、そのネットワークへ(複数のホストで動作している)コンテナを参加させることで、ホストをまたいでのコンテナ間の通信が可能となる。他にも色々できる。
https://docs.docker.com/network/ で、Networking overview ⇒ Bridge network tutorial ⇒ Overlay networking tutorial と読み進めると、機能やありがたみが分かりやすいのではないかと思う。
Portainer
DockerのGUI管理ツールです。https://www.portainer.io/
ウェブブラウザでアクセスして管理、確認できます。
トラブルシューティング
ネットワーク関係
コンテナのネットワークが回復していないせいでコンテナが再起動できない
計算機を再起動したあと、ユーザー定義で作成したoverlayネットワークが何やらダウンして、復旧できなかった。
で、計算機の停止前にそのoverlayネットワークに参加していたコンテナに対し、計算機の再起動後にdocker startでコンテナ再起動しようとしたところ、以下のようなエラーが出て再起動してくれなかった。
Error response from daemon: Could not attach to network asuaxn22bff1sq8pqqay2sg64: context deadline exceeded Error: failed to start containers: <コンテナ名>
ネットワークを復活させられればstart可能となるのか、そもそも同じネットワークを復活させられるのか、よくわからなかったが、とりあえず以下のようにしてネットワークからコンテナを切り離し、そのうえでコンテナをstartとすれば、立ち上がってくれるようにはなった。(もちろんネットワークからは抜けたまま)
> docker network disconnect <死んでるoverlayネットワークの名前> <コンテナ名> > docker start <コンテナ名>
当該コンテナがどんなネットワークに属しているかは、
> docker inspect <コンテナ名>
で、"Networks"を見ればよい。(デフォルトで参加するネットワークは"bridge"で、それ以外を見ればよい)
(追記) 上記はoverlayネットワークがダウンしていたわけではなく、計算機再起動によりswarm通信用のポートが閉じていたためだった。DockerでcryoSPARCクラスタ#ホストマシンを再起動した後のクラスタの復旧
swarmに参加できない
- 症状
とあるノードにて
> docker swarm join --token *** 192.168.5.88:2377
すると
Error response from daemon: unlinkat /var/lib/docker/swarm/certificates: read-only file system
と出てきてswarmに参加できない