みーのぺーじ

みーが趣味でやっているPCやソフトウェアについて.Python, Javascript, Processing, Unityなど.

Ubuntu Serverにrootless Dockerをインストールする

備忘録です.

Ubuntu Server をインストール

Ubuntu Server 20.04 LTSをダウンロードしてUSBメモリーに書き込み,クリーンインストールします.

Get Ubuntu Server | Download | Ubuntu

Ubuntu Serverをインストール中にDockerなど追加のソフトウェアをインストールするか尋ねられますが,snap版Dockerは少し使いにくいので,やめておきます.SSHをインストールするか聞かれるので,インストールします.

$ hostnamectl
Static hostname: mt-servier
Icon name: computer-desktop
Chassis: desktop
Machine ID: ...
Boot ID: ...
Operating System: Ubuntu 20.04.4 LTS
Kernel: Linux 5.4.0-104-generic
Architecture: x86-64

Ubuntu Serverのインストールが完了したら,snapdを削除します.aptと併存しているとややこしいからです.

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt autoremove --purge snapd

Rootless Dockerをインストール

以下に記載されている通りなのですが,自分なりにまとめます.

Run the Docker daemon as a non-root user (Rootless mode) | Docker Documentation

uidmapとdbus-user-sessionをインストールします.

$ sudo apt install uidmap dbus-user-session

ユーザーの状況を確認します.ここでユーザー名はmtであるとします.

$ id -u
1000
$ whoami
mt
$ grep ^$(whoami): /etc/subuid
mt:100000:65536
$ grep ^$(whoami): /etc/subgid
mt:100000:65536

インストールスクリプトをダウンロードして実行します.rootlessなのでsudoは不要です.

https://get.docker.com/rootless

$ curl -O https://get.docker.com/rootless
$ ls
rootless
$ mv rootless rootless.sh
ls
rootless.sh
$ sh rootless.sh 
...
[INFO] Installed docker.service successfully.
[INFO] To control docker.service, run: `systemctl --user (start|stop|restart) docker.service`
[INFO] To run docker.service on system startup, run: `sudo loginctl enable-linger mt`

[INFO] Creating CLI context "rootless"
Successfully created context "rootless"

[INFO] Make sure the following environment variables are set (or add them to ~/.bashrc):

export PATH=/home/mt/bin:$PATH
export DOCKER_HOST=unix:///run/user/1000/docker.sock

インストールが完了したら,指示通り~/.bashrcにDOCKER_HOST変数を登録して,後で簡単に使えるようにしておきます.一旦Ubuntu Serverを再起動します.

Docker daemonを起動します.

$ systemctl --user start docker

Dockerのバージョンを取得してみます.

$ docker version
Client:
 Version:           20.10.12
 API version:       1.41
 Go version:        go1.16.12
 Git commit:        e91ed57
 Built:             Mon Dec 13 11:40:57 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.12
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.12
  Git commit:       459d0df
  Built:            Mon Dec 13 11:46:12 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.4.12
  GitCommit:        7b11cfaabd73bb80907dd23182b9347b4245eb5d
 runc:
  Version:          1.0.2
  GitCommit:        v1.0.2-0-g52b36a2d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

いい感じにrootless Dockerがインストールできました.

次回からは起動時に自動で実行されるように設定しておきます.

$ systemctl --user enable docker
$ sudo loginctl enable-linger $(whoami)

これで初期設定は完了です.

参考資料