はじめに
最近Dockerについて勉強しました。
本記事は開発現場で使う基本的なコマンドや環境構築の手順をまとめてみた!になります
おすすめの読者
- UbuntuでDockerを始めたい方
- Dockerコマンドの意味を理解したい方
前提条件
- ターミナルの基礎的な操作ができる
注意
本記事ではDocker Desktopは扱っていません。Linux (Ubuntu) 環境でのCLI操作になりますのでご了承ください。
Docker とは?
Docker(ドッカー)とは、「コンテナ」と呼ばれる独立した環境を使って、アプリケーションの開発・配布・実行を行うためのオープンソースプラットフォームです。
特徴は、アプリケーション本体だけでなく、動作に必要なライブラリや設定ファイルなどをまるごと一つの「箱(コンテナ)」に詰め込める点です。
Dockerを使うメリット
Dockerを使うと主に次の2つのメリットがあります。
①「自分の環境では動くのに」がなくなる
メンバー全員が同一のコンテナ構成で開発を行うため、「自分のPCでは動くのに、チームメンバーの環境ではエラーになる」といった問題が発生しません。
環境構築の手順が標準化されるため、新メンバーがプロジェクトに参加する際の立ち上がりも非常にスムーズになります。
② アプリケーションの管理が簡単になる
アプリごとに独立したコンテナを作るため、例えば「アプリAはPHP 7、アプリBはPHP 8」のように、異なるバージョンの共存が容易になります。
また、PC本体にツール等を直接インストールすることなく、コンテナの中だけで完結して利用できるのも大きな利点です。
Dockerの用語説明
この後に出てくる用語に混乱しないようにDockerの要素について簡単に説明します。
Dockerコンテナ
アプリケーションを実行できる隔離された環境です。
開発環境の統一やデプロイの高速化を実現します。
Dockerイメージ
コンテナを作成するための金型です。
読み取り専用で、どこでも同じ環境を再現できます。
Dockerfile
Dockerイメージを作成するための設計図になります。テキスト形式で構築手順(OSの設定やインストールコマンドなど)を記述し、環境の再現性を担保します。
Docker Compose
複数のコンテナを定義・実行する一括管理ツールです。docker-compose.yml に設定を書くことで、複雑な連携が必要な環境もコマンド1つで操作できます。
関係性を図にすると以下のようになります。
UbuntuへのDockerインストール方法
実際にUbuntuにDockerをインストールしてコンテナを実行するところまで解説します。
1. 既存の古いDockerパッケージの削除
過去にインストールされた古いバージョンが残っていると不具合の原因になります。
以下のコマンドを実行して、競合するパッケージをアンインストールします。
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
コマンドの詳しい解説(クリックで展開)
for はシェルスクリプトにおける繰り返しコマンドです。
-
for pkg in …: ここに書かれたdocker.ioやdocker-docなどのリストを一つずつ取り出し、一時的にpkgという変数に入れます。 -
do …: ここから繰り返したい処理が始まります。 -
sudo apt-get remove $pkg;: ここで実際に削除コマンドを実行します。$pkgの部分が、その都度リストから取り出した名前に置き換わります。 -
done: 繰り返しの終了地点です。
このようにすることで、何度も削除コマンドを実行する手間を省くことができます。
2. Docker公式リポジトリの追加
Ubuntu標準のリポジトリは安定していますが、バージョンが古いことがあるため、開発元が直接提供する公式リポジトリを追加します。
パッケージ情報の更新と必須ツールのインストール
sudo apt-get update
sudo apt-get install ca-certificates curl
GPGキーの保存用ディレクトリ作成
aptがパッケージの正当性を検証するための「署名鍵」を配置する場所を作ります。
sudo install -m 0755 -d /etc/apt/keyrings
Docker公式のGPGキーをダウンロード
$ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
GPGキーの読み取り権限を設定
sudo chmod a+r /etc/apt/keyrings/docker.asc
なぜこれが必要?
正規のGPGキーを登録することで、Dockerをインストールする際、悪意のあるユーザーによるソフトウェアのすり替えを防ぐことができます。
リポジトリをAPTソースリストに追加
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
上記で出てきた、GPGキーはGPGキー(GNU Privacy Guard Key)は、データやメールの暗号化・復号、電子署名に利用される公開鍵と秘密鍵のペアのことです。
ここでは詳しい説明は省きます。
3. Docker Engineのインストール
リポジトリを追加したので、一度更新します。
sudo apt-get update
最新版のDocker関連ツールを一括でインストールします。
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
| ツール名 | 役割 |
|---|---|
| docker-ce | Docker本体(Community Edition) |
| docker-ce-cli | コマンドで操作するためのツール |
| containerd.io | コンテナを動かすための実行基盤 |
| docker-compose-plugin | 複数のコンテナを管理する機能 |
動作確認
以下のコマンドでバージョンが表示されればインストール完了です。
docker -v
# 出力例: Docker version 29.1.2, build 890dcca
サービスの稼働状況も確認しておきましょう。
Active: active (running) となっていればOKです。
systemctl status docker.service
4. 一般ユーザーで実行できるようにする
デフォルトでは docker コマンドの実行に sudo(root権限)が必要です。毎回 sudo を打つのは大変なので、一般ユーザーでも実行可能にします。
設定手順
- dockerグループの作成(存在しない場合)
sudo groupadd docker - ユーザーをdockerグループに追加
sudo usermod -aG docker $USER - グループ設定の反映
newgrp docker
動作確認
sudo なしで以下のコマンドが実行できれば設定完了です!
docker run hello-world
Docker の基本コマンドまとめ
docker stats
現在動いているコンテナが、PCのリソース(CPUやメモリ)をどれくらい使っているかをリアルタイムで監視するコマンドです。
実行すると以下のような項目が表示されます。
| 項目 | 説明 |
|---|---|
| CONTAINER ID | コンテナ固有のID |
| NAME | コンテナ名 |
| CPU % | CPU使用率 |
| MEM USAGE / LIMIT | メモリ使用量 / メモリ上限 |
| MEM % | メモリ使用率 |
| NET I/O | ネットワーク受信量 / 送信量 |
| BLOCK I/O | ディスク読み込み量 / 書き込み量 |
| PIDS | プロセスIDの数 |
docker images
PCの中に保存されている「Dockerイメージ(設計図)」の一覧を表示します。
docker images
| 項目 | 説明 |
|---|---|
| REPOSITORY | イメージの名前(例: ubuntu, nginx) |
| TAG | バージョンタグ(例: latest, 20.04) |
| IMAGE ID | イメージ固有のID |
| CREATED | 作成された日時 |
| SIZE | イメージのサイズ |
docker ps
起動中のコンテナ一覧を表示するコマンドです。docker ps -a とオプションをつけると、停止しているコンテナも含めてすべて表示します。
docker logs <コンテナ名またはID>
コンテナが出力したエラーメッセージや履歴を確認する時に使います。
プログラムがうまく動かない時の調査に必須です。
-
docker logs -f <コンテナ名>:リアルタイムでログを流し見できます
docker exec -it <コンテナ名> bash
動いているコンテナの中に入るコマンドです。
コンテナ内で直接コマンド操作ができます。※ コンテナによっては bash が入っておらず、 sh を使う場合もあります(docker exec -it <名前> sh)。
docker stop <コンテナ名>
コンテナを一時停止するコマンドです。データや設定は残ります。
docker rm <コンテナ名>
コンテナを削除するコマンドです。基本的には停止したコンテナのみ削除できます。
docker system prune
停止しているコンテナ、使われていないネットワークなどをまとめて削除します。
注意
停止中のコンテナが全て消えるので、消したくないものがある場合は気をつけてください。
まとめ
本記事では、Ubuntu環境におけるDockerのインストール手順から、開発現場でよく使う基本的なコマンドや環境構築の手順をまとめてみました。
Dockerを導入することで、開発環境の構築手順をドキュメントではなく「設定ファイル」として管理できるようになります。これにより、OSの差異による不具合を防ぎ、スムーズなチーム開発や一貫性のある個人開発が可能になります。
ここで紹介していないコマンドもたくさんあるので、ぜひ生成AIなども活用しながら色々試すのもいいかもしれませんね!