UbuntuにDockerをインストール


今日は先日Prallels Desktop上に作成したUbuntu DesktopにDockerをインストールし、コンテナ型仮想環境を構築したいと思います。前提となる環境周りの情報に関しては、下記投稿を参照して下さい。

尚、今回行うDockerのインストール作業はコマンドベースでの作業となります。私はUbuntu Desktopに標準インストールされている端末アプリを使用しました。みなさんも作業する際はご自分の好きなアプリで実施して下さい。

余談だが、Ubuntu等のDebian系Linuxディストリビューションでは、パッケージの追加・更新・削除といった管理はAPT(Advanced Package Tool)で行う。aptで始まるコマンド群がそれに該当する。

インストール手順

必要となるパッケージのインストール

Dockerをインストールするのに先立って必要となるパッケージがいくつかあるので、それを先にインストールする。

実行コマンド
$ sudo apt update
$ sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

apt updateコマンドはパッケージ情報を更新するコマンド。パッケージをインストールしたり更新する際は必ずこれを先に行い、インストール対象のパッケージ情報を最新化する事。

ここでインストールするパッケージの用途は下記の通り。

パッケージ名 用途
apt-transport-https APTに登録済みのリポジトリに対してHTTPS通信する
ca-certificates 通信相手に対して身元証明する
curl HTTP経由でファイルをダウンロードする
gnupg-agent 暗号化されたパッケージを復号化する
software-properties-common APTにリポジトリを追加する

GPGキーの追加

GPGキーをダウンロードし、APTにキー登録する。DockerパッケージはGPG(GNU Privacy Guard)というツールで暗号化されており、GPGキーはDockerパッケージを復号化する為に必要となる。

実行コマンド
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

curlコマンドのfsSLオプションでは、コマンドの進行状況は表示せずにエラー情報だけ表示するようにしたり、アクセスしたページが移動していた場合に移動先へ自動でリダイレクトするようにしている。

apt-keyのaddサブコマンドの引数ハイフン(-)は、パイプ(|)で繋いだ前半部分のコマンド結果を標準入力として受け取っている。つまり、ここではGPGキーを指定している。

フィンガープリントの確認

GPGキーがAPTに正しく登録されたかを確認。下記のように表示されればOK。

実行コマンド
$ sudo apt-key fingerprint 0EBFCD88
表示される結果
pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [  不明  ] Docker Release (CE deb) <[email protected]>
sub   rsa4096 2017-02-22 [S]

APTにリポジトリを追加

APTにDocker公式サイトのリポジトリを追加する。

実行コマンド
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

add-apt-repositoryコマンドで引数指定している文字列は、APTのリポジトリファイル(/ect/apt/sources.list)に登録する文字列を指定している。

上記コマンド実行後にAPTのリポジトリファイルの中身を確認してみる。

実行コマンド
$ cat /ect/apt/sources.list
表示される結果
:
(中略)
:
deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable
# deb-src [arch=amd64] https://download.docker.com/linux/ubuntu focal stable
:
(中略)
:

sources.listに登録された内容の意味は、ざっくりとこんな感じ。 配布はバイナリー(deb)で、CPUの命令セットアーキテクチャは64bit版([arch=amd64])で、URLはhttps://download.docker.com/linux/ubuntuで、コードネームがfocal(=20.04)のUbuntuに対応していて、カテゴリが安定版(stable)のリポジトリ。

APTに新しくリポジトリを追加したので、リポジトリ情報を更新しておく。

実行コマンド
$ sudo apt update

Dockerのインストール

下準備が完了したので、いよいよDocker本体をインストールする。

実行コマンド
$ sudo apt install docker-ce

ちゃんとインストールできたか確認する。

実行コマンド
$ sudo docker version
表示される結果
Client: Docker Engine - Community
 Version:           20.10.11
 API version:       1.41
 Go version:        go1.16.9
 Git commit:        dea9396
 Built:             Thu Nov 18 00:37:06 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.11
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.9
  Git commit:       847da18
  Built:            Thu Nov 18 00:35:15 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.12
  GitCommit:        7b11cfaabd73bb80907dd23182b9347b4245eb5d
 runc:
  Version:          1.0.2
  GitCommit:        v1.0.2-0-g52b36a2
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

無事インストールできた。

最後に、普段使用する一般ユーザーでもsudoなしでdockerコマンドを使用できるように、dockerグループに所属させる。これでdockerコマンドを使用する際に毎回sudoを付け加える必要がなくなる。

実行コマンド
$ sudo usermod -aG docker $USER

本設定はOS再起動後に有効となる。

お試しでUbuntuコンテナを作成

折角、Docker環境が構築できたので、試しにUbuntuコンテナを作成してみる。

Ubuntuイメージのダウンロード

Docker Hubより、Ubuntu公式のUbuntuイメージをダウンロードする。

実行コマンド
$ docker image pull ubuntu

イメージがダウンロードできたか確認。

実行コマンド
$ docker image ls
表示される結果
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       latest    ba6acccedd29   8 weeks ago   72.8MB

Ubuntuコンテナの作成

ダウンロードしたUbuntuイメージを使って、Ubuntuコンテナを作成する。
コンテナ名は任意の名前を付ける。今回、私はubuntu000とした。

実行コマンド
$ docker container create --name ubuntu000 -it ubuntu

コンテナが作成できたか確認。

実行コマンド
$ docker container ls -a
表示される結果
CONTAINER ID   IMAGE     COMMAND   CREATED          STATUS    PORTS     NAMES
5b29c88acf7e   ubuntu    "bash"    20 seconds ago   Created             ubuntu000

Ubuntuコンテナの起動

作成したUbuntuコンテナを起動する。

実行コマンド
$ docker container start ubuntu000

コンテナが起動したか確認。

実行コマンド
$ docker container ls
表示される結果
CONTAINER ID   IMAGE     COMMAND   CREATED          STATUS          PORTS     NAMES
5b29c88acf7e   ubuntu    "bash"    10 minutes ago   Up 59 seconds             ubuntu000

無事起動できた。Ubuntuコンテナの中に入ってみる。

実行コマンド
$ docker container exec -it ubuntu000 /bin/bash
実行結果
root@5b29c88acf7e:/# 

無事入れた。
これで、Ubuntuコンテナの作成は完了です。

Docker Composeのインストール

ついでにDocker Composeもインストールしておく事にした。

Docker Composeのバージョン確認

GitHubのDocker Compose公式リポジトリでバージョンを確認する。私が確認した時点では、最新バージョンはv2.2.2だった。v2からはインストール方法が変わったようで、Docker公式ドキュメントのこちらのページを参考にインストール。

Docker Composeのインストール

ホームディレクトリに、次のようなDocker ComposeのCLIプラグイン格納用ディレクトリを作成する。

実行コマンド
$ mkdir -p ~/.docker/cli-plugins/

次に、Docker Composeのバイナリーをダウンロードし、実行権限を付与する。

実行コマンド
$ curl -SL https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-`uname -s`-`uname -m` -o ~/.docker/cli-plugins/docker-compose
$ chmod +x ~/.docker/cli-plugins/docker-compose

ちゃんとインストールできたか確認する。

実行コマンド
$ docker compose version
表示される結果
Docker Compose version v2.2.2

無事インストールできた。
コマンドもdocker-composeからdocker composeに変わった模様。

お疲れ様でした!