インストール
普通にぐぐると新旧入り乱れた情報が出てくるので、オフィシャルのドキュメントを良く読むこと。
CentOS 7
Ubuntu 18.10, 18.04, 16.04
環境設定
Proxy設定
dockerdのproxy設定は以下を参照。
※以下の設定がどこに適用されるのかわからない。
https://docs.docker.com/network/proxy/
データ領域設定
デフォルトは /var/lib/docker。
デフォルト以外を指定する場合は以下のように設定。
/etc/docker/daemon.json
{
"data-root": "/data/docker"
}
ユーザ名前空間 (user namespaces)
- sudoせずにdockerを利用したい場合に設定する必要がある。(ただしCentOS7ではうまく動かない模様)
- コンテナからホスト側のリソースを操作するとき、ホストから見ると、コンテナ内のUID/GIDに/etc/subuid, /etc/subgidで設定したオフセットを足した値のユーザ/グループによって操作される形となる。
- ただし、コンテナ内でのroot権限は特別扱いされるらしく、/etc/subuid, /etc/subgidにて割り当てられた範囲のユーザ/グループが持つリソースへの自由な操作や、この範囲での権限変更(chown, chgrpなど)が可能である。
- 例えば、UIDの範囲を100000-165536としたとき、
--volume
でマウントしたファイルシステムのディレクトリオーナーのUIDが、ホスト側から見て100000-165536であれば、このディレクトリ以下のファイル/ディレクトリに対して、コンテナ内のrootユーザはchown, chgrpも含めて自由に操作できる。
- 例えば、UIDの範囲を100000-165536としたとき、
- 利用途中でユーザ名前空間を有効化した場合、イメージは共有されないので、イメージが巨大でダウンロードに時間がかかるような場合は、あらかじめdocker saveで保存しておくこと。(data-rootをバックアップ⇒展開するだけだと、正しく動かない模様)
CentOS 7
ユーザ名前空間を有効化した上で、busyboxイメージを起動するとエラーで動作しない。
CentOS 7 の kernelが古い(2018-03-12時点で3.10.0-693.21.1.el7)のが原因?
Ubuntu 16.04
- ユーザ「dockremap」を追加。(※ dock er map ではなく dock re map であることに注意)
- dockerを利用する一般ユーザを、グループ「docker」に追加。(グループ設定はログイン中のユーザには反映されないので、使用前に一度ログアウトすること)
- /etc/subuid, /etc/subgid に以下を追記。
/etc/subuid
dockremap:100000:65536
/etc/subgid
dockremap:100000:65536
- Dockerの設定ファイルにユーザ名前空間の使用を追記。
/etc/docker/daemon.json
{
"data-root": "/data/docker",
"userns-remap": "default"
}
- Dockerサービスを再起動。(sudo systemctl restart docker)
※reloadでは反映されないので、restartすること。
よく見る docker run オプション
- -i: インタラクティブモード
- -t: 疑似端末割り当て
- --rm: プロセス終了時のコンテナ自動削除
-it
で現在の疑似端末とコンテナの疑似端末を紐付けるので、コンテナ内で起動したCLIコマンドを直接操作できる。
Dockerは、イメージからコンテナを作成し、実際の動作はコンテナ上で行われる。
通常起動したときは、コンテナは勝手に消えないので、コンテナでの操作は永続化されないと言っても、コンテナを消さない限り、内部の情報は残ったままとなる。
-rm
を付けると、docker run で起動したプロセスが終了したとき、コンテナも削除される。