まっさらなRHEL8派生のOSにdocker ce
を導入する。
追記事項について
- 2022/7: dockerの自動起動について追記した。
はじめに
dockerの導入について書いていなかったと思うので記録しておこうと思った。
RHEL8派生のOSに導入するのを前提にしています。CentOS8
については悲しい…
ともあれ今回はAlmaLinux
を使った。RockyLinux
でもCentOS Stream
でも同様にできるだろう。
環境
OSと、導入後に確認したdockerのバージョン:
$ cat /etc/redhat-release
AlmaLinux release 8.4 (Electric Cheetah)
$ docker version
Client: Docker Engine - Community
Version: 20.10.7
API version: 1.41
Go version: go1.13.15
Git commit: f0df350
Built: Wed Jun 2 11:56:24 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.7
API version: 1.41 (minimum version 1.12)
Go version: go1.13.15
Git commit: b0f5bc3
Built: Wed Jun 2 11:54:48 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.6
GitCommit: d71fcd7d8303cbf684402823e425e9dd2e99285d
runc:
Version: 1.0.0-rc95
GitCommit: b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7
docker-init:
Version: 0.19.0
GitCommit: de40ad0
$ docker-compose version
docker-compose version 1.29.2, build 5becea4c
docker-py version: 5.0.0
CPython version: 3.7.10
OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
行うこと
いきなりdockerの導入はできないので、その準備段階から。
- ユーザーの作成
- ユーザーの権限(グループ)
- sshdの設定
- レポジトリの追加
- dockerの導入
大雑把に上の5つを行う。
最初の3つはOSのセットアップであるあるな奴なので以前書いたことがある。以下の2-1から2-3までで解説済み:
以前はdocker-machine
を使ってセットアップしていた。今回は手動でセットアップする感じになる。
dockerの導入
dnfの更新
RHEL8系以降はパッケージ管理ツールはyumでなくdnfを使う。yumはdnfのエイリアスになっている。
docker自体の導入の前にパッケージ管理ツールのアップデート:
dnf upgrade
ちなみにmanによると、update
もup
もupgrade
のエイリアスになる。
$ man dnf
...抜粋
Upgrade Command
Command: upgrade
Aliases: up
Deprecated aliases: update, upgrade-to, update-to, localupdate
docker-ceのインストール
docker-ce
は、Install Docker Engine on CentOS | Docker Documentationに従うのが簡単。yum向けに書いてある。
まずは、レポジトリの追加:
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
そして、docker-ce
のインストール:
dnf install docker-ce docker-ce-cli containerd.io
終わったらdockerを始動:
systemctl start docker
2022/7追記: dockerが自動起動するようにする:
systemctl enable docker
正しくインストールできたか確認:
sudo docker run hello-world
これでdocker run
などはできるようになる。ユーザーをdockerグループに入れないと、sudoが必要だったりするので、次で設定を変える。
ユーザーをdockerグループに入れる
ユーザーをdockerグループに入れていないとdockerコマンドでsudoが必要かもしれない。なので入れる:
sudo gpasswd -a <username> docker
また、usermod -G docker <username>
とすると、それまで所属していたグループから抜けてしまうことに注意。usermod -G docker,wheel <username>
などとする必要がある。所属するグループが多くなると大変そう。
sshならログアウト・ログインしないと反映されないと思う。
docker-composeの導入
docker-compose
はdocker-ce
に含まれていないようで、追加のインストールが必要になる。インストール方法はバイナリをダウンロードしてきて配置するというもの。
最新バージョンは、docker/compose: Define and run multi-container applications with Dockerにて要確認:
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o docker-compose
sudo mv docker-compose /usr/local/bin && sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
確認は:
docker-compose version
でいいだろう。
使ったコマンド
OSの設定系のコマンドはまとめておく。dockerのは省略。
細かい使い方はman
で調べるか、インターネットに頼る。
useradd <new_username>
- ユーザーの作成/追加
gpasswd -a <username> <group>
- ユーザーの所属グループ変更(
/etc/group
ファイルの編集)。-d
にするとグループから削除
- ユーザーの所属グループ変更(
dnf <command>
- yumの後継。大体同じコマンドが使える。
おわり
これでdockerの大体はできるだろう。本当はdocker stack
を使ってみようかと思って環境を作ったが(上までの作業で使える)、やはりシングルノードでは移行したくなるほどの利点をあまり感じなくてdocker-compose
からの移行はしないつもり。
新規で作るときに使ってみよう。
dockerの代替
代替でもないけど、podman
というdocker互換性のあるツールがRHEL系にはあるらしい。勉強不足。
podman
、podman-compose
などのパッケージがあるようだ。dnfで入れられる。
以上です。
Amazonアソシエイト
誤記が多いようなのでkindle版がいいのかな
コメント