「Docker」の版間の差分
ナビゲーションに移動
検索に移動
(→Ubuntu) |
|||
18行目: | 18行目: | ||
===[[Ubuntu]]=== | ===[[Ubuntu]]=== | ||
---- | ---- | ||
+ | *https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04-ja | ||
==設計== | ==設計== |
2021年5月22日 (土) 18:26時点における版
| Docker コマンド | Docker ネットワーク | WSL | Kubernetes | MicroK8s |
Docker
| 仮想化 | Kubernetes |
インストール
CentOS
Windows
Mac
Ubuntu
設計
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
- WSL2
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を動かす
- https://hub.docker.com/_/mysql
- サーバー立ち上げ
$ docker pull mysql $ docker run --name test-mysql -e MYSQL_ROOT_PASSWORD=my-password -d mysql:latest
- 接続
- psでコンテナIDを確認
- exec -it で接続
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cccc85ac63e0 mysql:latest "docker-entrypoint.s..." 10 hours ago Up 8 minutes 3306/tcp, 33060/tcp test- mysql $ docker exec -it ccc bash root@cccc85ac63e0:/# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.21 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
© 2006 矢木浩人