Ubuntu 20.04にDockerをインストールおよびインストールの確認、sudoなしでdockerコマンドを実行する方法をお伝えします。
Ubuntu 20.04にDockerをインストールする方法はいくつかありますが、snapを用いた方法、Ubuntuの標準リポジトリを用いた方法、DockerおよびDocker Composeの公式リポジトリを用いた方法を順に説明します。

Ubuntu 20.04にDockerをインストール

snapでインストール

snapでインストールするために次のコマンドを実行します。
snapでインストールすると、docker-composeも同時にインストールされます。


$ sudo snap install docker

Ubuntu標準のリポジトリを用いてDockerをインストール

Ubuntuの標準のリポジトリを用いてDockerとDocker Composeをインストールするために次のコマンドを実行します。


$ sudo apt install docker docker-compose

Docker公式のリポジトリを用いてDockerをインストール

Install Docker Engine on Ubuntu | Docker Documentationを参考にインストールします。
まず、旧バージョンをアンインストールしておきます。


$ sudo apt remove docker docker-engine docker.io containerd runc

Dockerのインストールに必要なパッケージをインストールします。


$ sudo apt update

$ sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

Dockerの公式GPGキーを追加します。


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

フィンガープリントを確認します。


$ 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) <docker@docker.com>
sub   rsa4096 2017-02-22 [S]

Dockerの安定板のリポジトリを追加します。


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

Dockerをインストールします。


$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io

Docker Compose公式のリポジトリを用いてDocker Composeをインストール

Install Docker Compose | Docker Documentationを参考にインストールします。
まず、必要なパッケージをインストールします。


$ sudo apt update
$ sudo apt install curl

Docker Composeをダウンロードします。
次のコマンドの「1.27.4」の部分は、インストールしたいバージョンに応じて適宜変更してください。


$ sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

ダウンロードしたファイルに実行権限を付与します。


$ sudo chmod +x /usr/local/bin/docker-compose

確認

Dockerのバージョンの確認

docker versionコマンドを用いてDockerのバージョンを確認します。


$ sudo docker version

Client:
 Version:           19.03.11
 API version:       1.40
 Go version:        go1.13.12
 Git commit:        dd360c7
 Built:             Mon Jun  8 20:23:26 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          19.03.11
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.12
  Git commit:       77e06fd
  Built:            Mon Jun  8 20:24:59 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

docker-composeのバージョンを確認

snapを用いてDockerをインストールすると、docker-composeも併せてインストールされます。
docker-compose versionコマンドを用いてdocker-composeのバージョンを確認します。


$ sudo docker-compose version

docker-compose version 1.25.5, build unknown
docker-py version: 4.2.1
CPython version: 3.5.2
OpenSSL version: OpenSSL 1.0.2g  1 Mar 2016

hello-worldコンテナを用いた確認

プログラム言語を学習する際に「hello world」と出力するプログラムをよく見かけます。
それのDocker版を実行してみます。
docker runコマンドでhello-worldイメージを取得し、コンテナを実行します。


$ sudo docker run hello-world

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete 
Digest: sha256:7f0a9f93b4aa3022c3a4c147a449bf11e0941a1fd0bf4a8e6c9408b2600777c5
Status: Downloaded newer image for hello-world:latest

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

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

docker imagesコマンドでイメージの情報を出力します。
hello-worldが確認できます。


$ sudo docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              bf756fb1ae65        7 months ago        13.3kB

起動中のコンテナの一覧を出力します。
hello-worldコンテナはメッセージ出力後に停止するため起動中でないことが分かります。


$ sudo docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

docker psコマンドに「-a」を追加して、すべてのコンテナを表示させます。


$ sudo docker ps -a

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
d895aa694ef1        hello-world         "/hello"            26 minutes ago      Exited (0) 26 minutes ago                       keen_grothendieck

王道のhello-worldを実行したので、削除しておきます。
まず、docker rmコマンドを用いてコンテナを削除します。
docker rmコマンドの引数はdocker ps -aのCONTAINER IDを指定します。


$ docker rm d895aa694ef1

d895aa694ef1

次に、docker rmiコマンドを用いてイメージを削除します。


$ docker rmi hello-world

Untagged: hello-world:latest
Untagged: hello-world@sha256:7f0a9f93b4aa3022c3a4c147a449bf11e0941a1fd0bf4a8e6c9408b2600777c5
Deleted: sha256:bf756fb1ae65adf866bd8c456593cd24beb6a0a061dedf42b26a993176745f6b
Deleted: sha256:9c27e219663c25e0f28493790cc0b88bc973ba3b1686355f221c38a36978ac63

ユーザをdockerグループに追加

現時点では、dockerを実行するためにはsudo権限が必要になります。
実際、sudoなしでdocker versionコマンドを実行すると次のように表示され、権限拒否されてしまいます。


$ docker version

Client:
 Version:           19.03.11
 API version:       1.40
 Go version:        go1.13.12
 Git commit:        dd360c7
 Built:             Mon Jun  8 20:23:26 2020
 OS/Arch:           linux/amd64
 Experimental:      false
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.40/version: dial unix /var/run/docker.sock: connect: permission denied

sudoなしでもdockerコマンドを実行できるようにdockerグループを作成し、ユーザをdockerグループに追加します。


$ sudo addgroup --system docker
$ sudo adduser <ユーザ名> docker

ここで、再起動しておきます。
再度、sudoなしでdocker versionコマンドを実行すると次のように表示され、sudoなしでも実行できていることが確認できます。


$ docker version

Client:
 Version:           19.03.11
 API version:       1.40
 Go version:        go1.13.12
 Git commit:        dd360c7
 Built:             Mon Jun  8 20:23:26 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          19.03.11
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.12
  Git commit:       77e06fd
  Built:            Mon Jun  8 20:24:59 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

関連する記事

  • なぜマイナス×マイナス=プラスとなるのかなぜマイナス×マイナス=プラスとなるのか 先日、ある人と話しているときに、私が大学で数学を学んだことを告げると、「なぜ、マイナス×マイナス=プラスとなるのか」と質問を受けた。 どうやら、「マイナス×マイナス=プラス」はルールとして覚えているようだった。 この質問を受けたとき、正直に言うと「すばらしい」と思った。なぜそう思ったのかというと、すでに当たり前として組み込まれている「マイナス×マイナス=プラス」に対し […]
  • R MASSパッケージcorresp関数のエラー対処方法 RのMASSパッケージ内のcorresp関数を用いたとき、エラーに悩まされたので、皆様と共有しておく。 環境 Ubuntuのバージョン $ cat /etc/lsb-release […]
  • Ubuntu16.04で任意のバージョンのNode.jsをインストールする方法Ubuntu16.04で任意のバージョンのNode.jsをインストールする方法 Ubuntu16.04で、任意のバージョンのNode.js環境を構築する方法をお伝えいたします。 apt-getコマンドによりNode.jsをインストールしようとすると、かなり古いバージョンがインストールされます。 そのため、最新または任意のバージョンをインストールするときは、PPA(personal package […]
  • MINTELのGNPDから出力されたCSVの文字化けの対処法 ミンテルGNPD(世界新商品情報データベース)から出力されたCSVが文字化けしている場合の対処法を備忘録として残しておきます。 Windowsパソコンにダウンロードかつ英文のみ ここでの対応は、「café」のようなアキュート・アクセントなどが文字化けしている場合の対応になります。 ubuntu上で文字コードをUTF-8に変換するにはiconvコマンドを用いて、次 […]
  • Opal ユーザーを登録する方法Opal ユーザーを登録する方法 OBiBaのOpalサーバにユーザーを登録する方法をお伝えします。 ユーザー登録はAdministratorが行うことができる機能になります。 そのため、administratorでサインインします。 表示された画面の右上にあるAdministrationをクリックします。 Administration機能一覧から、Users and […]
Ubuntu 20.04にDockerをインストールする手順

Ubuntu 20.04にDockerをインストールする手順」への1件のフィードバック

コメントは受け付けていません。