Help us understand the problem. What is going on with this article?

dockerコンテナーでExitedした時の原因を探す

More than 1 year has passed since last update.

http://blog.namiking.net/post/2015/09/docker-exec-exited/

ほとんど上の記事を参考にです。
多少コマンドのオプションがなくなっていたりしたのかハマったのでメモとして

% 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
に変更!!

無事起動はできました。

結論お金は正義です。

cgate
クリーンなアドテクノロジーを目指して、安心して利用いただけるサービスを!
https://www.cgate.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした