🐳
【入門】Dockerとは〜基礎的内容
Dockerの基礎
Dockerを雰囲気で使ってきた為、基礎に戻ってちゃんと学んだ時のメモ。
-
Docker Engine
→ Linux上で動くソフトウェアのこと。コンテナの土台みたいなもの。 -
Docker CLI
→docker
で始まるコマンドのこと。デーモンに命令するらしい。 -
Docker Desktop
→ Dockerを使うためのGUIアプリのこと。(一部利用を除き有償化したので私はColimaを使ってます。) -
Docker Compose
→ Docker CLIをまとめて実行するツール。docker compose
で始まるコマンド。docker-compose.ymlで色々できる。 -
Docker Hub
→ イメージ(後述)をpullしたりpushしたりできるSaasのこと。 -
ECS / GKE
→ ローカル開発で使ったコンテナをデプロイする場所のこと。(インフラ分野) -
ECR / GCR
→ 非公開用のDocker Hubのこと。(インフラ分野) -
Kubernetes(k8s)
→ 多数のコンテナを管理するオーケストレーションソフトウェア。コンテナを運用するためのツール。
重要概念:コンテナとは
- LinuxのNamespaceで分離された領域のこと。
- イメージ(後述)を用いて作られる。
- コンテナ同士は疎結合で、独自に動く。
重要概念:イメージとは
- コンテナ実行に必要なパッケージのこと。
- Docker Hubからpullして使う。
重要概念:Dockerfileとは
- 既存イメージの自分たちの開発用に改良しするためのファイルのこと。
基礎コマンド(何をどうする、で理解すること)
- コンテナを起動:
docker container run -d
- イメージを作成:
docker image build
- コンテナを停止:
docker container stop
- コンテナを削除:
docker container rm -f
- コンテナを確認:
docker container ls
- コンテナを操作:
docker container exec
→ その後bashで命令すればOK
コンテナへのSSH接続は非推奨
- SSH用の拡張したイメージ作成が必要になる。
- 脆弱性対策などのコストが増える。
- SSH対応したイメージをデプロイすると新たな脆弱性が増える可能性もある。
イメージについて深掘り
- Docker Hubで探す。
- 常にLTSを使いたいならTAGをlatestにしておく。
Dockerfileについて深掘り
FROM:ベースイメージを指定する
RUN:任意のコマンドを実行する
COPY:ホストマシンのファイルをイメージに追加する
CMD:デフォルト命令を指定する
Discussion