🦍

Docker でコンテナ型仮想化環境を構築する

2023/08/05に公開

アプリケーションの実行環境をコンテナ化する Docker Engine と、コンテナの起動構成を管理する Docker Compose の導入方法を説明します。

🛠️ 事前準備

デバイスやソフトウェアは以下を用いる。

  • 💻 PC端末(Ubuntu Server)
  • 💿 ca-certificates 、💿 curl、💿 gnupg、
  • 💿 Docker Engine 、💿 Docker CLI、💿 containerd、
    🔌 Docker Compose 、🔌 Docker Buildx、
    🌐 Docker Hub

1. スーパーユーザーになる

管理者権限でコマンドを実行できるようにする。

🖥️ terminal
# su を差し上げる
sudo su -

2. apt リポジトリの準備

リポジトリの HTTPS 接続に必要となるパッケージをインストールする。

🖥️ terminal
# パッケージリストの更新
apt-get update

# 必要なパッケージをインストール
apt-get install ca-certificates curl gnupg
パッケージ 内容
ca-certificates CA証明書
curl URLデータ通信
gnupg 暗号化ソフト

3. Docker リポジトリのセットアップ

Docker 公式で公開されている署名鍵でリポジトリを設定する。

🖥️ terminal
# Docker 公式の GPG キーを取得
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg

# リポジトリの追加
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" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null

4. パッケージインデックスを更新

レポジトリの書き換え後、最新のパッケージリストを反映させる。

🖥️ terminal
# パッケージインデックスを更新
apt-get update

🎭 作業手順

1. Docker のインストール

Docker Engine、containerd、Docker Compose をインストールする。

🖥️ terminal
# 最新バージョンをインストール
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
パッケージ 内容
docker-ce Docker エンジン(コミュニティ版)
docker-ce-cli Docker コマンドラインツール
containerd.io コンテナランタイム
docker-buildx-plugin Docker コマンドの拡張プラグイン
docker-compose-plugin Docker コンテナの一元管理ツール

2. 一般ユーザーへの権限付与

任意のユーザーに Ddocker コマンドの利用を許可する。

🖥️ terminal
# ユーザーをdockerグループに追加
usermod -aG docker {username}
chmod 666 /var/run/docker.sock

⛳️ 動作確認

1. Docker コンテナの実行

Docker が正常にインストールされていることを確認する。

🖥️ terminal
# コンテナの作成&起動
# ※本コンテナは一連の処理を実行後に自動停止する
docker run hello-world

# イメージを確認
docker images

# コンテナの表示(-a フラグで停止中のコンテナも全て表示)
docker ps -a

# コンテナを削除
# docker ps -a コマンドで確認した CONTAINER ID を指定
docker rm xxxxxxxxxxxx

# イメージを削除
docker rmi hello-world

Discussion