docker login
するとデフォルトの状態では $HOME/.docker/config.json
の .auths
にcredentialsが保存されます。credentialsが平文で保存されるというのもナンなのでこれをパスワードマネージャを介すように変更しましょう。
パスワードマネージャには手っ取り早くインストールできるpassを利用します。インストール方法はオフィシャルページにある通りですが、Ubuntuだと
$ sudo apt install pass
で完了します。
そして以下のようにpassの初期化を行ないます。
$ gpg --generate-key # ^ 出力された40桁のpublic keyのIDを控えておく $ pass init $PUBLIC_KEY_ID
これでpassの準備は完了です。
このpassをdockerのcredentials storeとして利用することで、credentialsを平文で保存する代わりにpassで管理できるようになります。そのためにdocker-credential-passを利用する必要があるのでReleasesページから動くバイナリを取ってきましょう。このへん、package managerでインストールできるようになってると嬉しいですね。
そしてその取ってきた docker-credential-pass
のバイナリをパスが通ってる場所に置き、
{ "auths": { ... }, "credsStore": "pass" }
上記のように、$HOME/.docker/config.json
中に "credsStore": "pass"
というように credsStore
を指定すると、dockerのcredentialsがpassで管理されるようになります。
注意としては、このdockerの config.json
はユーザーに紐付く設定なので、rootless dockerを利用していない限りはrootの設定 (つまり /root/.docker/config.json
) に書いておく必要があります (逆にrootless dockerを使っているのであれば利用する個ユーザーで設定する必要がある)。そして docker-credential-pass
についてもrootから呼べる場所に置いておく必要がありますから気を付けましょう。