Linux Mintでのdocker-ceインストール

# 問題

久しぶりに家のPCでdockerコンテナ使おうとしたらエラー。

```
$ docker pull redmine:3.4.2
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
```

docker自動起動してなかったっけ? と思って見たら上がってる。

```
$ service docker status
docker start/running, process 2193
```

解決方法ググってみても、OS再起動とかdocker-ce再インストールとか書いてあるので、再インストールで対処する。
(dockerがeeとceに分かれてたの知らなかったし)

# 環境

- Linux Mint 17.3 Rosa

# 下準備

docker公式の手順に従う。

まずは、現在インストールされているdockerをアンインストール。

```
$ sudo apt-get remove docker docker-engine docker.io
```

dockerがaufsストレージドライバ使うため、linux-image-extra-*をインストール入れてとあるのでインストール。
(Linux kernelのバージョンが4以上の場合は手順が別になるらしい。自分の環境のkernelバージョンは3)
公式には記載なかったけど、自分の環境ではlinux-image-genericを指定しないと依存関係でエラー出たので指定する。

```
$ sudo apt-get install linux-image-extra-$(uname -r) \
linux-image-extra-virtual \
linux-image-generic
```

aptリポジトリをhttpsで使用するためのパッケージインストール。(自分の環境は既に入ってた)

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

docker公式のGPGキーを追加。

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

docker-CEのフィンガープリントを公式のものと比較確認。

```
$ sudo apt-key fingerprint 0EBFCD88
pub   4096R/0EBFCD88 2017-02-22
      フィンガー・プリント = 9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid                  Docker Release (CE deb) <docker@docker.com>
sub   4096R/F273FCD8 2017-02-22
```

dockerリポジトリ追加

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

**※ Linux Mint使ってる人は上記コマンドNG。原因は後述**

# インストール(エラー)

後はインストール、と思ったらエラーになった。

```
$ sudo apt-get update
$ sudo apt-get install docker-ce   
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
E: パッケージ docker-ce が見つかりません
```

apt-get updateの結果を確認してみると、

```
$ sudo apt-get update | grep docker
取得:3 https://download.docker.com rosa InRelease
無視 https://download.docker.com rosa InRelease
取得:4 https://get.docker.com docker InRelease
無視 https://download.docker.com rosa Release.gpg
無視 https://get.docker.com docker InRelease
無視 https://download.docker.com rosa Release
ヒット https://get.docker.com docker Release.gpg
ヒット https://get.docker.com docker Release
ヒット https://get.docker.com docker/main amd64 Packages
ヒット https://get.docker.com docker/main i386 Packages
取得:5 https://get.docker.com docker/main Translation-ja_JP
エラー https://download.docker.com rosa/stable amd64 Packages
無視 https://download.docker.com rosa/stable Translation-ja_JP
無視 https://download.docker.com rosa/stable Translation-ja
無視 https://download.docker.com rosa/stable Translation-en
無視 https://get.docker.com docker/main Translation-ja_JP
無視 https://get.docker.com docker/main Translation-ja
無視 https://get.docker.com docker/main Translation-en
W: https://download.docker.com/linux/ubuntu/dists/rosa/stable/binary-amd64/Packages の取得に失敗しました  HttpError404

E: いくつかのインデックスファイルのダウンロードに失敗しました。これらは無視されるか、古いものが代わりに使われます。
```

https://download.docker.com/linux/ubuntu/dists/rosa というURLがないのがエラー原因ぽい。(2018.1.1現在)
以下はhttps://download.docker.com/ の中。

![範囲を選択_024.png](https://qiita-image-store.s3.amazonaws.com/0/6889/aea12fa7-22f4-6970-c11b-2fed34e1abf1.png)

上記ディレクトリに対応するUbuntuのバージョンは

- artful : Ubuntu 17.10
- trusty : Ubuntu 14.04
- xenial  : Ubuntu 16.04
- yakkety : Ubuntu 16.10
- zesty : Ubuntu 17.04

Linux Mint 17.3 Rosa はUbuntu 14.04ベースなので、trustyから取得する必要があると思われる。
ちなみに https://download.docker.com/linux/ 配下にはLinux Mint相当のディレクトリはなかった。

# リトライ

まずは登録したppaリポジトリを削除する。
ppa-purgeで削除出来なかったので、source listを直接削除する。

```
$ cat /etc/apt/sources.list.d/additional-repositories.list 
deb [arch=amd64] https://download.docker.com/linux/ubuntu    rosa    stable
$ sudo rm -i /etc/apt/sources.list.d/additional-repositories.list
$ sudo apt-get update | grep docker
```

リポジトリのエラーがなくなった事を確認。

続いてdockerリポジトリを再度追加。lsb_releaseコマンド結果の代わりにtrustyを直接指定する。

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

続いて再インストール。今度はインストール出来た。

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

# 動作確認

公式の手順に従って、hello-worldイメージを実行。実行できた。
(イメージダウンロードが入るため、実行には少し時間が掛かる)

```
$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
ca4f61b1923c: Pull complete 
Digest: sha256:445b2fe9afea8b4aa0b2f27fe49dd6ad130dfe7a8fd0832be5de99625dad47cd
Status: Downloaded newer image for hello-world:latest

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



# 参考
https://qiita.com/musaprg/items/f9eb7f3687a698a10250

https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/

https://ja.wikipedia.org/wiki/Linux_Mint