Docker
2020年10月2日 (金) 17:40時点におけるPiroto (トーク | 投稿記録)による版 (→docker: Error response from daemon: cgroups: cannot find cgroup mount destination: unknown.)
| Docker コマンド | Docker ネットワーク | WSL | Kubernetes |
Docker
| 仮想化 | Kubernetes |
インストール
設計
1コンテナにつき1プロセス
- 最も大事な観点。複数プロセスは非推奨
イミュータブルなインフラストラクチャイメージにする
- コンテナイメージはバージョン管理できるため、コンテナ実行後ではなく、コンテナイメージに実行バイナリやリソースを可能な限り埋め込むようにする
軽量なDockerイメージにする
- ノード上に使用するイメージがない場合、外部からダウンロードする必要がある
- キャッシュなどの削除、Alpine Linuxなど軽量なディストリビューションの利用
- 陥りがちな罠
- 後続のレイヤーで削除したファイルはイメージ内には実際には存在したままになる、そのファイルは単にアクセスできなくなるだけ
- 各レイヤは、前のレイヤからの差分のため、前のレイヤを作り直すと、イメージをデプロイするために、そのレイヤをビルドし直し、もう一度プッシュしてからプルする必要がある
セキュリティ
- コンテナにパスワードを入れない
- 機密情報をイメージに混ぜない
実行ユーザーをroot以外にする
- コンテナない実行ユーザーの権限を最小化
コンテナ
- コンテナは2つのカテゴリに分類
- システムコンテナ
- アプリケーションコンテナ
システムコンテナ
- 仮想マシンとよく似た動きをし完全なブートプロセスを実行
- 通常の仮想マシンに含まれるのと同様な、ssh,cron,syslogといったシステムサービスが含まれる
アプリケーションコンテナ
- 通常はアプリケーションを一つだけ動かすと言う点でシステムコンテナとは異なる
- コンテナ一つに対して一つしかアプリケーションを動かさないのは余計な制約に見えるかもしれないが、スケーラブルなアプリケーションを構築するためには適切な細分化の単位
- KubernetesのPodによってうまく活用できるデザイン哲学にもなっている
リモートレジストリへのイメージの保存
- Dockerコミュニティーでは、Dockerイメージをリモートレジストリへ保存しておくのが標準的な方法
- Dockerレジストリにはたくさんの種類がある
- 最初に決めるのは、プライベートレジストリを使用するのかパブリックレジストリを使用するのか
Dockerfile
FROMでベースイメージを指定して、RUNやCOPYなどのコマンドでイメージを作成する
- Dockerfile
FROM ubuntu:latest
- 実行
$ sudo docker build .
- 確認
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest 4e2eef94cd6b 9 days ago 73.9MB
コマンド
ネットワーク
Tips
snapインストール時の起動
$ sudo systemctl restart snap.docker.dockerd
WSL2でKubernetes/Dockerを動かす
nginxを動かす
$ docker pull nginx $ docker run --name test-ginx -d -p 8080:80 nginx
docker: Error response from daemon: cgroups: cannot find cgroup mount destination: unknown.
- https://web.plus-idea.net/2019/07/docke-cgroups-mount-destination/
- https://github.com/boot2docker/boot2docker/issues/1301
- Windowsの場合、ホスト側のVMにcgroups用のディレクトリが無いため
$ sudo mkdir /sys/fs/cgroup/systemd $ sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd
MySQLを動かす
$ docker pull mysql $ docker run --name test-mysql -e MYSQL_ROOT_PASSWORD=my-password -d mysql:latest
© 2006 矢木浩人