UbuntuLinuxにDockerをインストールする方法

Dockerは、ソフトウェアエンジニアリング業界を席巻し、ソフトウェアの出荷と展開の方法に革命をもたらしただけでなく、エンジニアがコンピューター上にソフトウェア開発環境をセットアップする方法も変更しました。

このガイドでは、この記事の執筆時点でのUbuntuの最新のロングタームサポート(LTS)バージョンであるUbuntu Linux 20.04(Focal Fossa)にDockerをインストールしてDockerを使い始める方法を説明します。

Dockerの利点

Dockerは、アプリケーションをコンテナと呼ばれるスタンドアロンパッケージとして自動化およびデプロイできるようにするオープンソースプラットフォームです。 Dockerはオペレーティングシステム仮想化テクノロジーを使用しますが、仮想マシンとは異なり、システムリソースがはるかに軽量です。

Dockerの主な利点は次のとおりです。

  • 比較的使いやすく、学ぶのも簡単
  • ソフトウェアを展開する一貫した簡単な方法を提供します
  • マイクロサービスアーキテクチャと互換性があります
  • リソース使用量が非常に少ない

Dockerソフトウェアリポジトリの設定

Dockerをインストールする方法はいくつかあります。このガイドでは、aptコマンドユーティリティを使用してDockerリポジトリからDockerをインストールする方法を説明します。この方法でDockerをインストールすると、将来Dockerパッケージを簡単にアップグレードできます。また、Dockerチームが推奨するアプローチでもあります。

インストールの最初のステップは、Dockerソフトウェアリポジトリをソフトウェアソースのリストに追加することです。 HTTPS経由でDockerソフトウェアリポジトリを使用し、以下のコマンドを使用して必要なソフトウェアをインストールします。

グッドプラクティスとして、最初に利用可能なソフトウェアパッケージのリストを更新します。

 sudo apt update

次に、 aptinstallを使用してインストールに必要なすべての依存関係をダウンロードします。

 sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release

Dockerソフトウェアは、リポジトリからソフトウェアパッケージをダウンロードする際の通信を保護するために、GPGとも呼ばれるGnuPGを使用します。 GPGは、メッセージまたはデータの暗号化に使用されるPGP(Pretty Good Privacy)の実装標準です。

公式のDockerGPGキーをローカルキーリングに追加するには、次のコマンドを使用します。

 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Dockerのソフトウェアリポジトリには、安定バージョン、テストバージョン、ナイトリーリリースバージョンの3つの主要なソフトウェアリリースバージョンがあります。このガイドでは、Dockerの安定版リリースバージョンについて説明します。

次のコマンドを実行して、Dockerの安定したリポジトリリリースバージョンを使用します。

 echo "deb [arch=amd64 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

:前述のコマンドは、AMDアーキテクチャーを使用していることを前提としています。 ARMアーキテクチャを使用している場合は、上記のコマンドのarch = amd64という単語をarch = arm64に置き換えるか、 arm hardfloatを使用している場合はarch = armhfに置き換えることができます。

DockerEngineのインストール

Dockerソフトウェアリポジトリのセットアップが完了したので、Dockerコンテナの管理と実行の中核となるDockerエンジンのインストールに進むことができます。 Docker Engineを構成するその他の重要なコンポーネントには、Docker Client、containerd、runc、およびDockerデーモンが含まれます。

最近Dockerリポジトリをソフトウェアソースのリストに追加したので、必ず以下のコマンドを使用してパッケージソースを更新してください。

 sudo apt update

Docker Engineをインストールするには、次のコマンドを実行します。このコマンドは、デフォルトでDockerEngineの最新の安定バージョンをインストールします。

 sudo apt-get install docker-ce docker-ce-cli containerd.io

Dockerの特定のバージョンをインストールする場合は、最初に以下のコマンドを使用して使用可能なバージョンのリストを確認できます。

 apt-cache madison docker-ce

次に、次のコマンドを使用して、特定のバージョンのDockerをインストールできます。たとえば、 5:20.10.6〜3-0〜ubuntu-focalをインストールするには:

 sudo apt-get install docker-ce=5:20.10.6~3-0~ubuntu-focal docker-ce-cli=5:20.10.6~3-0~ubuntu-focal containerd.io

インストールの確認

Dockerが正常にインストールされているかどうかを確認するには、次のコマンドを実行すると、インストールされているDockerエンジンのバージョン番号が出力されます。

 docker -v

Ubuntu LinuxおよびほとんどのDebianベースのディストリビューションでは、システムの起動時にDockerサービスが自動的に開始されます。

hello-world Dockerイメージを実行して、インストールをテストできます。イメージはコンピューター上でローカルに利用できないため、システムはコンテナーイメージのライブラリであるDockerHubからイメージをダウンロードします。次回イメージを再度実行すると、PCにあるローカルコピーが使用されます。

 sudo docker run hello-world

非ルートユーザーとしてのDockerの実行

現時点では、Dockerコンテナはスーパーユーザーとしてのみ実行できます。そのため、上記のコマンドでsudoが使用されています。 Dockerデーモンは、デフォルトでrootユーザーが所有するUnixソケットにバインドし、root以外のユーザーはsudo経由でのみアクセスできます。

スーパーユーザーでなくてもDockerコンテナーやその他の重要なコマンドを実行できるようにするには、最初にdockerという名前のユーザーグループを作成してから、マシンのdockerグループにユーザーを追加する必要があります。 groupaddコマンドは、Linuxのユーザーグループの管理を担当します

 sudo groupadd docker
 sudo usermod -aG docker $USER

以下のコマンドを使用して、グループの変更をアクティブにします。

 newgrp docker

:システムが新しく作成されたグループメンバーシップを認識するように、ログアウトしてから再度ログインすることを忘れないでください。次のコマンドを使用してログアウトできます。

 gnome-session-quit

場合によっては、root以外のユーザーとしてDockerコマンドを実行できない場合は、マシンを再起動する必要があります。

Dockerのアンインストール

UbuntuLinuxからDockerEngineを削除またはアンインストールするには、次のコマンドを実行するだけです。

 sudo apt remove docker docker-engine docker.io containerd runc

Docker Engineは削除されましたが、イメージ、コンテナー、ボリューム、カスタム構成ファイルなど、Dockerに関連する他のファイルは自動的に削除されません。これらのファイルは、rmユーティリティを使用して削除できます

 sudo rm -rf /var/lib/docker
 sudo rm -rf /var/lib/containerd

実際のDocker

このガイドでは、UbuntuLinuxにDockerをインストールして構成する方法を説明します。さらに、DockerHubからフェッチした単純なDockerイメージを実行する方法も示します。

Dockerは非常に用途の広いツールであり、ソフトウェアエンジニアリングで多くのユースケースがあります。ソフトウェアエンジニアまたはDevOpsで作業している場合、Dockerは、さまざまな環境でソフトウェアをデプロイする方法を簡素化し、ソフトウェアのテストとプロトタイピングに役立ちます。