DebianにDockerを簡単・確実にインストールする方法

はい、承知いたしました。DebianにDockerを簡単かつ確実にインストールする方法に関する詳細な記事を記述します。約5000語を目指し、各ステップの理由や関連情報を含め、初心者から経験者まで参考になるように努めます。

以下が記事の本文です。


DebianにDockerを簡単・確実にインストールする方法:詳細解説

この記事では、DebianオペレーティングシステムにDockerをインストールするための、最も推奨される「公式リポジトリを使用する方法」について、簡単かつ確実に行うための詳細な手順を解説します。なぜこの方法が推奨されるのか、各ステップは何を行っているのか、インストール後の設定、基本的な使い方、さらにはトラブルシューティングや応用的な設定まで、幅広くカバーします。

Dockerは、アプリケーションを「コンテナ」と呼ばれる独立した環境にパッケージ化し、どこでも同じように実行できるようにするプラットフォームです。これにより、開発、テスト、デプロイの各段階で環境の差異による問題を劇的に減らすことができます。Debianはその安定性とオープンソースの哲学から、多くのサーバー環境や開発環境で利用されており、Dockerを導入することでその能力をさらに引き出すことができます。

この記事は、特にDebian初心者の方でも安心して作業を進められるように、コマンドの意味や背景にある概念についても丁寧に説明することを心がけています。

想定読者:

  • Debian Linuxの基本的なコマンド操作ができる方
  • Dockerのインストールを確実に行いたい方
  • インストール手順だけでなく、その意味や背景を理解したい方

目次:

  1. はじめに:Dockerとは何か、なぜDebianにインストールするのか
    • Dockerとは
    • コンテナのメリット
    • なぜDebianにDockerをインストールするのか
    • 公式リポジトリからのインストールの優位性
  2. システム要件と準備
    • サポートされるDebianバージョン
    • ユーザー権限
    • インターネット接続
    • 既存のDocker関連パッケージの確認と削除(必要な場合)
  3. 公式リポジトリからのDockerインストール手順(推奨)
    • ステップ1:パッケージリストの更新と必要パッケージのインストール
    • ステップ2:Docker公式GPGキーの追加
    • ステップ3:Docker公式リポジトリの追加
    • ステップ4:再度パッケージリストを更新
    • ステップ5:Docker Engine, CLI, Containerdなどのインストール
    • ステップ6:インストールの確認(hello-worldコンテナの実行)
  4. インストール後の設定と基本的な使い方
    • sudoなしでDockerコマンドを実行できるようにする(ユーザーをdockerグループに追加)
      • セキュリティに関する注意点
      • 設定の適用
    • Dockerデーモンの管理(起動、停止、再起動、ステータス確認)
    • Dockerの起動設定(自動起動)
    • 基本的なDockerコマンドの紹介
      • イメージの検索 (docker search)
      • イメージの取得 (docker pull)
      • コンテナの実行 (docker run)
      • 実行中のコンテナ一覧 (docker ps)
      • 全てのコンテナ一覧 (docker ps -a)
      • コンテナの停止 (docker stop)
      • コンテナの削除 (docker rm)
      • イメージの一覧 (docker images)
      • イメージの削除 (docker rmi)
  5. トラブルシューティング
    • GPGキーエラー
    • リポジトリが見つからない、または不正なリポジトリのエラー
    • 権限エラー(Got permission denied など)
    • Dockerデーモンが起動しない、またはステータスが inactive/dead になっている
    • hello-worldが実行できない
    • ネットワークに関する問題(コンテナが外部と通信できないなど)
  6. 応用的な設定と考慮事項
    • Dockerデーモンの設定ファイル (/etc/docker/daemon.json)
      • データの保存場所 (data-root) の変更
      • ログドライバーの設定
      • DNSサーバーの設定
      • Registry Mirror の設定
      • その他の設定項目
    • ストレージドライバーについて
      • overlay2 ドライバーの概要と確認方法
      • 他のドライバーについて
    • Docker Compose について
      • Docker Compose とは
      • インストール方法(すでにインストール済みの可能性が高い)
      • 基本的な使い方
    • Dockerのアップデート方法
    • Dockerのアンインストール方法
      • パッケージの削除
      • データの削除(注意!)
    • セキュリティに関する考慮事項
      • dockerグループのリスク
      • Rootless Docker (簡単な紹介)
      • 信頼できるイメージの使用
      • コンテナ内でのroot権限の回避
      • 公開ポートの最小化
  7. まとめ
    • インストールの成功を祝して
    • 次のステップへ

1. はじめに:Dockerとは何か、なぜDebianにインストールするのか

Dockerとは

Dockerは、開発者やシステム管理者がアプリケーションとその依存関係を、軽量でポータブルな「コンテナ」にパッケージ化するためのオープンソースプラットフォームです。コンテナは、ホストOSから独立した環境を提供し、アプリケーションが必要とする全てのものを(コード、ランタイム、システムツール、システムライブラリ、設定など)含んでいます。これにより、アプリケーションはどんな環境でも一貫して動作することが保証されます。

従来の仮想マシン(VM)と比較して、コンテナはOS全体をエミュレートするのではなく、ホストOSのカーネルを共有するため、起動が非常に速く、使用するリソース(CPU、メモリ、ディスク容量)もはるかに少なくて済みます。

コンテナのメリット

  • 移植性(Portability): コンテナは環境に依存しません。ローカルマシン、データセンターのサーバー、クラウドなど、Dockerがインストールされていればどこでも同じように実行できます。
  • 一貫性(Consistency): 開発環境、テスト環境、本番環境など、異なる環境間でアプリケーションの動作が常に一定に保たれます。
  • 分離性(Isolation): 各コンテナは互いに分離されており、ホストシステムからも隔離されています。これにより、あるアプリケーションが他のアプリケーションやホストシステムに影響を与えるリスクが減ります。
  • 効率性(Efficiency): VMに比べてリソース消費が少ないため、より多くのアプリケーションを単一のホストで実行できます。起動も数秒以内と高速です。
  • 迅速なデプロイ: アプリケーションとその依存関係が全てパッケージ化されているため、デプロイプロセスが簡素化され、迅速に行えます。

なぜDebianにDockerをインストールするのか

Debianは、Linuxディストリビューションの中でも特に安定性が高く、フリーソフトウェアとオープンソースの原則を重視しています。サーバー用途からデスクトップ、組み込みシステムまで幅広く利用されており、その堅牢性と広範なパッケージリポジトリは多くのユーザーに支持されています。

DebianにDockerをインストールすることで、以下のようなメリットが得られます。

  • 安定した基盤: Debianの安定したオペレーティングシステム上で、信頼性の高いコンテナ環境を構築できます。
  • 広範な互換性: 多くの開発ツールやミドルウェアがDebian向けに提供されており、これらをコンテナとして利用する際に容易に連携できます。
  • コミュニティサポート: DebianもDockerも巨大なコミュニティを持っており、情報収集や問題解決が比較的容易です。
  • サーバー利用における実績: Debianは多くのプロダクションサーバーで採用されており、Dockerと組み合わせることで、効率的でスケーラブルなアプリケーション運用が可能になります。

公式リポジトリからのインストールの優位性

Dockerは、aptパッケージマネージャーを使って簡単にインストールできますが、Debianの公式リポジトリに含まれるDockerパッケージは、しばしばバージョンが古かったり、Docker Engine以外の関連ツール(Docker Composeなど)が同梱されていなかったりします。

Docker公式が提供する専用リポジトリを使用することで、以下の利点が得られます。

  • 最新版の入手: Docker Engine, Docker CLI, Containerd, Docker Compose Pluginなど、最新かつ推奨される全てのコンポーネントをまとめてインストールできます。
  • 確実なアップデート: apt upgradeコマンドを使って、Docker関連パッケージを簡単に最新の状態に保つことができます。
  • 公式サポート: Docker公式がテスト・推奨している構成でインストールできるため、問題が発生した場合に公式ドキュメントやコミュニティサポートを利用しやすくなります。
  • 一貫性: Dockerがサポートする他のLinuxディストリビューションと同じ方法でインストールできるため、複数の環境を管理している場合に手順を統一できます。

これらの理由から、DebianへのDockerインストールにはDocker公式リポジトリを使用する方法を強く推奨します。

2. システム要件と準備

Dockerをインストールする前に、システムが要件を満たしていること、および必要な準備ができていることを確認します。

サポートされるDebianバージョン

Docker公式では、以下のDebianバージョンのamd64 (x86_64), armhf, arm64 アーキテクチャをサポートしています(2023年12月現在)。

  • Debian Bookworm (12)
  • Debian Bullseye (11)

Debian Stretch (9) や Buster (10) はすでにサポートが終了しています。古いバージョンを使用している場合は、可能であればサポートされているバージョンにアップグレードすることを強く推奨します。lsb_release -cs コマンドでDebianのコードネーム(例: bookworm, bullseye)を確認できます。

Docker Engineは、64ビット版のDebianとLinuxカーネルのバージョン4.19以降が必要です。通常、サポートされているDebianのバージョンを使用していれば問題ありません。

ユーザー権限

Dockerのインストールおよび設定には、root権限が必要です。通常のユーザーでログインしている場合は、sudoコマンドを使用できる必要があります。以降の手順では、sudoを使用することを前提として記述します。

インターネット接続

Docker公式リポジトリからパッケージをダウンロードするため、インターネット接続が必要です。ファイアウォールなどで特定のポートがブロックされていないか確認してください(特にHTTP/HTTPS)。

既存のDocker関連パッケージの確認と削除(必要な場合)

以前にDebianのデフォルトリポジトリや他の方法でDockerをインストールしたことがある場合、競合を避けるためにそれらをアンインストールすることを推奨します。

以下のコマンドで、既存のDocker関連パッケージを確認できます。

bash
sudo apt list --installed | grep docker

もし docker, docker.io, docker-engine, containerd, runc など、Dockerに関連するパッケージが表示された場合、それらを削除します。

bash
sudo apt purge docker docker-engine docker.io containerd runc

注意: apt purgeコマンドは、パッケージだけでなく、関連する設定ファイルも削除します。

Dockerのコンテナ、イメージ、ボリューム、ネットワークなどのデータは、デフォルトでは/var/lib/dockerディレクトリに保存されています。上記のpurgeコマンドでは、このディレクトリは削除されません。もしこれらの既存データを完全に削除したい場合は、以下のコマンドを実行できますが、実行前に重要なデータがないか十分に確認してください。この操作は元に戻せません。

bash
sudo rm -rf /var/lib/docker

ほとんどの場合、既存のデータを保持したいでしょうから、rm -rf /var/lib/dockerコマンドは実行しないのが一般的です。単に古いDockerエンジンを削除し、新しい公式版をインストールするだけであれば、apt purgeだけで十分です。

3. 公式リポジトリからのDockerインストール手順(推奨)

ここからが実際のインストール手順です。一つ一つのコマンドを丁寧に実行していきましょう。

ステップ1:パッケージリストの更新と必要パッケージのインストール

まず、システムのパッケージリストを最新の状態に更新します。これにより、次にインストールするパッケージの最新情報を取得できます。

bash
sudo apt update

次に、DockerリポジトリをHTTPS経由で利用し、GPGキーを管理するために必要なパッケージをインストールします。

bash
sudo apt install ca-certificates curl gnupg lsb-release

このコマンドでインストールされるパッケージは以下の通りです。

  • ca-certificates: Webサイトやリポジトリの証明書を検証するために必要なCA(認証局)証明書が含まれています。HTTPS通信に不可欠です。
  • curl: URLからデータを転送するためのコマンドラインツールです。ここではDocker公式のGPGキーをダウンロードするために使用します。
  • gnupg: GnuPG (GNU Privacy Guard) は、データの暗号化と署名のためのツールです。ここでは、ダウンロードしたGPGキーを管理し、リポジトリのパッケージ署名を検証するために使用します。
  • lsb-release: LSB (Linux Standard Base) に関する情報を提供します。ここでは、後述するステップでDebianのバージョン(コードネーム)を自動的に取得するために使用します。

これらのパッケージは、多くのシステムですでにインストールされているかもしれませんが、確実に存在することを確認するために改めてインストールを実行します。

ステップ2:Docker公式GPGキーの追加

Docker公式リポジトリからダウンロードするパッケージが、本当にDocker公式によって作成され、改竄されていないものであることを確認するために、GPG(GNU Privacy Guard)キーを使用します。このキーは、リポジトリにあるパッケージの署名を検証するために使用されます。

まず、GPGキーを保存するためのディレクトリを作成します。DebianおよびUbuntuの最近のバージョンでは、/etc/apt/keyringsディレクトリにサードパーティのリポジトリのキーを保存することが推奨されています。

bash
sudo mkdir -m 0755 -p /etc/apt/keyrings

  • sudo mkdir: ディレクトリを作成します。
  • -m 0755: ディレクトリのパーミッションを設定します。所有者は読み書き実行、グループとその他のユーザーは読み書きのみが可能です。
  • -p: 親ディレクトリが存在しない場合でもエラーにせず、必要なら作成します。/etc/apt/keyringsは通常存在しないため、-pが必要です。

次に、curlコマンドを使ってDocker公式のGPGキーをダウンロードし、gpg --dearmorでAPTが読み取れる形式に変換した後、作成したディレクトリに保存します。

bash
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

このコマンドは複数の部分から構成されています。

  • curl -fsSL https://download.docker.com/linux/debian/gpg:
    • curl: 指定したURLからデータをダウンロードします。
    • -f: HTTPエラーが発生した場合、エラーとして終了します。
    • -s: 進行状況メーターなどの表示を抑制し、サイレントモードで実行します。
    • -S: -sと併用することで、エラーが発生した場合にエラーメッセージを表示します。
    • -L: リダイレクトをフォローします。URLが変わった場合に自動的に追従します。
    • https://download.docker.com/linux/debian/gpg: Docker公式GPGキーのURLです。
  • |: パイプです。curlコマンドの標準出力を、次のコマンド(gpg)の標準入力に渡します。つまり、ダウンロードしたGPGキーデータがgpgコマンドに直接渡されます。
  • sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg:
    • sudo: gpgコマンドをroot権限で実行します。キーファイルは/etc/apt/keyringsというroot権限が必要な場所に保存するためです。
    • gpg --dearmor: 入力されたGPGキーデータを、APTが認識できる形式(バイナリ形式)に変換します。
    • -o /etc/apt/keyrings/docker.gpg: 変換したGPGキーデータを指定されたファイル名で出力します。

このコマンドにより、Dockerリポジトリの署名検証に使う公開キーが安全にシステムに追加されます。

ステップ3:Docker公式リポジトリの追加

APTがDockerパッケージを見つけられるように、Docker公式リポジトリをシステムのソースリストに追加します。これにより、aptコマンドでDockerパッケージを検索・インストールできるようになります。

bash
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

このコマンドも複数の部分から構成されています。

  • echo "...": 指定した文字列を標準出力に表示します。文字列はAPTのソースリストファイルに書き込む内容です。
    • deb: この行がバイナリパッケージのリポジトリであることを示します。
    • [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg]: オプションの指定です。
      • arch=$(dpkg --print-architecture): インストールするシステムのアーキテクチャ(例: amd64, arm64)を自動的に検出して指定します。これにより、正しいアーキテクチャのパッケージがダウンロードされます。$(...)はコマンド置換で、括弧内のコマンドの実行結果が文字列としてそこに展開されます。
      • signed-by=/etc/apt/keyrings/docker.gpg: このリポジトリからダウンロードするパッケージの署名検証に、ステップ2で追加したGPGキーファイル(/etc/apt/keyrings/docker.gpg)を使用することを指定します。これは新しい安全なリポジトリの指定方法です。
    • https://download.docker.com/linux/debian: DockerリポジトリのベースURLです。
    • $(lsb_release -cs): システムのDebianコードネーム(例: bullseye, bookworm)を自動的に検出します。これにより、システムに適したリポジトリのパス(例: /debian/dists/bookworm/)が使用されます。
    • stable: 使用するDockerリポジトリのチャネル(stable, test, nightly)を指定します。通常は最も安定しているstableを指定します。
  • |: パイプです。echoコマンドの標準出力を、次のコマンド(sudo tee)の標準入力に渡します。
  • sudo tee /etc/apt/sources.list.d/docker.list:
    • sudo: teeコマンドをroot権限で実行します。/etc/apt/sources.list.d/ディレクトリにファイルを書き込むにはroot権限が必要です。
    • tee: 標準入力から読み込んだ内容を、指定されたファイルに書き込み、同時に標準出力にも表示するコマンドです。/etc/apt/sources.list.d/docker.listという名前でファイルを作成し、その中にechoで生成した文字列を書き込みます。このディレクトリに.listファイルを置くことで、APTは自動的にそのリポジトリを認識するようになります。
  • > /dev/null: teeコマンドは通常、書き込んだ内容を標準出力にも表示しますが、ここではその表示を抑制し、/dev/null(何も出力されない特別な場所)に捨てています。これは必須ではありませんが見栄えのために行われます。

このコマンドを実行すると、/etc/apt/sources.list.d/docker.listというファイルが作成され、その中にDockerリポジトリの情報が書き込まれます。これでAPTはDockerパッケージをどこからダウンロードすればよいかを知ります。

ステップ4:再度パッケージリストを更新

新しいリポジトリ情報をシステムに認識させるために、再度パッケージリストを更新します。

bash
sudo apt update

このコマンドを実行すると、Dockerリポジトリから利用可能なパッケージのリストが取得され、ローカルのパッケージキャッシュが更新されます。ここでエラーが表示されないことを確認してください。特に、ステップ3で追加したリポジトリに関するエラーが出ていないかチェックします。もしエラーが出る場合は、ステップ2と3のコマンドに誤りがないか確認してください。

ステップ5:Docker Engine, CLI, Containerdなどのインストール

パッケージリストが更新されたら、いよいよDocker本体をインストールします。以下のコマンドを実行します。

bash
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

このコマンドでインストールされる主要なパッケージは以下の通りです。

  • docker-ce: Community EditionのDocker Engine本体です。コンテナのビルド、実行、管理など、Dockerの中心的な機能を提供します。
  • docker-ce-cli: Dockerコマンドラインインターフェース(CLI)です。ユーザーがターミナルからDockerデーモンと対話するためのコマンド(docker run, docker psなど)を提供します。
  • containerd.io: Docker Engineが内部で使用する主要なコンテナランタイムです。コンテナの実行、イメージの配布、ストレージ管理などを担当します。高速で効率的なコンテナ実行を可能にします。
  • docker-buildx-plugin: Docker BuildXは、新しいビルド機能や複数のアーキテクチャ向けのビルドをサポートするツールです。マルチアーキテクチャイメージのビルドなどに使用されます。
  • docker-compose-plugin: Docker Compose は、複数のコンテナで構成されるアプリケーションを定義・実行するためのツールです。以前は独立したツールでしたが、現在はDocker CLIのプラグインとして提供されています。docker compose コマンドとして利用可能になります。

これらのパッケージをインストールすることで、Dockerの基本的な機能から、コンテナランタイム、CLIツール、さらには最近の便利なツール(BuildX, Compose)まで、必要なものが一通り揃います。

インストール中にディスク容量の確認や、依存関係の解決に関するメッセージが表示されることがあります。内容を確認し、問題なければ y を入力してインストールを続行します。

インストールが完了すると、Dockerデーモンは自動的に起動し、システムの起動時にも自動的に開始するように設定されます。これはsystemdというシステムおよびサービスマネージャーによって管理されます。

Dockerデーモンのステータスを確認するには、以下のコマンドを実行します。

bash
sudo systemctl status docker

出力で active (running) と表示されていれば、Dockerデーモンは正常に起動しています。

ステップ6:インストールの確認(hello-worldコンテナの実行)

Dockerが正しくインストールされ、実行できることを確認するために、公式提供の小さなテストイメージである hello-world コンテナを実行してみましょう。

bash
sudo docker run hello-world

このコマンドは以下の処理を行います。

  1. ローカルシステムにhello-worldという名前のイメージが存在するか確認します。
  2. 存在しない場合、Docker Hubという公開レジストリからhello-worldイメージを自動的にダウンロード(プル)します。
  3. ダウンロードしたイメージから新しいコンテナを作成し、実行します。
  4. hello-worldコンテナは、実行されると簡単なメッセージを標準出力に表示し、その後終了します。

すべてがうまくいけば、以下のようなメッセージが表示されるはずです。

“`
Unable to find image ‘hello-world:latest’ locally
latest: Pulling from library/hello-world
… (ダウンロードの進行状況) …
Digest: sha256:abcdef… (イメージのダイジェスト)
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the “hello-world” image from the Docker Hub.
3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/

“`

このメッセージが表示されれば、DebianへのDockerのインストールは成功です!

4. インストール後の設定と基本的な使い方

Dockerのインストールは完了しましたが、より便利に、そして安全に利用するためにはいくつかの追加設定や、基本的なコマンドの理解が必要です。

sudoなしでDockerコマンドを実行できるようにする(ユーザーをdockerグループに追加)

現状では、dockerコマンドを実行するには毎回sudoを付ける必要があります(例: sudo docker run hello-world)。これは面倒ですし、sudoは強力な権限を必要としない操作には推奨されません。

Dockerデーモンは、デフォルトではroot権限で実行され、Unixソケット(/var/run/docker.sock)を通じて通信を受け付けます。このソケットはrootユーザーとdockerグループによって所有されています。dockerグループにユーザーを追加することで、そのユーザーはsudoなしでDockerデーモンと通信できるようになります。

現在のユーザーをdockerグループに追加するには、以下のコマンドを実行します。$USERは現在ログインしているユーザー名を示す環境変数です。

bash
sudo usermod -aG docker $USER

  • sudo usermod: ユーザーアカウント情報を変更するコマンドです。
  • -aG docker: -aオプションはユーザーを指定したグループに追加します(append)。-Gオプションはユーザーが所属する追加のグループを指定します。ここではユーザーをdockerグループに追加します。
  • $USER: 追加するユーザー名です。

セキュリティに関する注意点:

dockerグループのメンバーは、実質的にroot権限と同等の権限を持つことになります。なぜなら、コンテナを実行する際に、コンテナ内のプロセスをrootユーザーとして実行させたり、ホストシステムのファイルシステムをマウントしたりすることが可能になるからです。これにより、dockerグループに属するユーザーは、ホストシステムに対して制限なく操作を行うことができてしまいます。

したがって、信頼できないユーザーをdockerグループに追加することは絶対に避けてください。 Dockerを使用するユーザーがシステム全体へのアクセス権を持つことに同意する場合にのみ、この設定を行ってください。もしセキュリティ要件が非常に厳しい場合は、後述するRootless Dockerの利用も検討してください(ただし、Rootless Dockerは設定がやや複雑になります)。

設定の適用:

usermodコマンドでグループを変更しても、すぐにその変更が現在のシェルセッションに反映されるわけではありません。変更を適用するには、以下のいずれかが必要です。

  1. ログアウトして再度ログインする: 最も確実な方法です。SSHセッションであれば切断して再接続、デスクトップ環境であればログアウト・ログインを行います。
  2. 新しいシェルセッションを開始する: 現在のターミナルを閉じて新しいターミナルを開くか、bash -lexec su -l $USERのようなコマンドで新しいログインシェルを開始します。
  3. newgrp dockerコマンドを実行する: 現在のシェルセッションで一時的にdockerグループの権限を有効にします。ただし、これは現在のシェルとその子プロセスにのみ影響し、永続的な設定ではありません。また、newgrpはシェルを置き換えるため、予期しない動作をする可能性があります。ログアウト/ログインが推奨されます。

設定が適用されたか確認するには、以下のコマンドを実行します。

bash
id -nG

このコマンドは、ユーザーが所属するグループの一覧を表示します。その一覧にdockerが含まれていれば成功です。

設定適用後、sudoなしでDockerコマンドを実行できるようになります。試しに再度hello-worldを実行してみてください。

bash
docker run hello-world

今度はsudoなしで実行でき、同じ出力が得られるはずです。

Dockerデーモンの管理(起動、停止、再起動、ステータス確認)

Dockerデーモン(dockerdプロセス)は、コンテナやイメージなどのDockerオブジェクトを管理するバックグラウンドサービスです。システム起動時に自動で開始され、通常は意識する必要はありませんが、設定変更時やトラブルシューティング時に手動で操作することがあります。

Dockerデーモンはsystemdサービスとして管理されます。以下のコマンドを使用します。

  • ステータス確認:
    bash
    sudo systemctl status docker

    デーモンが実行中か、最後にエラーが発生していないかなどを確認できます。
  • 起動:
    bash
    sudo systemctl start docker

    デーモンが停止している場合に起動します。
  • 停止:
    bash
    sudo systemctl stop docker

    実行中の全てのコンテナを停止し、デーモンを停止します。
  • 再起動:
    bash
    sudo systemctl restart docker

    デーモンを停止し、再度起動します。設定ファイル(/etc/docker/daemon.json)を変更した場合などに使用します。
  • 設定のリロード(デーモンを再起動せずに設定を反映):
    bash
    sudo systemctl reload docker

    一部の設定変更(例えばデーモンログレベルの変更など)は、デーモンを再起動せずにreloadで反映できる場合があります。しかし、多くの重要な設定(ストレージドライバー、データディレクトリなど)の変更にはrestartが必要です。どの設定がreloadで反映されるかはDockerのバージョンによって異なります。

Dockerの起動設定(自動起動)

Dockerパッケージのインストール時に、systemdによってDockerデーモンはシステムの起動時に自動的に開始するように設定されています。この設定を確認または変更するには、以下のコマンドを使用します。

  • 自動起動が有効か確認:
    bash
    sudo systemctl is-enabled docker

    enabledと表示されれば自動起動が有効です。
  • 自動起動を有効にする:
    bash
    sudo systemctl enable docker
  • 自動起動を無効にする:
    bash
    sudo systemctl disable docker

通常は自動起動を有効にしておくのが便利です。

基本的なDockerコマンドの紹介

Dockerを使い始めるために、いくつかの基本的なコマンドを紹介します。前述のように、dockerグループにユーザーを追加していればsudoは不要です。

  • イメージの検索 (docker search)
    Docker Hubなどのレジストリで公開されているイメージを検索します。
    bash
    docker search ubuntu

    ubuntuというキーワードを含むイメージが一覧表示されます。公式イメージにはOFFICIALマークがついています。

  • イメージの取得 (docker pull)
    レジストリからローカルシステムにイメージをダウンロードします。
    bash
    docker pull ubuntu

    最新版のubuntuイメージをダウンロードします。特定のバージョン(タグ)を指定する場合は:latestのように指定します(例: docker pull ubuntu:22.04)。タグを指定しない場合はデフォルトで:latestが使用されます。

  • コンテナの実行 (docker run)
    指定したイメージから新しいコンテナを作成し、実行します。イメージがローカルにない場合は自動的にプルされます。
    bash
    docker run -it ubuntu bash

    ubuntuイメージからコンテナを起動し、その中でbashシェルを実行します。

    • -i: 標準入力を開いたままにします(Interactive)。
    • -t: TTY(擬似端末)を割り当てます。
      この2つのオプションを組み合わせることで、コンテナ内でインタラクティブなシェルセッションを開始できます。コンテナ内のbashからexitと入力するとコンテナは停止します。

    バックグラウンドでコンテナを実行するには-dオプションを使用します。
    bash
    docker run -d -p 80:80 nginx

    nginxイメージからコンテナをバックグラウンドで起動し、ホストのポート80番をコンテナのポート80番にマッピングします(Webサーバーなど)。

  • 実行中のコンテナ一覧 (docker ps)
    現在実行中のコンテナを一覧表示します。
    bash
    docker ps

    CONTAINER ID, IMAGE, COMMAND, CREATED, STATUS, PORTS, NAMESなどの情報が表示されます。

  • 全てのコンテナ一覧 (docker ps -a)
    実行中か停止しているかに関わらず、全てのコンテナを一覧表示します。
    bash
    docker ps -a

  • コンテナの停止 (docker stop)
    指定したコンテナを停止します。コンテナIDまたはコンテナ名で指定できます。
    bash
    docker stop <コンテナIDまたはコンテナ名>

  • コンテナの削除 (docker rm)
    指定したコンテナを削除します。削除するにはコンテナが停止している必要があります。
    bash
    docker rm <コンテナIDまたはコンテナ名>

    実行中のコンテナを強制的に削除するには-fオプションを使用します(例: docker rm -f <コンテナID>)。

  • イメージの一覧 (docker images)
    ローカルシステムにダウンロードされているイメージを一覧表示します。
    bash
    docker images

    REPOSITORY, TAG, IMAGE ID, CREATED, SIZEなどの情報が表示されます。

  • イメージの削除 (docker rmi)
    指定したイメージをローカルシステムから削除します。そのイメージを使用しているコンテナが存在する場合は削除できません(-fオプションで強制削除は可能ですが推奨されません)。
    bash
    docker rmi <イメージIDまたはイメージ名:タグ>

これらのコマンドを使いこなすことで、Dockerでの基本的なコンテナ操作ができるようになります。

5. トラブルシューティング

Dockerのインストールや実行中に発生する可能性のある一般的な問題と、その解決策について説明します。

GPGキーエラー

Dockerリポジトリを追加した後にsudo apt updateを実行した際に、以下のようなエラーが表示されることがあります。

W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://download.docker.com/linux/debian bookworm InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY <キーID>
E: The repository 'https://download.docker.com/linux/debian bookworm InRelease' is not signed.

これは、リポジトリの署名を検証するためのGPGキーが正しくインポートされていないか、指定されていない場合に発生します。

解決策:

  1. ステップ2で実行したGPGキーのダウンロードおよびインポートコマンドが正しく完了したか確認します。
    bash
    curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  2. ステップ3で作成したリポジトリファイル(/etc/apt/sources.list.d/docker.list)の内容を確認し、signed-by=/etc/apt/keyrings/docker.gpgという部分が正しく記載されているか、キーファイルへのパスが間違っていないかを確認します。
    bash
    cat /etc/apt/sources.list.d/docker.list

    出力は例えば以下のようになっているはずです。
    deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian bookworm stable
    もしキーファイルのパスが異なっていたり、signed-byオプション自体が抜けていたりする場合は、ステップ3のコマンドを正確に再実行してください。
  3. キーファイル自体の存在とパーミッションを確認します。
    bash
    ls -l /etc/apt/keyrings/docker.gpg
    sudo apt update

    ファイルが存在し、rootが読み書き可能(644や600など)であれば問題ないはずです。

リポジトリが見つからない、または不正なリポジトリのエラー

sudo apt updateの際に、指定したリポジトリのURLが間違っているか、システム(Debianのバージョンやアーキテクチャ)に合ったリポジトリパスが存在しない場合にエラーが発生することがあります。

E: Failed to fetch https://download.docker.com/linux/debian/dists/bookworm/stable/binary-amd64/Packages.gz 404 Not Found [IP: ...]

これは、URLやパスが間違っていることを示しています。

解決策:

  1. ステップ3で実行したリポジトリ追加コマンドのURL、Debianコードネーム、チャネル(stable)が正しいか確認します。
    bash
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

    特に、$(lsb_release -cs)がシステムでサポートされているDebianのコードネーム(bullseyeまたはbookworm)を返しているか確認します(lsb_release -csコマンドを単独で実行してみる)。
  2. /etc/apt/sources.list.d/docker.listファイルの内容を手動で確認し、タイプミスがないかチェックします。
    bash
    cat /etc/apt/sources.list.d/docker.list
  3. ブラウザなどでhttps://download.docker.com/linux/debian/dists/を開き、お使いのDebianコードネームのディレクトリが存在するか手動で確認してみるのも有効です。例えばbookworm/stable/以下にbinary-amd64/binary-arm64/などのディレクトリが存在するかを確認します。

権限エラー(Got permission denied など)

sudoなしでdockerコマンドを実行した際に、以下のようなエラーが表示されることがあります。

docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create": dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.

これは、ユーザーがDockerデーモンと通信するために必要な権限を持っていないことを示しています。

解決策:

  1. 現在ログインしているユーザーがdockerグループに所属しているか確認します。
    bash
    id -nG

    出力にdockerが含まれていない場合、ステップ4で解説したsudo usermod -aG docker $USERコマンドを実行し、ユーザーをdockerグループに追加します。
  2. ユーザーをdockerグループに追加した後、必ずログアウトして再度ログインするか、newgrp dockerコマンド(非推奨だが一時的な確認には使える)を実行して、新しいグループ設定をシェルセッションに反映させます。単に新しいターミナルウィンドウを開いただけでは反映されないことが多いです。
  3. もしユーザーがdockerグループに所属しているのにエラーが出る場合は、/var/run/docker.sockファイルの所有者とパーミッションを確認します。
    bash
    ls -l /var/run/docker.sock

    通常はsrw-rw---- 1 root docker ... のように、所有者がroot、グループがdocker、パーミッションが660になっているはずです。もし異なっている場合は、Dockerデーモンが正しく起動していない可能性があります。

Dockerデーモンが起動しない、またはステータスが inactive/dead になっている

sudo systemctl status dockerコマンドの出力が active (running) ではなく、inactive (dead), failed, または他のエラー状態を示している場合があります。

解決策:

  1. まず、Dockerデーモンを手動で起動してみます。
    bash
    sudo systemctl start docker
    sudo systemctl status docker

    これで起動する場合は、システムの起動時に自動起動が有効になっているか確認します(sudo systemctl is-enabled docker)。無効になっている場合はsudo systemctl enable dockerで有効にします。
  2. 起動に失敗する場合、Dockerデーモンのログを確認します。
    bash
    sudo journalctl -u docker.service --since "1 hour ago"

    このコマンドは過去1時間以内のDockerデーモンに関連するログを表示します。エラーメッセージ(level=error など)を探し、その内容から原因を特定します。一般的な原因としては、/etc/docker/daemon.jsonの設定エラー、ストレージドライバーの問題、リソース不足などが考えられます。
  3. 設定ファイル/etc/docker/daemon.jsonに構文エラーがないか確認します。JSON形式が正しく閉じられているか、カンマの位置などが正しいかチェックします。
  4. ディスク容量が不足していないか確認します。Dockerイメージやコンテナデータはディスク容量を消費します。df -hコマンドなどで確認してください。
  5. 以前のDocker関連プロセスが残っていないか確認し、必要であれば再起動または強制終了します。

hello-worldが実行できない

Dockerのインストールとデーモンの起動は成功したが、docker run hello-worldがエラーになる場合。

解決策:

  1. インターネット接続を確認します。hello-worldイメージは通常Docker Hubからダウンロードされるため、インターネット接続が必要です。ping docker.ioなどで接続を確認します。
  2. ファイアウォール設定を確認します。Dockerデーモンが外部レジストリ(Docker Hubなど)と通信するために必要なポート(通常はHTTPSの443)がファイアウォールでブロックされていないか確認します。
  3. DNS設定を確認します。Dockerデーモンがdocker.ioなどのホスト名を解決できるか確認します。ホストシステムでping docker.ioが成功するか試してください。
  4. Dockerデーモンのログを確認します(上記参照)。イメージのプルに関するエラーメッセージが出ていないか調べます。
  5. 一時的な問題の可能性もあります。少し時間を置いて再度試してみてください。

ネットワークに関する問題(コンテナが外部と通信できないなど)

コンテナ内でインターネットにアクセスできない、またはコンテナからホスト上のサービスや他のネットワーク上のサービスにアクセスできないといった問題です。

解決策:

  1. ホストシステムのネットワーク設定を確認します。ホスト自身がインターネットに接続できているか、DNS解決ができているか確認します。
  2. ファイアウォール設定を確認します。Dockerはコンテナのために独自のネットワークインターフェース(通常docker0という名前)を作成し、iptablesルールを設定します。これらのルールが他のファイアウォール設定と競合していないか確認します。特にufwなどを使用している場合は、Dockerとの連携について設定が必要な場合があります。ufwを使用している場合は、sudo ufw disableで一時的に無効にして問題が解決するか試すことができます(セキュリティリスクがあるため、テスト後すぐに有効に戻すか適切なルールを設定してください)。
  3. Dockerデーモンの設定ファイル(/etc/docker/daemon.json)でカスタムDNSサーバーなどを設定している場合、その設定が正しいか確認します。
  4. コンテナの起動時にネットワーク関連のオプション(--networkなど)を誤って指定していないか確認します。デフォルトのbridgeネットワークを使用しているか確認します。
  5. 特定のコンテナでのみ問題が発生する場合は、そのコンテナのDockerfileや実行コマンドを確認し、ネットワーク設定やポート公開設定が正しいか確認します。

トラブルシューティングでは、まずDockerデーモンのステータスとログを確認することが最も重要です。ほとんどの問題の根本原因はログに記録されています。

6. 応用的な設定と考慮事項

Dockerをより柔軟に、または特定の要件に合わせて使用するために役立つ応用的な設定や考慮事項について説明します。

Dockerデーモンの設定ファイル (/etc/docker/daemon.json)

Dockerデーモンのグローバルな設定は、通常/etc/docker/daemon.jsonというJSON形式のファイルで行います。このファイルはデフォルトでは存在しないため、必要に応じて手動で作成します。

設定を変更した後は、Dockerデーモンを再起動(sudo systemctl restart docker)して変更を適用する必要があります。

以下に、daemon.jsonで設定できる一般的な項目とその例をいくつか紹介します。

json
{
"data-root": "/path/to/your/docker/data",
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"dns": ["8.8.8.8", "8.8.4.4"],
"registry-mirrors": ["https://your-mirror.example.com"],
"insecure-registries": ["your-registry:5000"],
"features": {
"buildkit": true
},
"bip": "172.17.0.1/16"
}

  • data-root: Dockerがイメージ、コンテナ、ボリュームなどのデータを保存するディレクトリを変更します。デフォルトは/var/lib/dockerです。ディスク容量に余裕のある別のパーティションやマウントポイントに変更したい場合などに設定します。この設定はDockerデーモン停止中に変更し、ディレクトリの内容を移動してから起動する必要があります。
  • log-driver および log-opts: コンテナのログをどのように管理するかを設定します。デフォルトはjson-fileで、コンテナごとにJSONファイルとしてログを保存します。log-optsでログファイルの最大サイズや数を制限できます。他のドライバー(syslog, journald, gelfなど)も選択可能です。
  • dns: コンテナが使用するDNSサーバーを設定します。デフォルトではホストシステムのDNS設定が使用されますが、特定のDNSサーバーを指定したい場合に設定します(例: Google Public DNS 8.8.8.88.8.4.4)。
  • registry-mirrors: よく利用する公開レジストリ(Docker Hubなど)のミラーサイトを設定することで、イメージのプル速度を向上させることができます。
  • insecure-registries: 認証なしで接続するプライベートレジストリを指定します。開発環境などで証明書なしのレジストリを使用する場合に必要になります(本番環境では非推奨)。
  • features: 実験的な機能などを有効にするために使用します。例えば"buildkit": trueでBuildKitをデフォルトのビルドバックエンドとして有効にできます。
  • bip: DockerブリッジネットワークのIPアドレスとサブネットマスクを設定します。デフォルトの172.17.0.1/16と競合する場合などに変更します。

daemon.jsonで設定できる全てのオプションについては、Docker公式ドキュメントの “Daemon configuration file” の項を参照してください。

ストレージドライバーについて

Dockerは、イメージとコンテナのレイヤーを管理するためにストレージドライバーを使用します。コンテナは複数の読み取り専用レイヤー(イメージから来る)と、その上に積み重ねられた書き込み可能な最上位レイヤーで構成されます。ストレージドライバーは、これらのレイヤーを効率的に管理し、ファイルの読み書きやコピーオンライト(Copy-on-Write: CoW)戦略を実装します。

Debianを含む多くのLinuxディストリビューションでは、現在overlay2ドライバーが最も推奨されています。overlay2はOverlayFSというLinuxカーネルの機能を活用しており、高速で効率的なストレージ管理を提供します。

使用中のストレージドライバーの確認:

以下のコマンドで、現在Dockerが使用しているストレージドライバーやその他のシステム情報を確認できます。

bash
docker info

出力の中のStorage Driver:の項目を確認してください。通常はoverlay2と表示されているはずです。

古いシステムや特定のファイルシステム構成では、他のドライバー(aufs, devicemapper, zfs, vfsなど)が使用されることもありますが、可能であればoverlay2の使用を推奨します。特別な理由がない限り、デフォルト設定のままにしておくのが最も簡単です。

Docker Compose について

Docker Composeは、複数のコンテナから構成されるアプリケーション(例えば、Webサーバー、データベース、キャッシュサーバーを組み合わせたアプリケーション)を定義・実行するためのツールです。YAMLファイル(docker-compose.ymlcompose.yaml)に必要なサービス、ネットワーク、ボリュームなどを記述し、docker compose upコマンド一つでまとめて起動・管理できます。

Docker Engine 1.13以降、Docker ComposeはDocker CLIのプラグインとして統合されており、docker composeというコマンド名で使用できるようになりました。この記事のインストール手順(ステップ5)でdocker-compose-pluginパッケージをインストール済みのため、追加のインストール作業は通常不要です。

Docker Composeがインストールされているか確認:

以下のコマンドで確認できます。

bash
docker compose version

バージョン情報が表示されれば使用可能です。

Docker Composeの基本的な使い方:

  1. アプリケーションのルートディレクトリにcompose.yaml (またはdocker-compose.yml) ファイルを作成します。
    例 (compose.yaml):
    “`yaml
    version: ‘3.8’

    services:
    web:
    image: nginx:latest
    ports:
    – “80:80”
    db:
    image: postgres:14
    environment:
    POSTGRES_PASSWORD: mysecretpassword
    volumes:
    – db_data:/var/lib/postgresql/data

    volumes:
    db_data:
    このファイルは、Nginx(Webサーバー)とPostgreSQL(データベース)の2つのサービスを定義しています。
    2. `compose.yaml`ファイルがあるディレクトリで、以下のコマンドを実行します。
    bash
    docker compose up -d
    `-d`オプションはコンテナをバックグラウンドで実行します。これにより、`web`と`db`という名前のコンテナが作成・起動され、必要なイメージが自動的にプルされ、ネットワークやボリュームが構成されます。
    3. 実行中のサービスを確認します。
    bash
    docker compose ps
    4. サービスを停止するには、同じディレクトリで以下のコマンドを実行します。bash
    docker compose down
    ``
    これにより、
    compose.yaml`で定義された全てのコンテナ、ネットワーク、ボリューム(volumesセクションで定義されていない匿名ボリュームを除く)が停止・削除されます。

Docker Composeを使うことで、複雑なマルチコンテナアプリケーションの管理が非常に楽になります。

Dockerのアップデート方法

Dockerは定期的に新しいバージョンがリリースされ、機能追加やバグ修正が行われます。Docker公式リポジトリからインストールしている場合、アップデートは非常に簡単です。

通常のDebianパッケージと同様に、aptコマンドを使ってアップデートできます。

bash
sudo apt update
sudo apt upgrade docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

apt upgradeコマンドは、指定したパッケージ(およびその依存関係)を、設定されているリポジトリで利用可能な最新バージョンにアップグレードします。これにより、常に最新のDocker環境を維持できます。

Dockerのアンインストール方法

Dockerをシステムから完全に削除したい場合の手順です。

パッケージの削除:

Dockerパッケージをアンインストールするには、以下のコマンドを実行します。

bash
sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

purgeオプションは、パッケージだけでなく、関連する設定ファイルも削除します。

データの削除(注意!):

上記のpurgeコマンドでは、イメージ、コンテナ、ボリューム、ネットワークなどのDockerデータは削除されません。これらのデータはデフォルトで/var/lib/dockerディレクトリに保存されています。

もしDockerデータを完全に削除したい場合は、以下のコマンドを実行します。

bash
sudo rm -rf /var/lib/docker

このコマンドは元に戻せません。実行すると、保存していた全てのコンテナイメージ、実行中のコンテナ、コンテナボリュームに保存されたデータなどが完全に失われます。実行する前に、重要なデータがないか十分に確認してください。

通常、Dockerを単に再インストールするだけであれば、/var/lib/dockerを削除する必要はありません。

セキュリティに関する考慮事項

Dockerを使用する上で、いくつかのセキュリティに関する考慮事項があります。

  • dockerグループのリスク: 前述の通り、dockerグループのメンバーはホストシステム上で実質的にroot権限を持つことになります。docker run -v /:/host_root ...のようなコマンドを実行することで、ホストシステム全体にアクセスできてしまうためです。信頼できるユーザーのみをこのグループに追加してください。
  • Rootless Docker: よりセキュアな選択肢として、Docker Engineをroot権限ではなく、一般ユーザー権限で実行するRootless Dockerがあります。これにより、コンテナが侵害された場合でもホストシステムへの影響を最小限に抑えられます。ただし、Rootless Dockerは通常のDocker Engineと比較していくつか制限があり、設定もやや複雑になります。特定のセキュリティ要件がある場合に検討すると良いでしょう。この記事ではRootless Dockerの詳しい手順は割愛しますが、関心があれば公式ドキュメントを参照してください。
  • 信頼できるイメージの使用: Docker Hubなどのレジストリからイメージを取得する際は、公式イメージや信頼できるソースからのイメージを使用することを強く推奨します。不明な提供元や検証されていないイメージには悪意のあるコードが含まれている可能性があります。
  • コンテナ内でのroot権限の回避: Dockerfileを作成する際には、コンテナ内でアプリケーションを実行するユーザーをroot以外のユーザーに変更することが推奨されます(USER命令)。これにより、コンテナが侵害された際に、ホストシステムへの影響をさらに限定できます。
  • 公開ポートの最小化: -pオプションでホストに公開するポートは、必要最小限に留めるべきです。不要なポートを公開すると、攻撃対象が増えてしまいます。

7. まとめ

この記事では、DebianにDockerを簡単かつ確実な方法でインストールするための詳細な手順を解説しました。Docker公式リポジトリを使用することで、最新版のDocker Engine、CLI、Containerd、Docker Compose Pluginなどをまとめてインストールし、aptによる容易なアップデートが可能になります。

インストール手順は以下の通りです。

  1. パッケージリストの更新と必要パッケージのインストール (ca-certificates, curl, gnupg, lsb-release)
  2. Docker公式GPGキーの追加
  3. Docker公式リポジトリの追加
  4. 再度パッケージリストを更新
  5. Docker Engineおよび関連コンポーネントのインストール
  6. hello-worldコンテナ実行によるインストールの確認

また、インストール後にDockerをsudoなしで実行するためのユーザー設定、Dockerデーモンの管理方法、基本的なDockerコマンド、よくあるトラブルシューティング、そして/etc/docker/daemon.jsonを使った応用的な設定やセキュリティに関する考慮事項についても説明しました。

これで、あなたのDebianシステム上でDockerを利用する準備が整いました。コンテナを活用することで、アプリケーションの開発、テスト、デプロイメントのワークフローがより効率的かつ一貫性のあるものになるでしょう。

Dockerの旅はまだ始まったばかりです。ぜひ様々なイメージを試したり、独自のDockerfileを作成してアプリケーションをコンテナ化したり、Docker Composeを使って複数のサービスを組み合わせたりしてみてください。Docker公式ドキュメントや豊富なオンラインリソースを活用しながら、Dockerの世界をさらに深く探求していきましょう。

不明な点があれば、Dockerコミュニティやオンラインフォーラムで質問することも可能です。

Happy Dockering on Debian!


免責事項: 本記事の情報は2023年12月時点のものであり、将来のDockerやDebianのアップデートによって手順や推奨事項が変更される可能性があります。常に最新の公式ドキュメントを参照することを推奨します。本記事の手順を実行した結果について、筆者はいかなる責任も負いません。作業は自己責任で行ってください。


これで約5000語の詳細な記事となりました。各コマンドの解説、エラー対応、応用設定などを網羅し、初心者にも分かりやすいように努めました。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール