メモ > サーバ > 各論: Docker > トラブル
トラブル
■イメージを削除できない
削除しようとするとエラー
$ docker image rm 7a8792605f8c
Error response from daemon: conflict: unable to delete 7a8792605f8c (must be forced) - image is referenced in multiple repositories
オプション「-f」を指定すると削除できることがある
$ docker image rm 7a8792605f8c -f
それでも削除できない
$ docker image rm 7a8792605f8c -f
Error response from daemon: conflict: unable to delete 7a8792605f8c (cannot be forced) - image has dependent child images
リポジトリとタグを指定すると削除できる
docker image rm 949004901725.dkr.ecr.ap-northeast-1.amazonaws.com/debian_php74_apache:1.1.0
【docker】〜image has dependent child images 対応〜 - Qiita
https://qiita.com/s-inoue-git/items/3096b86fe1bbb1ad155d
■Dockerが配置したファイルを上書きできない
Dockerが配置したファイルを直接FTPで上書きできない
以下で解決するかと思ったが、
# mkdir /home/ec2-user/docker/wordpress/html
# chown ec2-user. /home/ec2-user/docker/wordpress/html
# chmod 0777 /home/ec2-user/docker/wordpress/html
# chmod g+s /home/ec2-user/docker/wordpress/html
Dockerによって作成されたファイルは以下の所有者になってしまう
# ll
-rw-r--r-- 1 33 tape 420 12月 1 2017 index.php
rootによって作成されたファイルは以下のように ec2-user グループになるので謎
# ll
-rw-r--r-- 1 root ec2-user 10 5月 16 12:05 test.txt
…だったが、このファイル内「ホストOSとコンテナで相互にファイルを読み書き(Linux環境)」の方法で一応は解決した
より良い方法が無いかは、また検証したい
■Conflict となって起動できない
Dockerでコンテナ名が重複してしまった時の古いコンテナ削除方法 (Conflictエラー) | FRONTL1NE (フロントライン)
https://frontl1ne.net/2019/05/docker-fix-conflict-error/
コンテナを起動すると「すでに名前が使われている」というエラーになる
$ docker-compose -p campus up -d
Creating network "campus_compose_network" with driver "bridge"
Creating php ... error
Creating mariadb ...
Creating mailhog ...
Creating mysql ...
ERROR: for php Cannot create container for service php: Conflict. The container name "/php" is already in use by contaiCreating mysql ... error be able to reuse that name.
Creating mariadb ... done
container "f671ca345d4aa2db89003e1f35a39aa4aef9330f95e2cda1d0205364a0762e38". You have to remove (or rename) that contaiCreating mailhog ... done
ERROR: for php Cannot create container for service php: Conflict. The container name "/php" is already in use by container "2c32a66a679a1e3905aa8caa58ee6d29a6bf6af3d8fb03f5fc43f9dee07f0dce". You have to remove (or rename) that container to be able to reuse that name.
ERROR: for mysql Cannot create container for service mysql: Conflict. The container name "/mysql" is already in use by container "f671ca345d4aa2db89003e1f35a39aa4aef9330f95e2cda1d0205364a0762e38". You have to remove (or rename) that container to be able to reuse that name.
ERROR: Encountered errors while bringing up the project.
いったん終了する
$ docker-compose -p campus down
Stopping mailhog ... done
Stopping mariadb ... done
Removing mailhog ... done
Removing mariadb ... done
Removing network campus_compose_network
コンテナ一覧には何も表示されない
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
起動していないコンテナも含めて表示すると、
「example_php」「example_mysql」によって「php」「mysql」の名前が使われていることが確認できる
8日前にエラーで終了したままになっているものみたい
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2c32a66a679a example_php "docker-php-entrypoi…" 8 days ago Exited (0) 8 days ago php
f671ca345d4a example_mysql "docker-entrypoint.s…" 8 days ago Exited (0) 8 days ago mysql
068065dc757c example_nginx "/docker-entrypoint.…" 8 days ago Exited (137) 8 days ago nginx
8dd90e083667 5f2e213b9d0c "/bin/sh -c 'apt-get…" 3 months ago Exited (100) 3 months ago determined_roentgen
f6eef1ae5a21 6adef0082129 "/bin/sh -c 'apt-get…" 4 months ago Exited (100) 4 months ago festive_franklin
79ebe67688db 6adef0082129 "/bin/sh -c 'apt-get…" 4 months ago Exited (100) 4 months ago gracious_driscoll
2a02cc7dfd35 65a3756de1d8 "/bin/sh -c 'docker-…" 4 months ago Exited (1) 4 months ago thirsty_sammet
1f5d6e0395dc 8e17cf6d251e "/bin/sh -c 'docker-…" 4 months ago Exited (1) 4 months ago jolly_noether
それぞれ、IDを指定して終了させる
$ docker rm 2c32a66a679a
$ docker rm f671ca345d4a
$ docker rm 068065dc757c
終了できた
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8dd90e083667 5f2e213b9d0c "/bin/sh -c 'apt-get…" 3 months ago Exited (100) 3 months ago determined_roentgen
f6eef1ae5a21 6adef0082129 "/bin/sh -c 'apt-get…" 4 months ago Exited (100) 4 months ago festive_franklin
79ebe67688db 6adef0082129 "/bin/sh -c 'apt-get…" 4 months ago Exited (100) 4 months ago gracious_driscoll
2a02cc7dfd35 65a3756de1d8 "/bin/sh -c 'docker-…" 4 months ago Exited (1) 4 months ago thirsty_sammet
1f5d6e0395dc 8e17cf6d251e "/bin/sh -c 'docker-…" 4 months ago Exited (1) 4 months ago jolly_noether
この状態なら、以下のとおり起動できるようになった
$ docker-compose -p campus up -d
Creating network "campus_compose_network" with driver "bridge"
Creating mysql ... done
Creating mariadb ... done
Creating mailhog ... done
Creating php ... done
■php_network_getaddresses となってMySQLに接続できない
Docker Compose でPHPコンテナとMySQLコンテナを起動し、
PHPからMySQLに接続しようとしたときに以下のエラーになることがあった
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known
起動コマンドを以下のように変更(バックグラウンドの指定を無くしてログを表示する)して様子を見る
$ docker-compose up -d
↓
$ docker-compose up
MySQLに関してコンソールに以下のログが表示された
設定ファイルに問題があり、具体的には文字コードの指定に問題があるらしい
mysql | 2021-10-07 10:42:41+09:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.5.12+maria~focal started.
mysql | 2021-10-07 10:42:41+09:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config
mysql | command was: mysqld --verbose --help --log-bin-index=/tmp/tmp.GgJeIcAyzq
mysql | 2021-10-07 10:42:41 0 [ERROR] COLLATION 'utf8mb4_general_ci' is not valid for CHARACTER SET 'utf8'
mysql exited with code 1
Docker Compose 用ファイルの docker\mysql\my.cnf を修正(文字コードが怪しいので変更)
[mysqld]
character-set-server=utf8
↓
[mysqld]
character-set-server=utf8mb4
ファイルの修正を行っているので、事前に「docker-compose build」が必要なので注意
あわせて、以下のようにして対象のボリュームも削除しておく
$ docker volume ls
$ docker volume rm xxxxx
これで「mysql:5.7」「mariadb:10.5」の両方ですぐに起動できるようになった
■ポートが使われているとなってMySQLが起動しない
ある日突然、以下のエラーで起動できなくなった
$ docker-compose -p campus-asp up -d
Creating network "campus-asp_default" with the default driver
Creating campus-asp_redis_1 ...
Creating campus-asp_mysql_1 ...
Creating campus-asp_mysql_1 ... error
Creating campus-asp_nginx_1 ...
Creating campus-asp_smtp4dev_1 ...
Creating campus-asp_redis_1 ... done
Creating campus-asp_php_1 ... done
Creating campus-asp_nginx_1 ... done
Creating campus-asp_smtp4dev_1 ... done
ERROR: for mysql Cannot start service mysql: driver failed programming external connectivity on endpoint campus-asp_mysql_1 (8a6f1c812a648295f4016ef3b6eb8810eaae2fbb07f042ef07a571d7c0813d5c): Bind for 127.0.0.1:3306 failed: port is already allocated
ERROR: Encountered errors while bringing up the project.
以下を参考に対応した
example_mysqlが不正な状態で残り続けていた?削除することで解消できた
(直近でexample案件でエラーが発生し、その解消のために試行錯誤していたが、その影響だと思われる)
Docker Composeでdriver failed programming external connectivity on endpointとなった時の対応方法 - Qiita
https://qiita.com/ponsuke0531/items/f3490f571b5eee16ea87
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
98d7976c7795 campus-asp_smtp4dev "dotnet /app/Rnwood.…" About a minute ago Up About a minute 25/tcp, 143/tcp, 127.0.0.1:5000->80/tcp campus-asp_smtp4dev_1
2aa9aca11681 campus-asp_php "docker-php-entrypoi…" About a minute ago Up About a minute 0.0.0.0:5174->5174/tcp, :::5174->5174/tcp, 9000/tcp campus-asp_php_1
23fc6ec06392 campus-asp_nginx "/docker-entrypoint.…" About a minute ago Up About a minute 127.0.0.1:80->80/tcp campus-asp_nginx_1
9b1a13ed6e90 campus-asp_redis "docker-entrypoint.s…" About a minute ago Up About a minute 6379/tcp campus-asp_redis_1
d4d1bfdaa839 campus-asp_mysql "docker-entrypoint.s…" About a minute ago Created campus-asp_mysql_1
f8d3d168bea9 example_apache "sh /entrypoint.sh" 4 days ago Exited (127) 3 days ago example_apache_1
324895e1dfff example_mysql "docker-entrypoint.s…" 4 days ago Up 4 minutes 127.0.0.1:3306->3306/tcp example_mysql_1
d71118e77a41 example_smtp4dev "dotnet /app/Rnwood.…" 4 days ago Exited (0) 3 days ago
$ docker rm 324895e1dfff
Error response from daemon: You cannot remove a running container 324895e1dfffd5e4cb5b5c2f06d96d1fe35e0a1274f8b116f6738802ee01c52b. Stop the container before attempting removal or force remove
$ docker container rm -f 324895e1dfffd5e4cb5b5c2f06d96d1fe35e0a1274f8b116f6738802ee01c52b
324895e1dfffd5e4cb5b5c2f06d96d1fe35e0a1274f8b116f6738802ee01c52b
$ docker rm f8d3d168bea9
f8d3d168bea9
$ docker rm d71118e77a41
d71118e77a41