Docker for Windows で、CentOS7を起動しようとしてハマったのでメモを残しておきます。
まず、通常通り Docker で CentOS7 を実行します。
>docker run -d --name myapp centos 0778a6f53268e2b5024dcfdd5eefc702b4f9890a3d0e6e4b093a9ec259a79b87
しかし、docker ps -a
を実行してみると、STATUS が Exit(0) となりコンテナが起動していません。当然ログインもできません。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0778a6f53268 centos "/bin/bash" 2 minutes ago Exited (0) 2 minutes ago myapp
Ubuntu ベースのイメージは起動できたりするのでいろいろ悩んだのですが、以下の記事のおかげで原因が分かりました。
どうも、CentOS7 の Docker イメージを起動するには、systemctl を使用できるようにするために、/sbin/init
をコマンドの最後につけてあげる必要がある模様。
なので、今度は以下のようにコマンドを実行してみます。
>docker run -d --name myapp2 centos /sbin/init 83cf54143d2b160a96d2163b983f3c4bd96b7dfe530a9dc2bc46524f66b36628
docker ps -a
の結果は以下の通りです。
>docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 83cf54143d2b centos "/sbin/init" About a minute ago Up About a minute myapp2 0778a6f53268 centos "/bin/bash" 8 minutes ago Exited (0) 8 minutes ago myapp
myapp2 の STATUS が UP になってますね!
無事に起動しました。
これでログインできますね。
>docker exec -it myapp2 /bin/bash [root@83cf54143d2b /]#