ほとんど上の記事を参考にです。
多少コマンドのオプションがなくなっていたりしたのかハマったのでメモとして
% docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
59e7516f6f6d docker_manage "supervisord --nod..." 15 minutes ago Up 15 minutes 0.0.0.0:8080->80/tcp, 0
.0.0.0:44301->443/tcp manage
064927d586cc mysql:latest "docker-entrypoint..." 15 minutes ago Exited (1) 14 minutes ago
report-db
0c7225cced3d mysql:latest "docker-entrypoint..." 19 hours ago Up 18 hours 0.0.0.0:33061->3306/tcp
master-db
2d9e63e72f82 mysql:latest "docker-entrypoint..." 19 hours ago Up 18 hours 0.0.0.0:33062->3306/tcp
log-db
と一台だけどうしてもmysqlのコンテナーが立ち上げられない。。
何故なのかExited(1)てもう少し情報をと思ってコンテナーに入れないかなと思って調査を。
記事に従い
% docker ps -q --filter status=exited
064927d586cc
コミットすればいいとあるのでコミットしてみる
% docker commit -t exited 064927d586cc
unknown shorthand flag: 't' in -t
See 'docker commit --help'.
-tはなんてないと言われる。。
とりあえずhelp見ろと言われているので見てみる
% docker commit --help
Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
Create a new image from a container's changes
Options:
-a, --author string Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
-c, --change list Apply Dockerfile instruction to the created image (default [])
--help Print usage
-m, --message string Commit message
-p, --pause Pause container during commit (default true)
確かに-tなんてない
とりあえずコミットすればいいのかなと思って-mつけてコミットメッセージをつけてコミットしてみる
% docker commit -m "exited" 064927d586cc
sha256:4333223352538d379ca37a815efde50e6aace5fdf1bd5ba29107f9b6cdd5c06a
おおコミットできた
これでとりあえず入ってみる
% docker run --rm -it 4333223352538d379ca37a815efde50e6aace5fdf1bd5ba29107f9b6cdd5c06a bash
root@2f20666de408:/#
入れた!!
でもなんで何かよくわからないそもそもdocker psした時のcommandが途中で切れていて分からないなと
% docker ps -a --no-trunc
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4cef6544d0f5cf08e9fd13a517256d5305cd1c7296624632e4fd812ad67bb82e 4333223352538d379ca37a815efde50e6aace5fdf1bd5ba29107f9b6cdd5c06a "docke
r-entrypoint.sh bash" 8 minutes ago Up 8 minutes 3306
/tcp reverent_saha
59e7516f6f6d5e2509f760397c59493f7f913b4f6897681ed769b868c5af3e58 docker_manage "super
visord --nodaemon --configuration /etc/supervisord.conf" 10 minutes ago Up 10 minutes 0.0.
0.0:8080->80/tcp, 0.0.0.0:44301->443/tcp manage
064927d586ccbe2866a84674d16e456c063ffc4340c3a47820f58c33be148e7e mysql:latest "docker-entrypoint.sh mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci" 10 minutes ago Exited (1) 9 minutes ago
report-db
0c7225cced3dbd7933b05d305db16b4a6b269513af7024241df7717d62c4d001 mysql:latest "docker-entrypoint.sh mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci" 19 hours ago Up 18 hours 0.0.
0.0:33061->3306/tcp master-db
2d9e63e72f82bb1c3038c78e3ff06e1bc4f61cea03efe921de78bdb18b86a013 mysql:latest "docker-entrypoint.sh mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci" 19 hours ago Up 18 hours 0.0.
0.0:33062->3306/tcp log-db
no-truncつけると全部観れるらしいので打ってみる
「docker-entrypoint.sh mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci」
これか!!
打ってみる!!
root@2f20666de408:/# docker-entrypoint.sh mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
2017-05-09T02:20:00.706834Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
2017-05-09T02:20:00.714782Z 0 [ERROR] InnoDB: mmap(68714496 bytes) failed; errno 12
2017-05-09T02:20:00.716305Z 0 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2017-05-09T02:20:00.736563Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2017-05-09T02:20:00.747111Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
2017-05-09T02:20:00.747283Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2017-05-09T02:20:00.747327Z 0 [ERROR] Failed to initialize plugins.
2017-05-09T02:20:00.747403Z 0 [ERROR] Aborting
ついにmemory確保できていないぽい!!
一番安いmemory1Gのマシンだから3つもmysql立ち上げられないのかそりゃという感じの悲しい気持ちになりましたがとりあえず理由はわかったので
innodb_buffer_pool_sizeを下げようというケチな方向に
調べたら
https://github.com/docker-library/mariadb/issues/65
mariadbのだけどmysqld --innodb-buffer-pool-size=256M
てつければいいとあったので
とりあえず
mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci --innodb-buffer-pool-size=64M
に変更!!
無事起動はできました。
結論お金は正義です。