AlmaLinux 8
AlmaLinux 8.5 セットアップメモ
Section 6.1 Docker環境 Docker-CE インストール
About
コンテナエンジンである Docker (https://www.docker.com/) をインストールします。
RHELには、Podmanというコンテナエンジンもあるので、それを使うほうが良いのかもしれませんが、まずはこちらの手順を。
環境は、Section 1.1、Section 1.2 を行った直後の状態からとなりますが、Section 2.1、Section 2.2(未作成)で作成した環境で実行しています。
podmanの確認
標準で使えるコンテナエンジンのPodmanと競合してしまうため、インストールされていないことを確認します。
[root@localhost ~]# rpm -qa | grep podman
[root@localhost ~]#
何も表示されなければインストールされていません。
リポジトリ追加
Docker のリポジトリを追加します。
[root@localhost ~]# dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
repo の追加: https://download.docker.com/linux/centos/docker-ce.repo
[root@localhost ~]#
インストールするパッケージは表の通り。
package | |
---|---|
docker-ce | Docker本体 |
docker-ce-cli | Dockerのコマンドラインインターフェース |
containerd.io | コンテナのランタイム |
docker-compose-plugin | Docker Compose (V2) |
Docker compose は別でインストールとなっていたものが、パッケージ化されているので不具合が無ければパッケージを入れましょう。
[root@localhost ~]# dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin
依存関係が解決しました。
================================================================================
パッケージ Arch バージョン リポジトリー サイズ
================================================================================
インストール:
containerd.io x86_64 1.6.4-3.1.el8 docker-ce-stable 33 M
docker-ce x86_64 3:20.10.16-3.el8 docker-ce-stable 22 M
docker-ce-cli x86_64 1:20.10.16-3.el8 docker-ce-stable 29 M
docker-compose-plugin x86_64 2.5.0-3.el8 docker-ce-stable 7.0 M
アップグレード:
audit x86_64 3.0.7-2.el8.2 baseos 262 k
audit-libs x86_64 3.0.7-2.el8.2 baseos 122 k
libsemanage x86_64 2.9-8.el8 baseos 167 k
policycoreutils x86_64 2.9-19.el8 baseos 373 k
依存関係のインストール:
checkpolicy x86_64 2.9-1.el8 baseos 347 k
container-selinux noarch 2:2.179.1-1.module_el8.6.0+2878+e681bc44
appstream 57 k
docker-ce-rootless-extras x86_64 20.10.16-3.el8 docker-ce-stable 4.7 M
fuse-common x86_64 3.3.0-15.el8 baseos 21 k
fuse-overlayfs x86_64 1.8.2-1.module_el8.6.0+2878+e681bc44
appstream 72 k
fuse3 x86_64 3.3.0-15.el8 baseos 53 k
fuse3-libs x86_64 3.3.0-15.el8 baseos 94 k
libcgroup x86_64 0.41-19.el8 baseos 69 k
libslirp x86_64 4.4.0-1.module_el8.6.0+2878+e681bc44
appstream 69 k
policycoreutils-python-utils noarch 2.9-19.el8 baseos 252 k
python3-audit x86_64 3.0.7-2.el8.2 baseos 86 k
python3-libsemanage x86_64 2.9-8.el8 baseos 127 k
python3-policycoreutils noarch 2.9-19.el8 baseos 2.2 M
python3-setools x86_64 4.3.0-3.el8 baseos 623 k
slirp4netns x86_64 1.1.8-2.module_el8.6.0+2878+e681bc44
appstream 50 k
弱い依存関係のインストール:
docker-scan-plugin x86_64 0.17.0-3.el8 docker-ce-stable 3.8 M
モジュールストリームの有効化中:
container-tools rhel8
トランザクションの概要
================================================================================
インストール 20 パッケージ
アップグレード 4 パッケージ
ダウンロードサイズの合計: 105 M
これでよろしいですか? [y/N]: y
(中略)
完了しました!
[root@localhost ~]#
動作確認
Dockerはサービスを動かす必要があるので、サービスを起動して、サンプルを実行します。
[root@localhost ~]# systemctl start docker
[root@localhost ~]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
(中略)
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/
[root@localhost ~]#
表示されたらOKです。仮のものなので削除しておきましょう。
実行/停止中のコンテナリストを表示して、NAMES か CONATINER ID を使って消します。どちらも実行毎に変わるのでコマンドは自分で読み替えてください。
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ee99588a1236 hello-world "/hello" 7 minutes ago Exited (0) 7 minutes ago sad_villani
[root@localhost ~]# docker rm sad_villani
sad_villani
[root@localhost ~]#
更に、image もダウンロードしているのでそれも削除します。これもIMAGE IDを使うのでリストを見てから削除します。
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 7 months ago 13.3kB
[root@localhost ~]# docker rmi feb5d9fea6a5
Untagged: hello-world:latest
Untagged: hello-world@sha256:80f31da1ac7b312ba29d65080fddf797dd76acfb870e677f390d5acba9741b17
Deleted: sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412
Deleted: sha256:e07ee1baac5fae6a26f30cabfe54a36d3402f96afda318fe0a96cec4ca393359
[root@localhost ~]#
これでクリーンな状態になりました。
Dockerをユーザーで実行するための設定と確認
rootユーザーで使うのも具合が悪いので、ユーザーが使えるようにします。
dockerグループはパッケージインストール時に作成されているので、そこに追加します。
[root@localhost ~]# usermod -aG docker vagrant
[root@localhost ~]# grep docker /etc/group
docker:x:990:vagrant
[root@localhost ~]#
一度、完全にログアウトしてから、ユーザーでログインしなおして、infoを確認します。
[vagrant@localhost ~]$ docker info
(中略)
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
(中略)
[vagrant@localhost ~]$
使用できない場合は
[vagrant@localhost ~]$ docker info
(中略)
Server:
ERROR: 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.24/info": dia
l unix /var/run/docker.sock: connect: permission denied
errors pretty printing info
となります。