Open5

Docker

T.Y.T.Y.

Dockerを学習する

なぜDockerを学ぶのか?

  • 同一の解析環境を複数のマシン上に持ち込んで使うため
  • 解析環境を記述してファイルとして残すことで、reproducibilityを確保するため
  • デスクサイドのワークステーションとHPCの解析環境上で同一の解析環境を構築するため
  • 解析環境をクラウドに持ち込むため

これまでの状況と年末までの学習予定

  • Dockerイメージが配布されている解析環境をたまに使用する程度
  • dockerのコマンドは基本READMEに書かれている通りに作業していて、詳しくない
  • 今後、一般的な解説等を使って概要を掴む
  • 普段使用している環境でdockerを使用できるように整備、dockerfileを自分で記述できるようにする
  • クラウド環境でdockerを使用してみる

学習リソース

見つけた順にここにスクラップ

https://zenn.dev/suzuki_hoge/books/2022-03-docker-practice-8ae36c33424b59/viewer/1-1-readme

https://qiita.com/kooohei/items/0e788a2ce8c30f9dba53

https://qiita.com/Sicut_study/items/4f301d000ecee98e78c9

意気込み

頑張ろう

T.Y.T.Y.

Dockerが使用している仮想化技術は

  • コンテナ型仮想化ソフトウェア。Docker Engine
  • そのほかの仮想化には、ホストOSの上にホスト型仮想化ソフトウェア(Virtualboxなど)がインストールされるものや、ハードウェアにハイパーバイザー型仮想化ソフトウェア(Hyper-v、KVM)がインストールされるものがある。いずれもゲストOSを管理する。
  • コンテナ型の利点として、起動が早いデプロイしやすいなどが挙げられる。

https://swri.jp/glossary/デプロイ#:~:text=デプロイ(deploy)は、「,一連の作業を指す。

  • 昨今は本番環境もローカル開発もコンテナ型仮想化を前提として構築することが多くなっているらしい。
  • コンテナ型は他のホスト型等と比べて仮想化部分が完全には分離されていないので、ホストOSの違いがコンテナの挙動に影響するといった違いがある。
T.Y.T.Y.

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.

https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/Welcome.html

https://aws.amazon.com/jp/ecs/

  • GKE : Google Kubernetes Engine.

https://cloud.google.com/kubernetes-engine

https://zenn.dev/google_cloud_jp/articles/gke-korekara-101

  • どちらもコンテナ管理サービスで、ローカルの開発環境に使ったコンテナをそのままデプロイすることができる場所。Linux + Docker Engine

ECR/ GCR

  • ECR : Amazon Elastic Container Resistry
  • GCR : Google Container Registry
  • 非公開のイメージレジストリ。プライベートなDocker Hubのこと。

https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/what-is-ecr.html

https://cloud.google.com/artifact-registry/docs?hl=ja

https://aws.amazon.com/jp/ecr/

Kubernetes (k8s)

  • kubectlで始まるコマンドで使う
  • 多数のコンテナを管理するオーケストレーションソフトウェア。コンテナを運用するためのツール。

https://qiita.com/MahoTakara/items/85096f8b2632c802ab22

T.Y.T.Y.

コンテナを理解する

  • コンテナは特定のコマンドを実行するために作られる、1プロセス
  • LinuxのNamespaceにより作られる
  • コンテナは、ホストマシンの1プロセス。仮想OSが動いているわけではない

特徴

  • コンテナはイメージをもとに作られる
  • コンテナ同士は独立していて互いに影響しない、できない
  • Dockerエンジンの上なら、ローカルマシンでも仮想マシンでも、クラウドでも動作できる