🐳

【入門】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