Docker / Podman
この記事では、Ubuntu 26.04 に Docker および Podman コンテナー テクノロジをインストールして使用する方法について説明します。
Docker CE のインストール
古いバージョンを削除する
sudo apt remove docker docker-engine docker.io containerd runc 2>/dev/nullDocker CE をインストールする
# Install dependencies
sudo apt update
sudo apt install ca-certificates curl gnupg -y
# Add Docker official GPG key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add Docker repository
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Install Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -ysudo を使用せずに Docker を使用します
# Add current user to the docker group
sudo usermod -aG docker $USER
# Apply group changes (or log out and back in)
newgrp dockerインストールの検証
docker --version
docker compose version
docker run hello-worldDocker ミラーの構成 (中国)
/etc/docker/daemon.json を編集します:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.xuanyuan.me"
]
}
EOF
# Restart Docker
sudo systemctl daemon-reload
sudo systemctl restart dockerDocker の基本
画像の操作
# Pull an image
docker pull ubuntu:26.04
docker pull nginx:latest
# List local images
docker images
# Remove an image
docker rmi nginx:latest
# Build an image
docker build -t myapp:latest .
# Clean up unused images
docker image prune -aコンテナオペレーション
# Run a container
docker run -d --name mynginx -p 8080:80 nginx
# List running containers
docker ps
# List all containers
docker ps -a
# Enter a container
docker exec -it mynginx bash
# View container logs
docker logs -f mynginx
# Stop and remove a container
docker stop mynginx
docker rm mynginx
# Clean up all stopped containers
docker container pruneボリューム
# Create a volume
docker volume create mydata
# Mount a volume
docker run -d -v mydata:/data --name mycontainer ubuntu
# Mount a host directory
docker run -d -v /home/user/data:/data --name mycontainer ubuntu
# List volumes
docker volume ls
docker volume inspect mydataDocker 作成
Docker Compose は、マルチコンテナ アプリケーションの定義と実行に使用されます。
例: Web アプリ + データベース
compose.yaml を作成します。
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
depends_on:
- db
db:
image: postgres:18
environment:
POSTGRES_DB: mydb
POSTGRES_USER: admin
POSTGRES_PASSWORD: secret
volumes:
- pgdata:/var/lib/postgresql/data
ports:
- "5432:5432"
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
pgdata:一般的な作成コマンド
# Start all services
docker compose up -d
# Check service status
docker compose ps
# View logs
docker compose logs -f web
# Stop all services
docker compose down
# Stop and remove volumes
docker compose down -v
# Rebuild and start
docker compose up -d --buildDockerファイルの書き込み
典型的なマルチステージ ビルドの例:
# Build stage
FROM node:22-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# Runtime stage
FROM node:22-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
EXPOSE 3000
CMD ["node", "dist/index.js"]Podman: Docker の代替
Podman は、Docker CLI と互換性のあるデーモンレス コンテナ エンジンです。
Podman をインストールする
sudo apt install podman -yインストールを確認します。
podman --version
podman infoPodman の基本
Podman コマンドは、Docker とほぼ同じです。
# Pull and run a container
podman pull docker.io/library/nginx
podman run -d --name mynginx -p 8080:80 nginx
# List containers
podman ps
# Stop and remove
podman stop mynginx
podman rm mynginxPodman と Docker の違い
- デーモンレス: Podman はバックグラウンド デーモン プロセスを必要としません
- ルートレス: Podman はデフォルトでコンテナを通常のユーザーとして実行するため、セキュリティが強化されます。
- ポッドのサポート: Podman は、ポッドの概念をネイティブにサポートします (Kubernetes ポッドと同様)
- 互換性: Docker コマンドの大部分は、Podman に直接置き換えることができます。
Docker 互換性エイリアスのセットアップ
echo 'alias docker=podman' >> ~/.bashrc
source ~/.bashrcPodman 作成
# Install podman-compose (prefer apt or pipx to avoid the PEP 668 restriction)
sudo apt install -y podman-compose
# Or: sudo apt install -y pipx && pipx install podman-compose
# Usage is the same as docker compose
podman-compose up -d
podman-compose downDocker システムメンテナンス
# Check disk usage
docker system df
# Full cleanup (use with caution)
docker system prune -a --volumes
# Check Docker service status
sudo systemctl status dockerDocker と Podman にはそれぞれ長所があります。 Docker はより成熟したエコシステムを備えていますが、Podman はより優れたセキュリティを提供し、デーモンを必要としません。ニーズに基づいて選択してください。
よくある質問
Docker と Podman のどちらを選択すればよいですか?
初心者の場合、またはチームと共同作業する必要がある場合は、より成熟したエコシステム、豊富なドキュメント、および広範なコミュニティ サポートを備えた Docker をお勧めします。セキュリティを優先する場合、または root 権限のない環境で作業する場合は、デーモンを必要とせず、デフォルトで非 root ユーザーとして実行されるため、Podman を選択することをお勧めします。
Docker の Snap バージョンを使用できますか?
Ubuntu リポジトリの docker.io パッケージと、Docker の Snap バージョンは使用できますが、通常、バージョンが公式の Docker CE より遅れており、互換性の問題が発生する可能性があります。最新バージョンと最高の互換性を得るには、この記事で説明されているように、公式 Docker リポジトリから Docker CE をインストールすることをお勧めします。
Docker を使用するには sudo が必要ですか?
デフォルトでは、Docker コマンドを実行するには sudo 権限が必要です。ユーザーを docker グループに追加すると、sudo を使用せずに Docker を使用できます (sudo usermod -aG docker $USER を実行してからログアウトし、再度ログインします)。 docker グループに所属することは root 権限を持つことと同等であるため、マルチユーザー環境では注意が必要です。
関連記事
- Docker Compose Service Orchestration — サーバー環境での Docker Compose を使用したマルチコンテナ アプリケーションのデプロイ
- 仮想マシンとコンテナ — VM とコンテナのテクノロジを比較して、それぞれのユースケースを理解する