株式会社エスロジカル
株式会社エスロジカル
SSL証明書(DV、OV、EV)、セキュリティ、Web開発、Linux開発、Go言語

HOME > 技術ドキュメント > Docker 入門(Ubuntu 24.04)

Docker 入門(Ubuntu 24.04 LTS)


Docker は、アプリケーションをコンテナとしてパッケージ化・実行するためのプラットフォームです。
Ubuntu 24.04 LTS への Docker Engine インストールから、基本操作・Dockerfile・docker compose まで解説します。


Ubuntu 公式リポジトリではなく、Docker 公式リポジトリからインストールします。

# 依存パッケージのインストール
sudo apt update
sudo apt install -y ca-certificates curl

# Docker 公式 GPG キーの追加
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

# リポジトリを追加
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
  https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Docker Engine をインストール
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# バージョン確認
docker --version
# Docker version 26.x.x, build ...

# 現在のユーザーを docker グループに追加
sudo usermod -aG docker $USER

# 一度ログアウトして再ログインすると反映される
# 確認
docker run hello-world

docker pull nginxイメージをダウンロード
docker imagesローカルのイメージ一覧
docker run -d -p 80:80 nginxコンテナをバックグラウンドで起動
docker ps実行中のコンテナ一覧
docker ps -a停止中を含む全コンテナ一覧
docker stop <ID>コンテナの停止
docker rm <ID>コンテナの削除
docker logs <ID>コンテナのログ表示
docker exec -it <ID> bashコンテナ内でシェルを起動

Go 言語 Web アプリのコンテナ化例です。

# Dockerfile
FROM golang:1.22-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o server .

# 実行イメージは軽量な alpine を使用
FROM alpine:3.19
WORKDIR /app
COPY --from=builder /app/server .
EXPOSE 8080
CMD ["./server"]
# ビルドして実行
docker build -t myapp:latest .
docker run -d -p 8080:8080 myapp:latest

Web アプリ(Go)+ PostgreSQL + Nginx のスタック例です。

# compose.yaml
services:
  app:
    build: .
    restart: always
    environment:
      - DATABASE_URL=postgres://user:pass@db:5432/mydb
    depends_on:
      - db

  db:
    image: postgres:16-alpine
    restart: always
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: mydb
    volumes:
      - pgdata:/var/lib/postgresql/data

  nginx:
    image: nginx:alpine
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
      - /etc/ssl/certs:/etc/ssl/certs:ro
    depends_on:
      - app

volumes:
  pgdata:
# 起動(バックグラウンド)
docker compose up -d

# ログ確認
docker compose logs -f

# 停止
docker compose down

Docker コンテナで HTTPS を提供する場合も、通常の SSL証明書が必要です。
Nginx コンテナに証明書をマウントして使用するか、ホスト側の Nginx をリバースプロキシとして使う構成が一般的です。
有効期間の短縮(最大47日化)が進むため、証明書の自動更新が重要になります。 エスロジカルの SSL API を使えば、証明書の更新を API で自動化できます。

SSL証明書の購入はこちら / Nginx SSL/TLS 設定


← 技術ドキュメント一覧へ戻る