REHL8派生のAlmaLinuxにdocker-ceを導入

まっさらな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までで解説済み:

VPS上のcentosにDockerをdocker-machineでセットアップ
復習を兼ねてVPS上でDockerをセットアップする。 本当はdocker-machineの対応ドライバで簡単にセットアップできるが、方法を思い出しておきたいのもあって、defaultドライバでセットアップを行う。 その手順をメモしておきた...

以前はdocker-machineを使ってセットアップしていた。今回は手動でセットアップする感じになる。

dockerの導入

dnfの更新

RHEL8系以降はパッケージ管理ツールはyumでなくdnfを使う。yumはdnfのエイリアスになっている。

docker自体の導入の前にパッケージ管理ツールのアップデート:

dnf upgrade

ちなみにmanによると、updateupupgradeのエイリアスになる。

$ 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-composedocker-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系にはあるらしい。勉強不足。 podmanpodman-composeなどのパッケージがあるようだ。dnfで入れられる。

以上です。


Amazonアソシエイト

誤記が多いようなのでkindle版がいいのかな

Amazon.co.jp

コメント

タイトルとURLをコピーしました