2021/01/12

Dockerのインストール | Linux

前回はDockerの概要について話をしました。今回は、早速Dockerを使うべく、Dockerをインストールする手順を記載します。

なお、本記事では1環境でのみDockerをインストールしますが、多くの場合、クライアントPCおよびサーバの両方にDockerをインストールすることが想定されます。例えば、開発環境で動作確認したものをそのまま本番環境で利用するといったユースケースを想定しています。


Dockerをインストールする前に

DockerはどのOSにインストールできるのでしょうか。Dockerのダウンロードサイトを見ると現時点では、様々なLinux、Apple macOS、Windows OSに対応しており、幅広く利用できることが分かります。


ちなみに、Amazon Web Services (AWS)、Microsoft Azure、DigitalOceanなどのパブリッククラウド上でも起動することが可能です。


ところで、DockerはLinux上で起動するため、Linuxにインストールする場合は簡単ですが、WindowsやmacOSにインストールする場合はLinuxに比べて追加の設定が必要になるかもしれません。本記事では、以前構築したUbuntu Server 20.04を使ってDockerをインストールしたいと思います。


Linux (Ubuntu Server 20.04)にDockerをインストール


Dockerのインストール

Ubuntu Server上のコンソールを起動します。dockerコマンドを使ってDockerのインストール状況を確認します。

docker

Command 'docker' not found, but can be installed with:

sudo snap install docker     # version 19.03.11, or
sudo apt  install docker.io  # version 19.03.8-0ubuntu1.20.04.1

See 'snap info docker' for additional versions.


コマンドの実行結果を確認するとdockerはインストールされてないようです。ヘルプとしてaptコマンドを用いたdockerのインストール方法が表示されました。この方法でもdockerのインストールができますが、ここではcurlコマンドでdockerのWebサイトから最新バージョンのパッケージを取得しインストールするためのスクリプトをダウンロードし実行する方法を記載します。

curl -sSL https://get.docker.com/ | sh
# Executing docker install script, commit: 3d8fe77c2c46c5b7571f94b42793905e5b3e42e4
+ sudo -E sh -c apt-get update -qq >/dev/null
[sudo] password for xxxxx:
+ sudo -E sh -c DEBIAN_FRONTEND=noninteractive apt-get install -y -qq apt-transport-https ca-certificates curl >/dev/null
+ sudo -E sh -c curl -fsSL "https://download.docker.com/linux/ubuntu/gpg" | apt-key add -qq - >/dev/null
Warning: apt-key output should not be parsed (stdout is not a terminal)
+ sudo -E sh -c echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable" > /etc/apt/sources.list.d/docker.list
+ sudo -E sh -c apt-get update -qq >/dev/null
+ [ -n  ]
+ sudo -E sh -c apt-get install -y -qq --no-install-recommends docker-ce >/dev/null
+ sudo -E sh -c docker version
Client: Docker Engine - Community
 Version:           20.10.2
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        2291f61
 Built:             Mon Dec 28 16:17:43 2020
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.2
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       8891c58
  Built:            Mon Dec 28 16:15:19 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.3
  GitCommit:        269548fa27e0089a8b8278fc4fc781d7f65a939b
 runc:
  Version:          1.0.0-rc92
  GitCommit:        ff819c7e9184c13b7c2607fe6c30ae19403a7aff
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
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 xxxxx

Remember that you will have to log out and back in for this to take effect!

WARNING: Adding a user to the "docker" group will grant the ability to run
         containers which can be used to obtain root privileges on the
         docker host.
         Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
         for more information.


インストールされたことを確認するために、docker versionコマンドを実行します。ヘルプで表示されたaptコマンドの方法ではバージョン19.03.8をインストールする案内となっていましたが、DockerのWebサイトにあるスクリプトを実行した場合は最新のバージョン20.10.2がインストールされたようです。

docker version
Client: Docker Engine - Community
 Version:           20.10.2
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        2291f61
 Built:             Mon Dec 28 16:17:43 2020
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true
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.24/version: dial unix /var/run/docker.sock: connect: permission denied


Docker関連の有用ツールのインストール

Dockerをより有効活用するためにDocker MachineとDocker Composeというツールをインストールします。念のためにUbuntu Server 20.04上にインストールされているか確認したところ、どちらのツールもインストールされていませんでしたので、早速インストールしてみましょう。

docker-machine

Command 'docker-machine' not found, but can be installed with:

sudo snap install docker

docker-compose

Command 'docker-compose' not found, but can be installed with:

sudo snap install docker          # version 19.03.11, or
sudo apt  install docker-compose  # version 1.25.0-1

See 'snap info docker' for additional versions.


Docker Machine

まずは現時点の最新バージョンをDocker MachineプロジェクトのGitHubのページで確認します。以下の図の通り、v0.16.2となります。


同じWebページ上で、少し下にスクロールすると、Linux向けのインストールコマンドが記載されています。

curl -L https://github.com/docker/machine/releases/download/v0.16.2/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine &&
    chmod +x /tmp/docker-machine &&
    sudo cp /tmp/docker-machine /usr/local/bin/docker-machine


上記コマンドを実行してみましょう。

curl -L https://github.com/docker/machine/releases/download/v0.16.2/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine &&
>     chmod +x /tmp/docker-machine &&
>     sudo cp /tmp/docker-machine /usr/local/bin/docker-machine
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   651  100   651    0     0    667      0 --:--:-- --:--:-- --:--:--   667
100 32.6M  100 32.6M    0     0  1322k      0  0:00:25  0:00:25 --:--:-- 2530k
[sudo] password for xxxxx:

$ docker-machine version
docker-machine version 0.16.2, build bd45ab13


バージョンv0.16.2のDocker Machineがインストールされたことが確認できました。


Docker Compose

Docker Machineと同様に、現時点の最新バージョンをDocker ComposeプロジェクトのGitHubのページで確認します。以下の図の通り、1.28.0-rc2となります。


こちらは同じWebページ上にLinux向けのインストールコマンドが記載されていませんでした。以下のコマンド例を参考にし、バージョン番号(1.28.0-rc2)を最新バージョンに変えてください。

curl -L https://github.com/docker/compose/releases/download/1.28.0-rc2/docker-compose-`uname -s`-`uname -m` >/tmp/docker-compose &&
    chmod +x /tmp/docker-compose &&
    sudo cp /tmp/docker-compose /usr/local/bin/docker-compose


それでは上記コマンドを実行してみましょう。

curl -L https://github.com/docker/compose/releases/download/1.28.0-rc2/docker-compose-`uname -s`-`uname -m` >/tmp/docker-compose &&
>     chmod +x /tmp/docker-compose &&
>     sudo cp /tmp/docker-compose /usr/local/bin/docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   651  100   651    0     0    579      0  0:00:01  0:00:01 --:--:--   579
100 12.2M  100 12.2M    0     0  1462k      0  0:00:08  0:00:08 --:--:-- 2280k

$ docker-compose version
docker-compose version 1.28.0-rc2, build f1e3c356
docker-py version: 4.4.1
CPython version: 3.9.0
OpenSSL version: OpenSSL 1.1.1d  10 Sep 2019


バージョン1.28.0-rc2のDocker Composeがインストールされたことが確認できました。


おわりに

LinuxにDockerと関連するツール(Docker MachineとDocker Compose)をインストールしました。Linuxの場合は非常に簡単にインストールできましたね。

しかしながら、実際の開発現場では、Windowsでアプリケーションを開発することがまだまだ多いと思います。Windowsの場合はHyper-Vに依存した設定となったり、VMWare WorkstationのようにHyper-V以外の仮想ソフトをインストールしていたり、Hyper-Vを持たない古いWindows OSを使うことも想定され、WindowsでDockerを利用できるようにするためには手間がかかります。別の機会に記事として書いてみようと思います。