質問: Docker使い始めの者です。 docker create --name wow centos を用いてwowという名前のコンテナを作りそこに接続(?)しようとしたところ、execもattachもできずに困っています。 ``` $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 0f3e07c0138f 33 hours ago 220MB nginx latest f949e7d76d63 8 days ago 126MB $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4c8c97fd5dc1 centos "/bin/bash" About a minute ago Exited (0) About a minute ago wow $ docker start wow wow $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES $ docker exec -it wow /bin/bash Error response from daemon: Container 4c8c97fd5dc1f98033d71063de8dfb27755f779433af39f00b9ded1c9a7d655a is not running $ docker attach wow You cannot attach to a stopped container, start it first ``` コマンドが違うのでしょうか、そもそもstartでちゃんとコンテナが立ち上がっていないようなのです。 環境は OS:macOS Mojave 10.14.6 Docker: 2.1.0.3
回答: システムコールのトレースを取ると原因がわかるかもしれません。 ※あるはずの設定ファイルがなくてopenに失敗しているなど Linux系では`strace`、solarisでは`truss`を使います。 MacOSでトレースを取ったことはありませんが、次のページを見つけました。 MacOSXでstraceが欲しいけどdtrace意味わからん→dtruss使おう macOS でシステムコールトレースを取得する これらの記事によれば`dtruss`でコマンドを起動すると`strace`相当のことができるようです。 ``` sudo dtruss -f sudo -u $(id -u -n) docker attach wow ``` 実行前に`man dtrace`で使い方を調べた方がいいです。 大量のトレースログが出るので注意してください。