コンテナ

Docker どっかー

DockerコンテナDockerfileDocker Hubdocker-composeコンテナランタイム
Dockerについて教えて

簡単に言うとこんな感じ!

コンテナを作ったり動かしたりするための「標準ツールセット」だよ。コンテナ技術自体はLinuxの機能だけど、Dockerがそれを誰でも簡単に使えるようにしてくれた。「アプリを箱に詰めてどこでも動かす」を実現したゲームチェンジャーなんだ!


Dockerとは

Dockerは、コンテナの作成・配布・実行を簡単に行えるオープンソースのプラットフォームです。2013年にDotCloud社(後にDocker, Inc.に社名変更)がリリースし、複雑だったコンテナ技術を誰でも使えるようにしたことで爆発的に普及しました。

Dockerの革新はDockerfileという設計図の仕組みと、Docker Hubというパブリックレジストリの組み合わせです。「このDockerfileでビルドして、このイメージを実行して」という再現可能な手順を誰とでも共有できるようになりました。

現在のDockerはツール群の総称として使われます。

  • Docker Engine — コンテナランタイム本体
  • Docker CLIdocker runなどのコマンドラインツール
  • Docker Desktop — MacとWindowsで使えるGUI付きDockerアプリ
  • Docker Compose — 複数コンテナをまとめて管理
  • Docker Hubコンテナイメージの共有レジストリ

よく使うDockerコマンド

コマンド説明
docker build -t myapp .Dockerfileからイメージをビルド
docker run -p 8080:80 myappコンテナを起動(ポートマッピング)
docker ps実行中のコンテナ一覧
docker imagesローカルのイメージ一覧
docker pull nginxDocker HubからイメージをPull
docker push myrepo/myappレジストリへイメージをPush
docker exec -it <id> bash実行中コンテナにシェルで入る
docker logs <id>コンテナのログを表示
docker compose updocker-compose.ymlでサービス起動

歴史と背景

  • 2013年3月 — Solomon Hykes(DotCloud社)がDockerをPyCon 2013で発表
  • 2013年10月 — Docker 0.6リリース。企業向け展開が加速
  • 2014年 — Docker Hub公開。RedHat・Google・Microsoftも採用を表明
  • 2015年 — Docker Composeリリース。マルチコンテナの定義が容易に
  • 2015年OCI設立。DockerがコンテナフォーマットをOSSとして寄贈
  • 2017年KubernetesがDockerをデフォルトランタイムとして採用
  • 2020年 — Kubernetes 1.20でDockerShimの非推奨を発表→業界に衝撃
  • 2022年 — KubernetesがDockerShimを削除(containerd等へ移行)
  • 現在 — 開発環境ではDockerが依然として標準。本番はcontainerd/CRI-Oが主流

Dockerの仕組み

Dockerのビルド〜実行フロー Dockerfile 設計図 Docker Image レイヤー積み重ね Registry Docker Hub等 Container 実行中のプロセス build push pull run

関連する規格・RFC

規格内容
OCI Image SpecDockerイメージが準拠するコンテナイメージ標準
OCI Runtime Specruncなどランタイムが準拠する実行仕様

関連用語