公開日:2022/5/8 0:00:00

AlmaLinux 8

AlmaLinux 8.5 セットアップメモ

Section 6.1 Docker環境 Docker-CE インストール

About

コンテナエンジンである Docker (https://www.docker.com/) をインストールします。

RHELには、Podmanというコンテナエンジンもあるので、それを使うほうが良いのかもしれませんが、まずはこちらの手順を。

環境は、Section 1.1Section 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-ceDocker本体
docker-ce-cliDockerのコマンドラインインターフェース
containerd.ioコンテナのランタイム
docker-compose-pluginDocker 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です。仮のものなので削除しておきましょう。

実行/停止中のコンテナリストを表示して、NAMESCONATINER 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

となります。