Ubuntu 20.04にDockerをインストールおよびインストールの確認、sudoなしでdockerコマンドを実行する方法をお伝えします。
Ubuntu 20.04にDockerをインストールする方法はいくつかありますが、ここでは最も簡単な方法であるsnapでインストールすることにします。

Ubuntu 20.04にDockerをインストール

snapでインストール

snapでインストールするために次のコマンドを実行します。


$ sudo snap install docker

確認

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

関連する記事

  • カイ二乗検定 – 適合度検定カイ二乗検定 – 適合度検定 適合度検定とは、観測度数分布が期待度数分布と同じかどうかを統計的に確かめる方法である。 適合度検定を行う手順は次の通りである。 仮説を立てる。 帰無仮説 H0:観測度数分布と期待度数分布が同じ。 対立仮説 […]
  • DockerでMySQL8.0を使う方法DockerでMySQL8.0を使う方法 DockerでMySQL8.0を使用できるまでの手順をお伝えします。 ここでは、docker-composeとDocker公式のMySQL8.0イメージを用います。 環境 ホストOS ホストOSはUbuntu 20.04を用いております。 $ cat /etc/lsb-release […]
  • R データフレームから特定の型の列を抽出する方法R データフレームから特定の型の列を抽出する方法 Rのデータフレームから特定の型の列を抽出する方法をお伝えします。 サンプルデータとして、irisを用います。 データフレームの構造をstr関数で確認します。 > str(iris) 'data.frame': 150 obs. of 5 variables: $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 […]
  • R言語 CRAN Task ViewsR言語 CRAN Task Views CRANに登録されているパッケージ数は膨大です。そこで、いくつかのグループにパッケージを分類し整理されたCRAN Tack Views というサイトがあります。ここでは、英語での説明文をGoogle翻訳を使用させていただき機械的に翻訳したものを掲載しました。 Bayesian(日本語訳) Bayesian […]
  • 教師あり学習と教師なし学習のふわっとした説明教師あり学習と教師なし学習のふわっとした説明 機械学習の教師あり学習と教師なし学習について、難しい専門用語を全く使わずに概要を分かりやすく説明してみます。 プログラムとは まず、プログラムについてふわっと説明します。 このページをご覧になられているということは、ブラウザと呼ばれるプログラム(例えば、Google ChromeやMicrosoft Edge、Mozilla Firefox、Apple […]
Ubuntu 20.04にDockerをインストールする手順