1. はじめに
Dockerとは?
Dockerは、コンテナ型仮想化技術を活用して、アプリケーションの開発・配布・実行を効率的に行うためのプラットフォームです。従来の仮想マシン(VM)とは異なり、コンテナはホストOSのカーネルを共有するため、起動が高速であり、リソース消費も少なくなります。
UbuntuでDockerを使うメリット
Ubuntuは、Dockerとの親和性が高いLinuxディストリビューションの一つです。その理由として以下の点が挙げられます。
- 公式サポート:DockerはUbuntuを正式にサポートしており、公式リポジトリから簡単にインストール可能。
- 安定したパッケージ管理:UbuntuのAPTパッケージマネージャーを活用し、Dockerのバージョン管理が容易。
- 広範なコミュニティサポート:Ubuntuは世界的に利用者が多いため、トラブル発生時に情報を入手しやすい。
この記事で学べること
本記事では、以下の内容を順を追って解説します。
- UbuntuにDockerをインストールする方法
- Dockerイメージの基本的な操作
- Dockerfileを使ったカスタムイメージの作成
- Ubuntuコンテナの日本語環境設定
- Dockerイメージの最適化と軽量化
- Ubuntuコンテナでのアプリ開発
- よくあるエラーと解決策
初心者から上級者まで活用できる内容になっていますので、ぜひ参考にしてください。
2. UbuntuでDockerをインストール
公式リポジトリを使用したDockerのインストール
Ubuntuでは、公式リポジトリを利用することで簡単にDockerをインストールできます。以下の手順に従ってセットアップを行いましょう。
1. 既存のDockerパッケージを削除
Ubuntuには、docker.io
というパッケージが標準で提供されていますが、これは古いバージョンの可能性があるため、削除しておきます。
sudo apt remove docker docker-engine docker.io containerd runc
2. 必要なパッケージをインストール
インストール前に必要な依存パッケージをインストールします。
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
3. Docker公式リポジトリを追加
Dockerの公式GPGキーを追加し、リポジトリを設定します。
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
4. Dockerのインストール
リポジトリを追加したら、Dockerをインストールします。
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
5. インストールの確認
Dockerが正しくインストールされたか確認するため、バージョン情報を表示してみます。
docker --version
インストール後の初期設定
1. Dockerサービスの起動と有効化
Dockerのサービスを起動し、システム起動時に自動的に実行されるように設定します。
sudo systemctl start docker
sudo systemctl enable docker
2. 非rootユーザーでDockerを使用可能にする
デフォルトでは、Dockerはrootユーザーのみが実行できるため、一般ユーザーがDockerコマンドを使えるように設定します。
sudo usermod -aG docker $USER
設定を適用するには、一度ログアウトし、再ログインしてください。
3. 動作確認
一般ユーザーの権限で hello-world
コンテナを実行し、Dockerが正しく動作するか確認します。
docker run hello-world
出力に「Hello from Docker!」と表示されれば、インストールは成功です。

3. Dockerイメージの基本操作
Dockerイメージとは?
Dockerイメージは、コンテナを作成するためのテンプレートのようなものです。UbuntuベースのDockerイメージを利用することで、すぐにUbuntu環境を立ち上げることができます。
Docker HubからUbuntuイメージを取得
Docker Hubには、多くの公式Dockerイメージが登録されています。Ubuntuイメージを取得するには、以下のコマンドを実行します。
docker pull ubuntu
コンテナの起動・停止
取得したUbuntuイメージを使用して、コンテナを起動できます。
docker run -it ubuntu bash
このコマンドを実行すると、Ubuntuコンテナのシェルが開き、コンテナ内で操作が可能になります。
コンテナを一覧表示
起動中のコンテナを確認するには、次のコマンドを使用します。
docker ps
すべてのコンテナ(停止中も含む)を表示するには、-a
オプションをつけます。
docker ps -a
コンテナの停止と削除
実行中のコンテナを停止するには、以下のコマンドを使用します。
docker stop [コンテナIDまたは名前]
不要になったコンテナを削除するには、次のコマンドを実行します。
docker rm [コンテナIDまたは名前]
Dockerイメージの管理
ダウンロード済みのDockerイメージを一覧表示するには、以下のコマンドを使います。
docker images
不要なイメージを削除するには、次のコマンドを使用します。
docker rmi [イメージID]
4. Dockerfileを使ったカスタムイメージの作成
Dockerfileとは?
Dockerfileとは、Dockerイメージを作成するための設定ファイルです。Dockerfileに記述された指示に従って、カスタマイズされたDockerイメージを作成できます。これにより、開発環境を統一したり、必要なパッケージを含んだイメージを作成したりできます。
Dockerfileの基本構文
Dockerfileには、主に以下のような命令を記述します。
コマンド | 説明 |
---|---|
FROM | ベースとなるイメージを指定 |
RUN | コマンドを実行してイメージを構築 |
COPY | ファイルをコンテナにコピー |
WORKDIR | 作業ディレクトリを設定 |
CMD | コンテナ起動時に実行するデフォルトコマンド |
ENTRYPOINT | コンテナ実行時のエントリーポイント |
Ubuntuベースのカスタムイメージ作成
以下の手順で、UbuntuベースのカスタムDockerイメージを作成してみましょう。
1. 作業ディレクトリを作成
まず、新しいプロジェクトディレクトリを作成し、移動します。
mkdir my-ubuntu-image
cd my-ubuntu-image
2. Dockerfileを作成
ディレクトリ内に Dockerfile
を作成し、以下の内容を記述します。
# ベースとなるUbuntuの公式イメージ
FROM ubuntu:latest
# メンテナー情報(任意)
LABEL maintainer="your-email@example.com"
# パッケージリストを更新し、基本的なツールをインストール
RUN apt update && apt install -y curl vim git
# 作業ディレクトリを設定
WORKDIR /workspace
# コンテナ起動時に実行するコマンド
CMD ["bash"]
3. Dockerイメージをビルド
作成した Dockerfile
を使って、カスタムイメージをビルドします。
docker build -t my-ubuntu-image .
-t
オプションでイメージ名を指定しています。
4. イメージを確認
ビルドされたイメージを確認するには、以下のコマンドを実行します。
docker images
5. コンテナを起動
作成したカスタムイメージからコンテナを起動します。
docker run -it my-ubuntu-image
このコンテナには curl
や vim
などのツールがインストールされているはずです。
5. Ubuntuコンテナの日本語環境設定
デフォルトのUbuntuイメージは英語環境になっており、日本語を使用するためには追加の設定が必要です。
日本語ロケールの設定
Ubuntuコンテナで日本語を表示・入力できるようにするには、日本語ロケールをインストールします。
1. 必要なパッケージのインストール
apt update
apt install -y language-pack-ja locales
2. ロケールの設定
ロケールを設定し、適用します。
locale-gen ja_JP.UTF-8
update-locale LANG=ja_JP.UTF-8
3. 設定の反映
export LANG=ja_JP.UTF-8
日本語入力環境の構築
ターミナルで日本語を入力できるようにするには ibus-mozc
を導入します。
apt install -y ibus-mozc
GUI環境を使用する場合は、以下の環境変数を追加してください。
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
GUIアプリケーションの利用
Dockerコンテナ内でGUIアプリを利用するには、Xサーバーを使用する方法があります。
ホスト側でXサーバーをインストールし、X11を有効にしてコンテナを実行します。
docker run -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix my-ubuntu-image
6. Dockerイメージの最適化と軽量化
Dockerイメージを最適化することで、コンテナの起動速度を向上させ、ストレージの使用量を削減できます。ここでは、軽量なイメージを作成するための手法を紹介します。
軽量なUbuntuベースのイメージを作る方法
デフォルトの ubuntu:latest
はサイズが大きいため、より軽量な ubuntu:minimal
などを使うとコンテナサイズを抑えられます。
FROM ubuntu:minimal
また、Ubuntuよりもはるかに軽量な Alpine Linux を使用する方法もあります。
FROM alpine:latest
RUN apk add --no-cache bash curl
この方法を利用すると、イメージのサイズを数百MB単位で削減できます。
不要なファイルを削除してイメージサイズを減らす
apt-get
でインストールした不要なキャッシュを削除することで、イメージサイズを縮小できます。
RUN apt update && apt install -y curl vim && apt clean && rm -rf /var/lib/apt/lists/*
この rm -rf /var/lib/apt/lists/*
を加えることで、パッケージリストを削除し、無駄なデータを削減できます。
マルチステージビルドの活用
例えば、ビルド時のみコンパイラを使い、最終イメージを軽量にできます。
FROM ubuntu as builder
RUN apt update && apt install -y gcc
FROM ubuntu:minimal
COPY --from=builder /usr/bin/gcc /usr/bin/gcc
この方法を使うことで、開発ツールを最終イメージに含めず、軽量な環境を作ることができます。
7. 実践:Ubuntuコンテナでアプリ開発
ここでは、Ubuntuコンテナを使って実際に開発環境を構築する方法を紹介します。
Python開発環境のセットアップ
Ubuntuコンテナ内でPython開発環境をセットアップするには、以下のDockerfileを作成します。
FROM ubuntu:latest
RUN apt update && apt install -y python3 python3-pip
CMD ["python3"]
イメージをビルドし、コンテナを起動します。
docker build -t python-dev .
docker run -it python-dev
この環境では python3
コマンドを実行でき、スクリプトの開発やテストが可能です。
Node.js開発環境のセットアップ
Node.jsの開発環境を構築する場合は、以下のDockerfileを利用します。
FROM ubuntu:latest
RUN apt update && apt install -y nodejs npm
CMD ["node"]
同様にビルドして実行します。
docker build -t node-dev .
docker run -it node-dev
この環境では node
コマンドを使って、JavaScriptの実行やアプリ開発が可能になります。
8. FAQ・トラブルシューティング
Dockerを使用していると、さまざまなトラブルに遭遇することがあります。ここでは、よくある質問とその解決策を紹介します。
Dockerと仮想マシンの違い
- Docker: ホストOSのカーネルを共有するため軽量であり、コンテナの起動が高速。
- 仮想マシン(VM): 独立したOSを持つため、リソースの消費が多く、起動も遅い。
Dockerはリソースの最適化に優れているため、開発環境やデプロイの自動化に適しています。
Ubuntuコンテナのデータ永続化
コンテナが停止してもデータを保持するには、ボリュームマウントを利用します。
docker run -v my_data:/data ubuntu
コンテナを削除しても my_data
ボリュームにデータが保存され、再利用できます。
よくあるエラーと解決策
1. permission denied
エラー
Dockerを実行しようとした際に permission denied
が表示される場合、現在のユーザーが docker
グループに属していない可能性があります。
以下のコマンドを実行し、ユーザーを docker
グループに追加してください。
sudo usermod -aG docker $USER
適用後、一度ログアウトして再ログインする必要があります。
2. image not found
エラー
Docker Hubからイメージが削除されている場合、新しいタグを指定して取得してください。
docker pull ubuntu:22.04
特定のバージョンを明示することで、適切なイメージを取得できます。