Dockerを使ってみたいけれど、何をインストールして、どのコマンドから打てばいいのか分からないと手が止まっていませんか。Dockerとは何かを押さえたら、Windows・Mac・Linuxに入れて動作を確かめ、イメージの取得からコンテナの起動・確認・停止・削除まで、自分の手で試せます。
Dockerとは?コンテナでアプリを動かすためのツール
Dockerは、アプリと、アプリを動かすのに必要なもの(ライブラリや設定など)を「コンテナ」という区切られた環境にまとめて動かすためのツールです。コンテナには動かすのに必要なものがそろっているので、Dockerを動かしているPC(ホスト)に何が入っているかに左右されません。同じコンテナを、自分のPCでも、ほかの人のPCでも、クラウドでも同じように動かせます(Docker公式ドキュメント「What is Docker?」)。
コンテナと仮想マシン(VM)の違い
仮想マシンは、カーネルやドライバーを含むOSを丸ごと動かします。コンテナは、動かすのに必要なファイルを持った「区切られたプロセス」で、いくつ動かしてもホストのカーネルを共有します。そのため、同じマシンでより多くのアプリを動かせます(公式ドキュメント「What is a container?」)。
- 仮想マシン:OSを丸ごと動かす。カーネルもそれぞれが持つ
- コンテナ:ホストのカーネルを共有し、アプリと動かすのに必要なファイルだけを持つ
クラウドでは、仮想マシンの上でDockerを動かし、1台の仮想マシンで複数のコンテナを動かす使い方もよくあります。
イメージ・コンテナ・Dockerfile・Docker Hubの関係
- イメージ:コンテナを作るための読み取り専用のテンプレート。Ubuntuのイメージを元に、Webサーバーや自分のアプリを足したイメージを作ることもできます
- コンテナ:イメージから作った、実際に動かすもの。作る・起動する・止める・削除するができます
- Dockerfile:自分のイメージを作る手順を書くファイル
- Docker Hub:だれでも使える公開のレジストリ(イメージの置き場)。
docker pullやdocker runは、設定を変えていなければDocker Hubからイメージを取ってきます
Dockerでできること
- 開発環境をそろえる:チーム全員が同じイメージを使えば、「自分のPCでは動くのに、ほかの人のPCでは動かない」を減らせます
- CI/CDで使う:テストやビルドを、毎回同じコンテナの中で動かせます(GitHub Actionsでの例は「GitHub Actionsの基礎から始めるCI/CD入門」)
- 本番にデプロイする:作ったイメージを、データセンターやクラウドでもそのまま動かせます。たくさんのコンテナをまとめて動かすときは、Kubernetesを使うこともあります(「Kubernetes入門」)
Dockerのインストール方法(Windows・Mac・Linux)
WindowsとMacでは「Docker Desktop」を入れます。Docker Desktopには、Docker Engine(dockerd)、dockerコマンド、Docker Composeなどが入っています。Linuxでは、Docker Desktop for Linuxを入れるか、サーバーならDocker Engineだけを入れます。
Windows:WSL 2を確かめてからDocker Desktopを入れる
wsl --versionPowerShellかコマンドプロンプトで実行し、WSLのバージョンが2.1.5以上か確かめます。バージョンが表示されないときや古いときは、管理者として開いたPowerShellで更新します。
wsl --updateWSLが入っていないときは、wsl --updateの代わりにwsl --installを実行します。再起動を求められることがあります。
- 公式ページ「Install Docker Desktop on Windows」からインストーラーをダウンロードする
Docker Desktop Installer.exeをダブルクリックする。インストールの方法は、初めから選ばれている「ユーザーごと(per-user)」のままで、管理者権限は要らない- 設定の画面でバックエンドを選ぶ項目(「Use WSL 2 instead of Hyper-V」)が出たときは、WSL 2を選ぶ。項目が出ないときは、使えるものが自動で選ばれる
- 終わったらDocker Desktopを起動し、利用条件の画面で「Accept」を選ぶ
メモリは8GB以上、BIOS/UEFIでCPUの仮想化を有効にしておく必要があります。対応するWindowsのバージョンとエディションは、公式ページの「System requirements」で確かめてください。
Mac:Docker Desktopを入れる
公式ページ「Install Docker Desktop on Mac」で、Appleシリコン(M1以降)用とIntelチップ用のどちらかをダウンロードします。どちらのチップかは、Appleメニューの「このMacについて」で確かめられます。
- ダウンロードした
Docker.dmgを開き、DockerのアイコンをApplicationsフォルダへドラッグする - Applicationsフォルダの
Docker.appをダブルクリックして起動する - 利用条件の画面で「Accept」を選ぶ
メモリは4GB以上必要です。Docker Desktopが対応するのは、最新のmacOSとその前の2つのメジャーバージョンです。
Linux(Ubuntu):Docker Engineを入れる
# 1. 競合するパッケージ(docker.io など)を外す
sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc docker-buildx podman-docker containerd runc | cut -f1)
# 2. Docker公式のGPGキーとaptリポジトリを追加する
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update
# 3. Docker Engine・CLI・Docker Composeを入れる
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 4. Dockerが動いているか確かめる
sudo systemctl status dockerUbuntuのリポジトリにあるdocker.ioは、Docker社の公式パッケージではありません。公式の手順では、こうしたパッケージを先に外してから、Dockerのaptリポジトリから入れます。1.で「入っていない」と表示されても問題ありません。
公式の手順が対応しているのは、64ビット版のUbuntu 22.04・24.04・26.04・26.10です(2026年10月時点)。ほかのディストリビューションは、公式の「Install Docker Engine」で自分のOSのページを開いてください。
Linux:sudoなしでdockerコマンドを使う
sudo groupadd docker
sudo usermod -aG docker $USERdockerグループがすでにある場合、1行目は「すでにある」と表示されますが、そのまま2行目を実行してかまいません。そのあと一度ログアウトしてログインし直すと、sudoなしでdockerコマンドを使えます(仮想マシンでは再起動が必要なこともあります)。
インストールできたか確かめる(docker version・hello-world)
docker version
docker run hello-worlddocker versionでバージョンの情報が表示され、docker run hello-worldで確認のメッセージが表示されれば、インストールは終わりです。hello-worldはテスト用のイメージで、ダウンロードしてコンテナで動かし、メッセージを表示して終了します。Linuxでdockerグループの設定をしていない場合は、先頭にsudoを付けます。
Dockerの基本コマンドの使い方
Docker Hubからイメージを取ってきてコンテナとして動かし、止めて削除するまでを、上から順に打って試せます。Windowsならインストールのあとに開いたPowerShell、MacとLinuxならターミナルで実行します。
イメージを取得する(docker pull)
docker pull ubuntuDocker Hubからubuntuイメージをダウンロードします。手元にあるイメージは、次のコマンドで一覧にできます。
docker imagesコンテナを起動する(docker run)
docker run -it --name my-ubuntu ubuntu /bin/bash-it:コンテナの中のシェルを、いま開いているターミナルから操作できるようにする(-iと-tをまとめたもの)--name my-ubuntu:コンテナにmy-ubuntuという名前を付けるubuntu /bin/bash:ubuntuイメージからコンテナを作り、/bin/bashを動かす
コンテナの中のbashが起動し、コンテナの中でコマンドを打てるようになります。手元にイメージがないときは、docker runが先にダウンロードしてくれます。exitと打つとbashが終わり、コンテナは止まりますが、削除はされません。
Webサーバーのように動かし続けるコンテナは、-dと-pを付けて起動します。
docker run -d -p 8080:80 --name welcome docker/welcome-to-docker-d:コンテナを裏で動かし、ターミナルはすぐ使えるようにする-p 8080:80:PCの8080番ポートを、コンテナの80番ポートにつなぐ
ブラウザでhttp://localhost:8080を開くと、コンテナの中のWebサーバーが返すページが表示されます。docker/welcome-to-dockerは、Docker公式の入門で使われているイメージです。
動いているコンテナを確認する(docker ps)
docker ps
docker ps -adocker psは動いているコンテナだけを表示します。止まっているコンテナ(さっきexitしたmy-ubuntuなど)も見るときは、-aを付けます。
コンテナのログを見る(docker logs)
docker logs welcomeコンテナが出力したログを表示します。-fを付けると、新しく出たログを追いかけて表示し続けます(Ctrl+Cで抜けます)。
コンテナを停止・再開する(docker stop・docker start)
docker stop welcome
docker start welcomeコンテナ名(またはコンテナID)を指定して止めます。docker stopは、コンテナの中のプロセスにまず終了の合図(SIGTERM)を送り、待っても終わらないとき(Linuxのコンテナでは、設定がなければ10秒)は強制終了(SIGKILL)します。止めたコンテナはdocker startでもう一度動かせます。
コンテナとイメージを削除する(docker rm・docker rmi)
# コンテナを削除する(動いているものは先に止める)
docker stop welcome
docker rm welcome my-ubuntu
# イメージを削除する
docker rmi docker/welcome-to-docker ubuntu動いているコンテナは、そのままではdocker rmで削除できません。先にdocker stopで止めるか、-fを付けて強制的に削除します。イメージも、動いているコンテナが使っている間は-fなしでは削除できないので、コンテナを先に削除します。
Dockerコマンド早見表
# イメージを取得する
docker pull イメージ名
# 手元のイメージを一覧にする
docker images
# コンテナを作って起動する(-d:裏で動かす、-p:ポートをつなぐ、--name:名前を付ける)
docker run -d -p 8080:80 --name コンテナ名 イメージ名
# 動いているコンテナを一覧にする(-a:止まっているものも)
docker ps
docker ps -a
# ログを見る(-f:出続けるログを追う)
docker logs -f コンテナ名
# 止める・もう一度動かす
docker stop コンテナ名
docker start コンテナ名
# 削除する(コンテナ → イメージの順)
docker rm コンテナ名
docker rmi イメージ名
# Dockerfileからイメージを作る
docker build -t イメージ名 .
# compose.yaml のコンテナをまとめて起動する・止めて削除する
docker compose up -d
docker compose downDockerfileで自分のイメージを作る(docker build)
# ベースにするイメージ(使うPythonのバージョンに合わせて変える)
FROM python:3.13-slim
# 作業ディレクトリを /app にする
WORKDIR /app
# requirements.txt をイメージの中にコピーして、ライブラリを入れる
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# アプリのファイルをコピーする
COPY . .
# コンテナの起動時に実行するコマンド
CMD ["python", "app.py"]アプリのフォルダ(app.pyとrequirements.txtがある場所)にDockerfileという名前で保存します。そのフォルダで、次のコマンドを実行してイメージを作ります。
docker build -t my-python-app .-tでイメージに名前(my-python-app)を付けます。最後の.は、いまいるフォルダを、ビルドに使うファイルの置き場所(ビルドコンテキスト)として渡すという意味です。DockerfileのCOPYは、このフォルダの中のファイルをコピーします。-fでDockerfileを指定しなければ、このフォルダのDockerfileが使われます(公式「Build context」)。できたイメージからコンテナを起動します。
docker run -d -p 8000:8000 my-python-appこの例は、アプリが8000番ポートで待ち受けている場合です。Dockerfileの命令は1つずつイメージの層(レイヤー)になり、Dockerfileを変えてビルドし直すと、変わった層だけが作り直されます(公式「What is Docker?」)。命令の書き方は公式の「Dockerfile reference」にあります。
Docker Composeで複数のコンテナをまとめて起動する
services:
web:
image: nginx
ports:
- "8080:80"
depends_on:
- db
db:
image: mysql:8.4
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: sample_db
MYSQL_USER: sample_user
MYSQL_PASSWORD: sample_pass
volumes:
- db-data:/var/lib/mysql
volumes:
db-data:Webサーバーとデータベースのように、いくつかのコンテナを組み合わせて動かすときは、Docker Composeを使います。上の内容をcompose.yamlという名前で保存し、同じフォルダで次のコマンドを実行します。
# まとめて起動する
docker compose up -d
# 動いているか確かめる
docker compose ps
# まとめて止めて、コンテナとネットワークを削除する
docker compose downファイル名はcompose.yamlが推奨で、docker-compose.ymlなどの古い名前も読み込まれます。古い記事によくあるversion: '3'の行は今は使われておらず、書くと「obsolete(古い)」という警告が出ます(公式「Version and name top-level elements」)。
Dockerを使うときの注意点
メモリとCPUの使いすぎを防ぐ
docker run -d --memory 512m --cpus 1 --name web nginx何も指定しないと、コンテナはホストのメモリやCPUを、使えるだけ使えます。--memoryでメモリ、--cpusでCPUの上限を決めておくと、1つのコンテナがホスト全体を重くするのを防げます(公式「Resource constraints」)。
イメージを小さくする
イメージが大きいと、ビルドやダウンロードに時間がかかります。ビルドに使う道具と、動かすときに要るものを分ける「マルチステージビルド」を使うと、最後のイメージを小さくできます(公式「Multi-stage builds」)。
権限とポートの公開に気をつける
dockerグループのユーザーは、rootと同じくらいの権限を持つ- ufwやfirewalldを使っていても、
-pで公開したポートはそのルールを通らない - コンテナを削除すると、ボリュームに置いていないデータは消える
参考
- What is Docker?(Docker公式ドキュメント)
- What is a container?(Docker公式ドキュメント)
- Docker Desktop license agreement(Docker公式ドキュメント)
- Install Docker Desktop on Windows(Docker公式ドキュメント)
- Install Docker Desktop on Mac(Docker公式ドキュメント)
- Install Docker Engine on Ubuntu(Docker公式ドキュメント)
- Linux post-installation steps for Docker Engine(Docker公式ドキュメント)
- docker container run(Docker公式CLIリファレンス)
- docker container stop(Docker公式CLIリファレンス)
- docker container rm(Docker公式CLIリファレンス)
- docker image rm(Docker公式CLIリファレンス)
- docker container logs(Docker公式CLIリファレンス)
- How Compose works(Docker公式ドキュメント)
- Version and name top-level elements(Docker公式ドキュメント)
- docker compose down(Docker公式CLIリファレンス)
- Docker Hub

コメント