Tonysan’s blog

ほぼ自分のための Tips 集


刺され!

Docker

Docker

みんな大好き Docker を入れていきます。

Docker Engine インストール

古い競合するパッケージをアンインストール

と、公式のドキュメントに書いてある。

for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

一応やったけど、私の環境では、必要なかったです。

Docker GPG key を登録

curl 入れてなかったら事前にインストールしておくこと。

sudo apt update
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

リポジトリを設定

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update

最新バージョンをインストールする

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

これで Docker がインストールできました。

docker グループを作成して、ユーザーを所属させる

いちいち sudo で起動していられないので docker グループを作って所属する。

sudo gpasswd -a ユーザー名 docker
newgrp - docker

バージョン確認

docker -v

2024/02/22 時点で、Docker のバージョンは 25.0.3。
ついでに docker-compose

docker compose version

Docker compose のバージョンは 2.24.5 でした。

Rootless モード

個人で Docker を使うのに Rootless 環境を作る必要はあまりないかなと思っていますが、sudo 権限を持たないユーザーを docker グループ に加えるのは危険なので、ちょっと安全に Docker を使おうよというお話。

uidmap をインストールして、Docker デーモンの停止

前提条件として newuidmapnewgidmap が必要なので、パッケージ uidmap をインストール。
現在、system 全体で Docker デーモンが動いている状態なので停止します。
dbus-user-session が入っていなかったらインストールしてシステムを再起動しておきます。
(インストール済でしたのでスキップします)

sudo apt install uidmap
sudo systemctl disable --now docker.service docker.socket

Rootless ユーザー(を作成して)Docker インストール

sudo グループに入っていないユーザーでログイン。(ないので最初に作る)
tombo さんが仲間に入りました。
tombo でログインして、
systemd のユーザーインスタンス自動起動

sudo adduser tombo
sudo login tombo
loginctl enable-linger tombo

23.10 では、
id で UID を確認(1001 でした)して、
環境変数 $XDG_RUNTIME_DIR を設定。
22.04 ではしなくて良い。

id
echo export XDG_RUNTIME_DIR=/run/user/1001 >> ~/.bashrc
exec $SHELL -l

Rootless Docker 本体インストール

そのまま tombo で作業しています。

curl -fsSL https://get.docker.com/rootless | sh

インストールの最後辺りに表示された環境変数~/.bashrc に追加。

echo export PATH=/home/tombo/bin:$PATH >> ~/.bashrc
echo export DOCKER_HOST=unix:///run/user/1001/docker.sock >> ~/.bashrc
exec $SHELL -l

バージョンを確認

docker -v
docker compose version

2024/02/22 時点で、Rootless Docker のバージョンは 25.0.2 でした。
Rootfull とはバージョン違ったりもするのね。

Hello World

sudo 権限のない tombo さんが、docker run hello-world する。

docker run hello-world

Hello from Docker! が表示されれば良い。