Docker どっかー
DockerコンテナDockerfileDocker Hubdocker-composeコンテナランタイム
Dockerについて教えて
簡単に言うとこんな感じ!
コンテナを作ったり動かしたりするための「標準ツールセット」だよ。コンテナ技術自体はLinuxの機能だけど、Dockerがそれを誰でも簡単に使えるようにしてくれた。「アプリを箱に詰めてどこでも動かす」を実現したゲームチェンジャーなんだ!
Dockerとは
Dockerは、コンテナの作成・配布・実行を簡単に行えるオープンソースのプラットフォームです。2013年にDotCloud社(後にDocker, Inc.に社名変更)がリリースし、複雑だったコンテナ技術を誰でも使えるようにしたことで爆発的に普及しました。
Dockerの革新はDockerfileという設計図の仕組みと、Docker Hubというパブリックレジストリの組み合わせです。「このDockerfileでビルドして、このイメージを実行して」という再現可能な手順を誰とでも共有できるようになりました。
現在のDockerはツール群の総称として使われます。
- Docker Engine — コンテナランタイム本体
- Docker CLI —
docker 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 nginx | Docker HubからイメージをPull |
docker push myrepo/myapp | レジストリへイメージをPush |
docker exec -it <id> bash | 実行中コンテナにシェルで入る |
docker logs <id> | コンテナのログを表示 |
docker compose up | docker-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の仕組み
関連する規格・RFC
| 規格 | 内容 |
|---|---|
| OCI Image Spec | Dockerイメージが準拠するコンテナイメージ標準 |
| OCI Runtime Spec | runcなどランタイムが準拠する実行仕様 |
関連用語
- コンテナとは — Dockerが実現するコンテナ技術の基礎
- コンテナイメージ・Dockerfile — Dockerのビルド成果物
- Docker Compose — 複数コンテナを定義・起動するツール
- コンテナレジストリ — Dockerイメージの保管・配布先
- containerd — Dockerが内部で使うコンテナランタイム