Open5
Docker
Dockerを学習する
なぜDockerを学ぶのか?
- 同一の解析環境を複数のマシン上に持ち込んで使うため
- 解析環境を記述してファイルとして残すことで、reproducibilityを確保するため
- デスクサイドのワークステーションとHPCの解析環境上で同一の解析環境を構築するため
- 解析環境をクラウドに持ち込むため
これまでの状況と年末までの学習予定
- Dockerイメージが配布されている解析環境をたまに使用する程度
- dockerのコマンドは基本READMEに書かれている通りに作業していて、詳しくない
- 今後、一般的な解説等を使って概要を掴む
- 普段使用している環境でdockerを使用できるように整備、dockerfileを自分で記述できるようにする
- クラウド環境でdockerを使用してみる
学習リソース
見つけた順にここにスクラップ
意気込み
頑張ろう
Dockerが使用している仮想化技術は
- コンテナ型仮想化ソフトウェア。Docker Engine
- そのほかの仮想化には、ホストOSの上にホスト型仮想化ソフトウェア(Virtualboxなど)がインストールされるものや、ハードウェアにハイパーバイザー型仮想化ソフトウェア(Hyper-v、KVM)がインストールされるものがある。いずれもゲストOSを管理する。
- コンテナ型の利点として、起動が早い、デプロイしやすいなどが挙げられる。
- 昨今は本番環境もローカル開発もコンテナ型仮想化を前提として構築することが多くなっているらしい。
- コンテナ型は他のホスト型等と比べて仮想化部分が完全には分離されていないので、ホストOSの違いがコンテナの挙動に影響するといった違いがある。
Docker XXXがたくさんある
Docker Engine
- コンテナ型仮想化ソフトウェア
- Linuxのカーネルと機能を使って動く
Docker CLI
-
docker run
,docker build
などのdocker
で始まるコマンド
Docker Desktop
- GUIアプリケーション。DockerをWindowsやMacで使うことができる
- engineやlinuxカーネルが含まれている。Docker ComposeやKubernetesも含まれている。
- Docker for WindowsやDocker for Macなどダウンロードサイトにあるものが、Docker Desktopのこと。
Docker Compose
-
docker compose up
などdocker compose
で始まるコマンドを提供する。 - Docker CLIをまとめて実行してくれるツール。
- 簡単に同じ構成を再現できるようになる。
Docker Hub
- Dockerイメージのレジストリ。Dockerイメージにとってのgithubのようなもの。
ECS/GKE
- ECS : Amazon Elastic Container Service.
- GKE : Google Kubernetes Engine.
- どちらもコンテナ管理サービスで、ローカルの開発環境に使ったコンテナをそのままデプロイすることができる場所。Linux + Docker Engine
ECR/ GCR
- ECR : Amazon Elastic Container Resistry
- GCR : Google Container Registry
- 非公開のイメージレジストリ。プライベートなDocker Hubのこと。
Kubernetes (k8s)
-
kubectl
で始まるコマンドで使う - 多数のコンテナを管理するオーケストレーションソフトウェア。コンテナを運用するためのツール。
Singularityについて
- Dockerと一緒に名前を聞くことが多いSingularityとは、科学や高性能コンピューティング環境用に設計されたオープンベースのコンテナプラットフォーム。HPC分野で普及している。
- Dockerイメージを利用することができる。
コンテナを理解する
- コンテナは特定のコマンドを実行するために作られる、1プロセス
- LinuxのNamespaceにより作られる
- コンテナは、ホストマシンの1プロセス。仮想OSが動いているわけではない
特徴
- コンテナはイメージをもとに作られる
- コンテナ同士は独立していて互いに影響しない、できない
- Dockerエンジンの上なら、ローカルマシンでも仮想マシンでも、クラウドでも動作できる