[コンテナ再入門]Ubuntu 18.04 に Docker CE をインストールする

今さらもいいところだが、コンテナを活用した開発フローやアーキテクチャについて基礎から再入門している。 Dockerについては、過去にもちょこちょこ触ってみたり社内のサーバで使ってみたりはしていたものの、ちゃんと実運用できるレベルで理解できていなかったので、勧められた以下の書籍で改めて勉強しなおしている。

Docker/Kubernetes 実践コンテナ開発入門

Docker/Kubernetes 実践コンテナ開発入門

せっかくなので勉強のログをメモしておこうと思う。

Ubuntu 18.04 に Docker CE をインストールする

基本的に公式ドキュメントの「Install using the repository」の手順をなぞるだけ。 docs.docker.com

前準備

  • 古いバージョンのDockerをアンインストールする
$ sudo apt-get remove docker docker-engine docker.io containerd runc

レポジトリを設定する

  • まずは apt パッケージのインデックスを更新する
$ sudo apt update
  • 依存するパッケージをインストールする
$ sudo apt install  apt-transport-https   ca-certificates   curl  gnupg-agent   software-properties-common
  • GPG key の登録
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • stable(安定版) のレポジトリをセットアップする。( nightly や test といった引数を最後のstable の後に追加すればそれらのチャンネルもセットアップされる模様)
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

Docker CEをインストールする

  • レポジトリを追加したので、もう一度 apt パッケージのインデックスを更新する
$ sudo apt update
  • 最新版の Docker CEをインストールする
$ sudo apt install docker-ce docker-ce-cli containerd.io

Dockerを一般ユーザで実行できるようにする

Docker のコマンドを一般ユーザで実行すると権限が足らずエラーが発生する。

$ docker info
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/info: dial unix /var/run/docker.sock: connect: permission denied

これを回避するには、毎回sudoをつけてroot権限で実行するほか、Dockerを実行したい一般ユーザを 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

結果確認

バージョン 18.09.3 がインストールされた。

$ docker version
Client:
 Version:           18.09.3
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        774a1f4
 Built:             Thu Feb 28 06:53:11 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.3
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.8
  Git commit:       774a1f4
  Built:            Thu Feb 28 05:59:55 2019
  OS/Arch:          linux/amd64
  Experimental:     false

Proxyの設定

docs.docker.com

公式ドキュメントを参考に、dockerd (Daemon) にProxyを設定する場合の例。
上記手順でUbuntuにDockerをインストールした場合、systemd でDaemon化されているため、service設定を更新する。

$ sudo mkdir /lib/systemd/system/docker.service.d
$ sudo vi /lib/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTPS_PROXY=http://your.proxy.url:port/"

Proxy設定ファイルを作ったらdockerd を再起動して読み込ませる。

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker.service