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言語 CRAN Task View:堅牢な統計的方法R言語 CRAN Task View:堅牢な統計的方法 CRAN Task View: Robust Statistical Methodsの英語での説明文をGoogle翻訳を使用させていただき機械的に翻訳したものを掲載しました。 Maintainer: Martin Maechler Contact: Martin.Maechler at […]
  • RStudioのエディタテーマ一覧RStudioのエディタテーマ一覧 RStudio(ver 1.0.153)のエディタテーマの一覧をご紹介します。 Ambiance Chaos Chrome Clouds Midnight Clouds Cobalt Crimson Editor Dawn Dreamweaver Eclipse Idle Fingers Katzenmilch Kr […]
  • 統計的因果推論による傾向スコアとIPW推定量の基本的な考え方統計的因果推論による傾向スコアとIPW推定量の基本的な考え方 [latexpage] 統計的因果推論による因果効果を調べる手段として、傾向スコアとIPW推定量という概念があります。ここでは、なぜ傾向スコアを考えるのか、傾向スコアの逆数の重み付けはどのような意味があるのかを、複雑な数式を用いずに具体例を通してご説明します。 さっそくですが、次の具体例を考えます。 […]
  • R ggplot2を用いて散布図と周辺分布をプロットする方法R ggplot2を用いて散布図と周辺分布をプロットする方法 ggplot2を用いて散布図と周辺分布をプロットする2つの方法をお伝えします。 最初の方法は、ggExtraパッケージのggMarginal関数を用いる方法で、周辺分布を簡単にプロットすることができます。 二番目の方法は、散布図と周辺分布を作成した上で、一つにまとめる方法です。 それぞれ一長一短があります。 最初の方法は、コード量が少ないですがグラフとして […]
  • R言語 CRAN Task View:実験計画法(DoE)および実験データの分析の設計R言語 CRAN Task View:実験計画法(DoE)および実験データの分析の設計 CRAN Task View: Design of Experiments (DoE) & Analysis of Experimental Dataの英語での説明文をGoogle翻訳を使用させていただき機械的に翻訳したものを掲載しました。 Maintainer: Ulrike Groemping Contact: groemping […]
Ubuntu 20.04にDockerをインストールする手順

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

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