Dockerコンテナ共通のトラブルシューティングと対処法
Dockerコンテナ共通のトラブルシューティングと対処法
<ブロッククオートこの記事は、社内フォーラムの投稿から引用しています。
<ブロッククオート
Dockerは比較的簡単に使えるコンテナで、いくつかの方法で情報を取得することができます。
1. docker run でコマンドを実行し、おそらく情報を返します。
2、docker logsでログを取得し、対象のフィルタリングを行う
3, systemctl status docker で docker サービスの状態を確認します。
4. journalctl -u docker.serviceでログを表示する。
以下は、ドッカーコンテナクラスの問題の失敗を9つのカテゴリーに分類してまとめたものです。
<ブロッククオートI. スタートアップクラスの失敗
1. docker: unix:///var/run/docker.sock にある Docker デーモンに接続できません。ドッカーデーモンは起動していますか?
原因は?Dockerが正常に起動しない
解決方法
systemctl start docker
2. unix ソケットを作成できない /var/run/docker.sock: はディレクトリです。
理由:docker.sock が作成できないため
解決方法
rm -rf /var/run/docker.sock
その後、dockerを再起動します。
3. docker.service のジョブに失敗しました。Docker アプリケーションの起動に失敗しました。
原因:Selinuxに起因するもの
解決方法
/etc/sysconfig/selinux , selinuxの値をdisabledに変更します。
解決するためにdockerを再起動する
4. docker: デーモンからエラー応答がありました。
/var/lib/docker/overlay/XXXXXXXXXXXXXXX: そのようなファイルまたはディレクトリはありません。
理由:dockerがディレクトリまたはファイルを指定していないため
解決方法
systemctl stop docker
rm -rf /var/lib/docker/* を実行します。
systemctl start docker
実行イメージを再起動し、コンテナを起動します
5. docker: デーモンからエラー応答がありました。コンフリクトです。コンテナ名 "XXX" は、コンテナ "XXX " によって既に使用されています。この名前を再利用するには、そのコンテナを削除(または名前変更)する必要があります。
理由: ドッカー名のリネーム
解決策
コンテナの名前を変更するか、削除して再構築する
6. エラーです。接続の有効化に失敗しました。この接続に適したデバイスが見つかりません
原因 NICの設定に問題がある
解決方法
NICを再起動する
7. システムの再起動後、docker が起動できない。
エラーは、docker0: iptables: その名前のチェーン/ターゲット/マッチがない
理由:docker service iptablesの問題です。
解決方法
dockerサービスの再起動 system restart docker
8. デーモン起動エラー:グラフドライバの初期化エラー:ドライバがサポートされていない
Overlay2 ストレージドライバを使用した docker デーモンの起動エラー
理由: デーモンの設定が不足しています
解決策
設定を追加します。
/etc/docker/daemon.json
{"storage-driver": "overlay2",
"storage-opts": ["overlay2.override_kernel_check=true"]}.
9. docker.service の起動に失敗しました。ユニットdocker.serviceはマスクされています。
不明な理由: docker がマスクされた
解決方法
systemctl unmask docker.service
systemctl unmask docker.socket
systemctl start docker.service
10. docker.service の起動に失敗しました。ユニットが正しくロードされていません。無効な引数です。
不明な理由: docker サービスが正しくロードされていません。
回避策
dockerをアンインストールし、docker.serviceを削除する。
dockerを再インストールします。
11. docker-compose がコンテナを起動しますが、エラーが発生します。
/usr/lib/python2.7/site-packages/requests/init.py:80: RequestsDependencyWarning: urllib3 (1.22) または chardet (2.2.1) は RequestsDependencyWarning していません)。
原因不明です。対応するpipのコンポーネントバージョンがサポートされていない
解決方法
pip uninstall urllib3
pip uninstall chardet
pip install requests
12. ドッカーコンテナの再起動に失敗
dockerプロセスを強制終了した後にdockerを再起動すると、dockerのコンテナが起動に失敗し、エラーが報告される
docker restart XXXXXXX デーモンからのエラー応答です。Cannot restart container XXXXXXX: container "XXXXXXXXXXXXX": already exists
原因 古いコンテナが安全に終了していない
解決方法
docker-containerd-ctr --address /run/docker/containerd/docker-containerd.sock --namespace c rm <container hash_id>.Docker-containerd-ctr --address /run/docker/containerd.sock --namespace c rm <container hash_id&g;
docker start コンテナ
13, docker restart error - restart command keeps getting stuck.
systemctl restart docker stuck
原因不明:起動したコンテナが多すぎるか、ディスクIOに問題がある可能性があります。
解決方法
systemctl start docker-cleanup.service
systemctl start docker
II. パーミッションの問題に対するエラー報告
14. unix:///var/run/docker.sock にある Docker デーモンソケットに接続しようとしたときに、パーミッションが拒否されました。
回避策
/var/run/docker.sock が置かれているユーザーグループを確認します。
ユーザーを docker グループに戻すには、usermod -aG docker ${USER} とします。
ステップ GROUP で chown socket: そのようなプロセスはありません。
原因:dockerがGroup情報を見つけられませんでした。dockerのグループが誤って削除された可能性があります。
解決方法
groupadd docker
16. 投稿 http:///var/run/docker.sock/v1.XXX /auth: dial unix /var/run/docker.sock: パーミッションが拒否されました。TLSが有効なデーモンにTLSなしで接続しようとしていませんか?
原因 非RootユーザのDocker管理時のパーミッション不足
解決方法
groupadd docker
usermod -a -G docker ユーザー
17. ドッカーのコミットイメージにエラーが発生
tarファイルの処理エラー(終了ステータス1):予期しないEOF
原因 おそらくパーミッションの問題が原因
解決方法
chmod +x 実行権限を追加する
III. ミラーとリポジトリの問題報告エラー
18. https://registry-1.docker.io/v2/: ダイヤル tcp: ルックアップ registry-1.docker.io
理由 Docker リポジトリにアクセスできない
回避策
Dockerのリポジトリソースを国産または自作リポジトリソースに変更する
etc/docker/daemon.json を変更します。
19、ローカル画像エラー報告をプッシュする
The push refers to repository [XXXX] Get https://xxx/v1/_ping: http: server gave HTTP response to HTTPS client
原因:ドッカーレジストリがhttpsのサービスを使用していない
回避策
/etc/docker/daemon.jsonファイルに書き込まれます。
{ "insecure-registries":[""] }.
20. /usr/bin/docker-current: デーモンからのエラー応答: oci runtime error: container_linux.go: starting container process caused " exec: "/bin/bash": executable file not found in $PATH".
原因 Dockerイメージそのもの、またはDockerエンジンのバージョンが低いこと
解決方法
Dockerのバージョンサービスをアップグレードすることができます
21、イメージをビルドし、chown -Rを実行するのが非常に遅い
理由 Dockerはコピーオンライトポリシーを採用しているため、chownコマンドを実行すると、上位のイメージファイルをすべて現在のレベルにコピーし、パーミッションを変更して再びファイルシステムに書き込む。
回避策
chown -R などのコマンドを使用して、ファイルに大きな変更を加えるべきではありません。
22. docker build でイメージをビルドすると、以下のエラーが発生します。
syslogd からのメッセージ kernel:unregister_netdevice: waiting for lo to become free.usage count = 1
原因:ドッカーエンジンのバージョンが高すぎる
解決方法
dockerエンジンのバージョンは、docker内部イメージのカーネルバージョンと一致させる必要があります
23, docker: Error response from daemon: containerd: container did not start before specified time-out.ERRO[0133] error getting events from daemon : context cancelled.ERRO[0133] error getting events from daemon
理由 docker のルートディレクトリを変更して再起動した後、イメージをダウンロードするとエラーが報告されました。
解決方法
dockerサービスを再起動する
またはサーバーを再起動する
<ブロッククオートIV. リソースの問題に対するエラー報告
25. Docker デバイスに空き容量がない
理由: 容量不足
解決方法 未使用のコンテナ、ミラー、その他のリソースを削除し、スペースをクリーンアップします。
ドッカーシステムプルーン -a
26. 26. /var/lib/docker/containers is over-occupied(コンテナ過多)
理由 ログファイルが大きすぎる
解決策
cat /dev/null > *-json.log
または
dockerdの起動パラメータ、/etc/docker/daemon.jsonを追加します。
{"log-driver": "json-file",
"log-opts": {"max-size": "2G", "max-file": "10"}.
27. 最大仮想メモリ領域 vm.max_map_count [65530] が低すぎるため、最低でも [262144] まで増やしてください。
原因:システムパラメータのデフォルト構成が小さすぎるため
解決方法
etc/sysctl.conf の vm.max_map_count が増加するように修正する。
28, コンテナプロセスを開始すると、 "process_linux.go:301 が発生しました。
initのためにexec setnsプロセスを実行すると、 "終了ステータス40"":不明が発生しました。
時折
原因は?キャッシュの問題によるものと思われます
解決方法
echo 1 > /proc/sys/vm/drop_caches
29、dockerがローカルで複数のコンテナを起動し、その後のコンテナ起動に失敗する。
原因 ハードディスクの空き容量が満杯であるかどうかを確認し、ハードディスクの空き容量に問題がない場合
解決方法
vim /etc/sysctl.conf
fs.aio-max-nr = 1048576 というパラメータを追加。
sysctl -p
30. Docker が異常に起動し、ステータスが再起動を繰り返す
Dockerログにコンテナ名、例外ログを表示する
var/log/messages を表示する
原因:メモリが一杯になり、OOMが発生した
解決方法
メモリ解放後、再度コンテナを起動する
V. バージョン非互換性エラー報告
31. overlayfs: ext4 でもベースレイヤーから新規作成されたディレクトリに移動したファイルを削除できません。
原因 Centos が提供するファイルシステム XFS と Overlay の互換性に問題があります。
回避策
この問題はカーネル 4.4.6 以降に修正されています。
32. docker: デーモンからのエラー応答。OCI runtime create failed: container_linux.go:344: starting container process caused "process _linux.go:297: getting the final child's pid from pipe caused "read init-p: connection reset by peer" ": unknown.OCI runtime create failed: コンテナプロセスを開始します。
原因 DockerのバージョンとOSのバージョンが一致しない
解決方法
dockerの再インストールとOSカーネル対応版
<ブロッククオートVI. ネットワークまたはポートの問題によるエラー報告
33. 警告: IPv4 転送が無効です。
原因:ipv4ネットワークが転送できません。
回避策
/usr/lib/sysctl.d/00-system.conf
最終行にnet.ipv4.ip_forward=1を追加します。
ネットワークサービスを再起動します。間違ったコンテナを削除し、再度新しいコンテナを作成します。
34. デフォルトのドライバでネットワーク "xxxxxxxxxx"を作成する
原因:Docker Gatewayの競合
コンテナ起動後の切断問題、docker-composeはコンテナを起動します。
解決方法
docker-compose.yml にパラメータ network_mode: "bridge" を設定し、起動したコンテナに対して設定します。
35. 次の条件を満たすノードが見つかりません [ポート xxxx] 。
原因 コンテナがポートマッピングを使用している場合(docker run -p xxxx:xxxx または
ホスト上のポートがコンテナやシステムプロセスによって占有されている場合、ポートの割り当てに失敗します。
解決方法
ポートを占有しているコンテナまたはプロセスを削除するか、コンテナのポートとホストポートのマッピングを調整して、競合を回避します。
36. デーモンからのエラー応答:名前xxxのサービスエンドポイントは既にある
理由:ポートがすでに占有されているため
解決策
dockerコンテナを再起動する
docker: Error response from daemon: driver failed programming external connectivity on endpoint XXXXX: Bind for 0.0.0.0:80 failed: port is already allocated.
原因:コンテナポートの競合
解決方法
ホストバインドポートを変更する
VII. Dockerインストールエラーの報告
38. docker レポートのインストール Requires: container-selinux >= 2.9
理由:container-selinuxのバージョンが低いか、インストールされていないため。
解決方法
wget -O /etc/yum.repos.d/CentOS-Base.repo
http://mirrors.aliyun.com/repo/Centos-7.repo
yum install epel-release
yum makecache
yum install container-selinux
39. docker-compose のインストールでエラーが発生
"ImportError: 'module' object has no attribute 'check_specifier' "。
理由: setuptoolsのバージョンの問題
解決方法
setuptoolsをバージョン30.1.0以降にアップグレードする。
pip install --upgrade setuptools
40. docker-composeのインストールでエラーが発生
DEPRECATION: Python 2.7は2020年1月1日に耐用年数が終了します。Python 2.7は2020年1月1日に寿命を迎えるため、Pythonのアップグレードをお願いします。将来のバージョンのpipはPython 2.7をサポートしなくなります。
理由:python 2.7がアップグレードを要求するため
解決方法
pip install -i https://pypi.douban.com/simple docker-compose
VIII. Dockerの削除エラー報告
41. ドッカー削除コンテナエラー
デーモンからのエラー応答:Driver overlay failed to remove root filesystem xxxxx: remove/var/lib/docker/overlay2/xxxxx/merged: device or resource busy。
理由:コンテナにマウントされたデータボリュームを直接削除できないため
解決方法
grep docker /proc/*/mountinfo | grep xxxxx
プロセス終了後
そして、コンテナを再削除する
42. ステータスが dead のコンテナを削除すると、エラーが報告される
デーモンからのエラー応答です。Driver aufs failed to remove root filesystem XXXXXXXXXXXXXXXX: aufs: unmount error after retries: /var/lib/docker/aufs/ mnt/xxxxxxxx: デバイスまたはリソースがビジー状態です。
理由:デッドステートのコンテナは削除できず、リソースを占有したままである。
解決策
docker rm -fv コンテナIDは数分後に自動的に削除されます
43. docker の画像削除エラー
デーモンからのエラー応答: 衝突: リポジトリの参照を削除できません "XXXX" (強制する必要があります) - コンテナ XXXX はその参照イメージ YYYY を使用しています。
理由: イメージがコンテナによって使用されています。
解決方法
ミラーを削除する前に、関連する ID コンテナを削除する必要があります。
44. ドッカーイメージ削除エラー
デーモンからのエラー応答:競合:XXXXXXXXXXを削除できない(強制する必要がある) - イメージは複数のリポジトリで参照されています。
原因:画像のログインにより、リモート側の他のリポジトリが押された。
回避策
このイメージが不要な場合、docker rmi -f force delete
45.ドッカーイメージ削除エラー
デーモンからのエラー応答:競合:XXXを削除できない(強制できない) - イメージには依存する子イメージがあります。
原因 親画像に依存する子画像が存在する
解決方法
ミラーを強制削除するか、コンテナを一括削除してからミラーを削除する
IX. その他のエラー報告
46. docker: Error response from daemon: driver failed programming external connectivity on end-point XXXXXXX: (iptables failed: iptables --wait -t filter -A DOCKER ! -i docker0 -o docker0 -p tcp -d 172.17.0.2 --dport 8080 -j ACCEPT: iptables: その名前のチェーン/ターゲット/マッチはありません。
原因:ファイアウォールの問題によるもの
解決方法
ファイアウォールをオフにして、dockerを再起動する
47. docker info を実行すると、次のような警告が表示されます。
警告: bridge-nf-call-iptables は無効です。
警告:bridge-nf-call-ip6tables は無効です。
原因:設定の問題により発生、bridge-nf-call-iptablesを有効にする必要があります。
回避策
vi /etc/sysctl.conf
以下を追加します。
net.bridge.bridge-nf-call-ip6tables = 1 です。
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 1
48. ドッカーデータベース関連のエラー報告
Dockerのフリッカーでmysqlコンテナを作成する
データベースが初期化されていない、パスワードオプションが指定されていない
解決方法
docker run -d -e MYSQL_ROOT_PASSWORD=[password] -p 3306:3306 mysql image
Dockerの使用仕様の提案
-
過去1~2年の新しい安定版Dockerを使用するようにする。
-
今年以前の非常に古いバージョンをインストールしないでください。
-
5G10G+のような非常に大きなミラーは作成しないようにしてください。
-
不要なソフトウェアやデータなどを削除し、できるだけ軽い画像にする。
-
コンテナ内にホスト構成をマウントし、読み取り専用で使用します。
-
コンテナは、可能であれば ro read-only を使用して、ホスト構成ファイルを -v する必要があります。
-
ホストの物理ドライブまたはストレージノードにマウントするデータ
-
コンテナのダウンタイムによるデータ損失を避けるため、コンテナ内で直接実行しないこと
-
アプリケーションログはホストにフックする必要があります。
-
コンテナに直接プリントしない、ドッカーログを避ける、ログを見るためにvulumeディレクトリに移動することを避ける
-
最新のタグを使うだけではダメ
-
タグは、タグ別に対応するバージョンを見つけるための管理基準を持つべきである
-
コンテナipを使用せず、コンフィギュレーションにdeadを書かない(デフォルト172.17.0.x)
-
コンテナ再起動後、ipが変更される可能性が高い
-
1つのコンテナで複数のプロセスを実行しないようにする
-
コンテナは仮想マシンではないので、1コンテナ1プロセスを心がけましょう
-
環境イメージ間の一貫性
-
テスト環境、UAT環境、本番環境にかかわらず、同じイメージを維持し、変更せず、環境変数のパラメータのみを変更して違いを出すようにする
-
問題が見つかっても、常にdockerコンテナを監視すること
-
コンテナの監視にはprometheusを使用することが推奨されます
-
ホストのハードウェアリソースを侵害しないように、ドッカーコンテナのリソース、特にCPU、メモリ、ハードディスクスペース、さらにはネットワークを必ず制限してください。
関連
-
[解決済み】エラー "入力デバイスはTTYではありません"
-
[解決済み] 停止したコンテナで画像が使用されている
-
[解決済み] System.InvalidOperationException: Failed to deploy distro docker-desktop to C:\UserslenovaAppDataLocal╱distro: exit code: -1
-
[解決済み] アルパインイメージでdockerを使ってbashをユーザrootで実行するには? su: suidでないと正常に動作しません。
-
[解決済み] ansibleでdocker-composeのコマンドを実行するには?
-
[解決済み] ドッカーコンテナ : iptables を実行中です。その名前のチェーン/ターゲット/マッチがない
-
[解決済み] docker cp が実行中のインスタンスで "No such container:path" を投げる [閉じた] 。
-
Docker Error : 無効または破損したジャーファイル .jar
-
httpコード中にdocker registry apiのインタラクションを呼び出す コード詳細
-
minttyを使用している場合は、プレフィックスを付けてみてください。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】FrontEnd DockerFIle.v0との解決に失敗しました。
-
[解決済み] ドッカーイメージのアイコンを作成する
-
[解決済み] 接続するには、Dockerクライアントを昇格して実行する必要があります。
-
[解決済み] Dockerイメージを1つのコンテナにまとめる方法はありますか?
-
[解決済み] DockerでPillowを使用する
-
[解決済み] 作成前のチェックでエラーになる。「このコンピュータでは、VT-X/AMD-vが有効になっていません。有効になっているのに「BIOSで有効にすることが必須です。
-
Docker npm getaddrinfo EAI_AGAIN registry.npmjs.org registry.npmjs.org:443
-
docker 環境に opencv をインストールします ImportError: libGL.so.1: cannot open shared object file: そのようなファイルやディレクトリはありません
-
docker] top コマンドで "TERM 環境変数が設定されていません。" というエラーが報告されます。
-
エラー:入力デバイスはTTYではありません。