Docker for Mac での dockerd のログの見方についてのメモです。Docker for Mac の 17.03.1-ce-mac12 で確認しています。公式に載っている方法ではないので今後使えなくなる可能性があります。自分はDocker レジストリとの間で問題があった際のトラブルシュートに使いました。
ログレベルの設定
Dockerのアイコン -> Preferences -> Daemon -> Advanced で JSON 形式で設定を記述します。デバッグログの出力は下記のように debug
を true
に設定し Restart するだけです。
{
"debug" : true
}
ログレベルをdebug
以外に設定したい場合は個別にlog-level
という値で設定します。その他の詳細な設定は公式ドキュメントの Daemon CLI reference (dockerd) をご覧ください。
ログを見る
ログを見るには Docker for Mac の VM に入る必要があります。sshd が立ち上がっていないので、下記のように docker 経由で特権と nsenter を使ってホストにアクセスするのが簡単です。
$ docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh
上記でホストのネームスペースのシェルにアクセスできます。dockerdのログは /var/log/docker.log
に出力されています。
$ tail -f /var/log/docker.log
...
May 30 12:03:13 moby root: time="2017-05-30T12:03:13.597589319Z" level=debug msg="form data: {\"password\":\"*****\",\"serveraddress\":\"quay.io\",\"username\":\"tksm\"}"
May 30 12:03:13 moby root: time="2017-05-30T12:03:13.618582619Z" level=debug msg="hostDir: /etc/docker/certs.d/quay.io"
May 30 12:03:13 moby root: time="2017-05-30T12:03:13.621788419Z" level=debug msg="hostDir: /etc/docker/certs.d/quay.io"
May 30 12:03:13 moby root: time="2017-05-30T12:03:13.621826919Z" level=debug msg="attempting v2 login to registry endpoint https://quay.io/v2/"
May 30 12:03:15 moby root: time="2017-05-30T12:03:15.557921119Z" level=debug msg="Increasing token expiration to: 60 seconds"
補足: docker を使わない方法
dockerd 自体に問題がある場合、上記の方法でアクセスできないと場合もあると思われます。tty を screen でアタッチする方法でも VM のシェルにアクセスすることができます。screen のデフォルトでは ctrl+a -> d
でデタッチできます。
$ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty