Ubuntuにdockerをインストールする

[個人用のホームページ](https://tkyonezu.com/)を作成しました。今後は、そちらの方に整理していきたいと思いますので、よろしくお願いします。

# 1. Ubuntuにdockerをインストールする

Ubuntuにdockerをインストールする場合、[dockerのドキュメント](https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/)に記載されている方法を利用することができます。ここで、docker-ceをインストールする場合、現在は`x86_64 (or amd64)`、 `armhf`、 `s390x (IBM Z)` がサポートされています。（とドキュメントに書かれているんですけど、[リポジトリ](https://download.docker.com/linux/ubuntu/dists/) を見ると `arm64` もサポートされているようです）

> 現在のドキュメントでは、ちゃんと書かれていますね。(2019/04/08記）
>Docker CE is supported on x86_64 (or amd64), armhf, arm64, s390x (IBM Z), and ppc64le (IBM Power) architectures.

実は、このドキュメントに書かれている方法が二つあります。一つは `apt` コマンドを使ってリポジトリからインストールする方法で、もう一つは `get-docker.sh` スクリプトを使う方法となっています。

# 2. リポジトリからのインストール

リポジトリからインストールする場合は、次の手順となります。

## 2.1 パッケージインデックスの更新

最初に、まず `apt update` を実行します。

```console
$ sudo apt-get update
```

## 2.2 前提ソフトウェアのインストール

続けて、前提ソフトウェアをインストールします。

```console
$ sudo apt-get install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common
```

## 2.3 GPG 公開鍵のインストール

docker公式のGPG公開鍵をインストールします。

```console
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
```

ここで、公開鍵のフィンガープリントを確認しておきます。

```console
$ sudo apt-key fingerprint 0EBFCD88

pub   4096R/0EBFCD88 2017-02-22
      Key fingerprint = 9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid                  Docker Release (CE deb) <docker@docker.com>
sub   4096R/F273FCD8 2017-02-22
```

## 2.4 aptリポジトリの設定

ここで `apt`コマンド用のリポジトリを設定しますが、dockerでは`stable`、`edge`、`test`が公開されています。

ドキュメントの例では `stable`として、以下のように設定しています。

**x86_64**

```console
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
```

**armhf**

```console
$ sudo add-apt-repository \
   "deb [arch=armhf] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
```

## 2.5 docker-ceのインストール

準備ができましたので、以下のようにして`docker-ce`をインストールします。

```console
$ sudo apt-get update
$ sudo apt-get install -y docker-ce
```

# 3. スクリプトでのインストール

もう一つの方法で、スクリプトからインストールする場合は、以下の方法となります。

```console
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
```

実は、何のためにこの文書を書いたのかと言いますと、上記リポジトリを利用した場合には `stable`が例として使われていたのですが、スクリプトを利用した場合には `edge` が利用されていました。

実際には、以下のようになっています。

```sh
+ sh -c echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial edge" > /etc/apt/sources.list.d/docker.list
```

このため、どちらの方法でインストールするかによってはバージョンが異なる可能性があります。もちろん、厳密にバージョンを指定する場合には、[公式ドキュメント](https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/)に書かれている方法でバージョンを指定してインストールすることになります。

いずれの方法でも、インストール後にはバージョンを確認しておきます。

```console
$ docker version
```

## 4. 一般ユーザでの実行

[ドキュメント](https://docs.docker.com/install/linux/docker-ce/ubuntu/)にも記載されているのですが、root でなく一般ユーザで docker を実行する場合には docker グループに所属している必要があります。そこで、必要であれば以下を実行してから、ログインし直します。

```console
$ sudo usermod -aG docker <アカウント名>
```

> If you would like to use Docker as a non-root user, you should now consider adding your user to the “docker” group with something like:
>```
>  $ sudo usermod -aG docker your-user
>```

# 5. download.docker.com の情報

おかげさまで、このページも想像以上に需要がありそうですから [download.docker.com](https://download.docker.com/) の内容を整理してみます。なお、2018/11/14 現在の内容です。

| OS | Distribution | Version | CPU |
|---|---|---|---|
| [Linux](https://download.docker.com/linux/) | [CentOS](https://download.docker.com/linux/centos/) | 7 | aarch64, x86_64 |
| | [Debian](https://download.docker.com/linux/debian/) | Buster | amd64, arm64, armhf, ppc64el |
| | | Jessie | |
| | | Stretch | amd64, arm64, armhf |
| | | Wheezy | |
| | [Fedora](https://download.docker.com/linux/fedora/) | 24 | |
| | | 25 | |
| | | 26 | |
| | | 27 | |
| | | 28 | |
| | | 29 | aarch64, x86_64 |
| | | 30 | |
| | | 31 | aarch64, x86_64 |
| | [Raspbian](https://download.docker.com/linux/raspbian/) | Jessie | |
| | | Stretch | arm64, armhf |
| | | Buster | amd64, arm64, armhf, ppc64el |
| | [Ubuntu](https://download.docker.com/linux/ubuntu/) | Artful | |
| | | Bionic | amd64, arm64, armhf, ppc64el, s390x |
| | | Cosmic | |
| | | Disco | amd64, arm64, armhf, ppc64el |
| | | Trusty | |
| | | Xenial | amd64, arm64, armhf, ppc64el, ppc64le, s390x |
| | | Yakkety | |
| | | Zesty | |


とうことで、いつの間にか [Raspbian](https://download.docker.com/linux/raspbian/) 用のバイナリが公開されていますので、最近では Raspberry Pi 用にはこちらをインストールしています。
 CPU は、手を抜いて代表的なバージョンだけ書いてみました。

`docker-ce` のバージョンが、なかなか `18.09.2` にならないと思っていて確かめたら `debian` の `armhf` は `18.09.2` に更新されていたので、`raspbian` を使わないで `debian` に戻したのでした。(2019/02/26記)