OSS Fan ~OSSでLinuxサーバ構築~

このエントリーをはてなブックマークに追加

Docker CE 24.0.7とDocker Resistry 2.8.3をAlmaLinux 8.5へ導入してDockerイメージを一元管理

カテゴリ:OSSセットアップ | ソフトウェア:Docker | タグ:
最終更新日:2024-01-08 | 公開日:2024-01-08

目次

概要

 (仕事と関係なく)趣味で作成したアプリケーションは、家庭内のRaspberry Pi 4B(以下ラズパイ4)上で稼働しているGitLabでソース管理しています。 動作テストのためにJenkinsのジョブを実行するとWebサーバのDockerイメージを作成し、コンテナとして起動してテストできるようにしています。 Dockerイメージをビルドする際に利用するベースとなるDockerイメージはDocker Hubから取得して、 ビルドしたDockerイメージもDocker Hubに登録して管理しています。 よく考えると一連の開発サイクルの中でDocker Hubだけローカル(家庭内)にない環境を利用しているので、 勉強がてらローカルにDocker Registryを構築して利用してみようと思い立ったので試してみました。 まだ本格運用は始めていませんが、一通り試して問題なさそうなところまでは確認しました。

構成

サーバ構成

ハードウェア

Raspberry Pi 4 Model B - 8GB

OS

AlmaLinux release 8.5 (Arctic Sphynx) aarch64

ソフトウェア・パッケージ

  • yum-utils-4.0.21-23.el8.alma.1.noarch.rpm
  • docker-ce-24.0.7-1.el8.aarch64.rpm
  • docker-ce-cli-24.0.7-1.el8.aarch64.rpm
  • containerd.io-1.6.26-3.1.el8.aarch64.rpm
  • docker-buildx-plugin-0.11.2-1.el8.aarch64.rpm
  • docker-compose-plugin-2.21.0-1.el8.aarch64.rpm
  • registry:2.8.3 ※Dockerイメージ

環境構築

インストール

旧バージョンのDockerのインストール確認

 これからDockerをインストールする環境に旧バージョンのDockerがインストールされていないかを確認します。 もし旧バージョンのDockerがインストール済みの場合は先に削除してからインストールを行います。 今回利用したラズパイ4用のAlmaLinux 8.5のOSのイメージではDockerと名の付くパッケージはインストールされていなかったため、削除処理は不要でした。

# dnf list installed | grep docker ←何も表示されなかった

yum-utilsのインストール

 Docker CEのリポジトリを登録してdnfコマンドでDocker CEをインストールできるようにするために、 yum-utilsパッケージをインストールします。yum-utilsの中にリポジトリを登録するためのユーティリティが含まれています。

# dnf -y install yum-utils
gitlab_gitlab-ce                                                                        274  B/s | 862  B     00:03
gitlab_gitlab-ce-source                                                                 399  B/s | 862  B     00:02
Dependencies resolved.
========================================================================================================================
 Package                               Architecture         Version                           Repository           Size
========================================================================================================================
Installing:
 yum-utils                             noarch               4.0.21-23.el8.alma.1              baseos               75 k
Upgrading:
 dnf                                   noarch               4.7.0-19.el8.alma                 baseos              542 k
 dnf-data                              noarch               4.7.0-19.el8.alma                 baseos              156 k
 dnf-plugins-core                      noarch               4.0.21-23.el8.alma.1              baseos               76 k
 json-c                                aarch64              0.13.1-3.el8                      baseos               39 k
 libdnf                                aarch64              0.63.0-17.el8_9.alma              baseos              626 k
 libsolv                               aarch64              0.7.20-6.el8                      baseos              341 k
 python3-dnf                           noarch               4.7.0-19.el8.alma                 baseos              549 k
 python3-dnf-plugins-core              noarch               4.0.21-23.el8.alma.1              baseos              262 k
 python3-hawkey                        aarch64              0.63.0-17.el8_9.alma              baseos              108 k
 python3-libdnf                        aarch64              0.63.0-17.el8_9.alma              baseos              705 k
 yum                                   noarch               4.7.0-19.el8.alma                 baseos              208 k
Installing dependencies:
 python3-systemd                       aarch64              234-8.el8                         baseos               79 k

Transaction Summary
========================================================================================================================
Install   2 Packages
Upgrade  11 Packages

Total download size: 3.7 M
Downloading Packages:
(1/13): python3-systemd-234-8.el8.aarch64.rpm                                           285 kB/s |  79 kB     00:00
(2/13): yum-utils-4.0.21-23.el8.alma.1.noarch.rpm                                       227 kB/s |  75 kB     00:00
(3/13): dnf-4.7.0-19.el8.alma.noarch.rpm                                                1.3 MB/s | 542 kB     00:00
(4/13): dnf-plugins-core-4.0.21-23.el8.alma.1.noarch.rpm                                628 kB/s |  76 kB     00:00
(5/13): dnf-data-4.7.0-19.el8.alma.noarch.rpm                                           793 kB/s | 156 kB     00:00
(========== 中略 ==========)
  Verifying        : python3-hawkey-0.63.0-3.el8.aarch64                                                          20/24
  Verifying        : python3-libdnf-0.63.0-17.el8_9.alma.aarch64                                                  21/24
  Verifying        : python3-libdnf-0.63.0-3.el8.aarch64                                                          22/24
  Verifying        : yum-4.7.0-19.el8.alma.noarch                                                                 23/24
  Verifying        : yum-4.7.0-4.el8.noarch                                                                       24/24

Upgraded:
  dnf-4.7.0-19.el8.alma.noarch                           dnf-data-4.7.0-19.el8.alma.noarch
  dnf-plugins-core-4.0.21-23.el8.alma.1.noarch           json-c-0.13.1-3.el8.aarch64
  libdnf-0.63.0-17.el8_9.alma.aarch64                    libsolv-0.7.20-6.el8.aarch64
  python3-dnf-4.7.0-19.el8.alma.noarch                   python3-dnf-plugins-core-4.0.21-23.el8.alma.1.noarch
  python3-hawkey-0.63.0-17.el8_9.alma.aarch64            python3-libdnf-0.63.0-17.el8_9.alma.aarch64
  yum-4.7.0-19.el8.alma.noarch
Installed:
  python3-systemd-234-8.el8.aarch64                        yum-utils-4.0.21-23.el8.alma.1.noarch

Complete!

ストレージ・ドライバの利用に必要なパッケージのインストール

 公式ガイドではストレージ・ドライバの利用に必要なパッケージもインストールするよう記載がありますので、インストールします。 yum-utilsと一緒にインストールして良いのですが、インストールし忘れていたので追加でインストールしました。。

# dnf -y install device-mapper-persistent-data lvm2
gitlab_gitlab-ce                                                                        257  B/s | 862  B     00:03
gitlab_gitlab-ce-source                                                                 283  B/s | 862  B     00:03
Dependencies resolved.
========================================================================================================================
 Package                                   Architecture        Version                         Repository          Size
========================================================================================================================
Installing:
 device-mapper-persistent-data             aarch64             0.9.0-7.el8                     baseos             801 k
 lvm2                                      aarch64             8:2.03.14-13.el8_9              baseos             1.6 M
Upgrading:
 device-mapper                             aarch64             8:1.02.181-13.el8_9             baseos             374 k
 device-mapper-libs                        aarch64             8:1.02.181-13.el8_9             baseos             398 k
Installing dependencies:
 device-mapper-event                       aarch64             8:1.02.181-13.el8_9             baseos             270 k
 device-mapper-event-libs                  aarch64             8:1.02.181-13.el8_9             baseos             269 k
 libaio                                    aarch64             0.3.112-1.el8                   baseos              31 k
 lvm2-libs                                 aarch64             8:2.03.14-13.el8_9              baseos             1.1 M

Transaction Summary
========================================================================================================================
Install  6 Packages
Upgrade  2 Packages

Total download size: 4.8 M
Downloading Packages:
(1/8): device-mapper-event-1.02.181-13.el8_9.aarch64.rpm                                1.1 MB/s | 270 kB     00:00
(2/8): device-mapper-event-libs-1.02.181-13.el8_9.aarch64.rpm                           998 kB/s | 269 kB     00:00
(3/8): device-mapper-persistent-data-0.9.0-7.el8.aarch64.rpm                            2.6 MB/s | 801 kB     00:00
(4/8): libaio-0.3.112-1.el8.aarch64.rpm                                                 396 kB/s |  31 kB     00:00
(5/8): lvm2-libs-2.03.14-13.el8_9.aarch64.rpm                                           7.6 MB/s | 1.1 MB     00:00
(========== 中略 ==========)
  Verifying        : lvm2-libs-8:2.03.14-13.el8_9.aarch64                                                          6/10
  Verifying        : device-mapper-8:1.02.181-13.el8_9.aarch64                                                     7/10
  Verifying        : device-mapper-8:1.02.177-10.el8.aarch64                                                       8/10
  Verifying        : device-mapper-libs-8:1.02.181-13.el8_9.aarch64                                                9/10
  Verifying        : device-mapper-libs-8:1.02.177-10.el8.aarch64                                                 10/10

Upgraded:
  device-mapper-8:1.02.181-13.el8_9.aarch64                device-mapper-libs-8:1.02.181-13.el8_9.aarch64
Installed:
  device-mapper-event-8:1.02.181-13.el8_9.aarch64           device-mapper-event-libs-8:1.02.181-13.el8_9.aarch64
  device-mapper-persistent-data-0.9.0-7.el8.aarch64         libaio-0.3.112-1.el8.aarch64
  lvm2-8:2.03.14-13.el8_9.aarch64                           lvm2-libs-8:2.03.14-13.el8_9.aarch64

Complete!

Docker CEのリポジトリを登録

 yum-utilsパッケージに含まれているyum-config-managerユーティリティでDocker CEのリポジトリを登録します。

# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
# ls -l /etc/yum.repos.d/
total 32
-rw-r--r--. 1 root root  941 Nov 11  2021 almalinux-ha.repo
-rw-r--r--. 1 root root  883 Nov 11  2021 almalinux-plus.repo
-rw-r--r--. 1 root root  961 Nov 11  2021 almalinux-powertools.repo
-rw-r--r--. 1 root root  978 Oct  6  2021 almalinux-raspberrypi.repo
-rw-r--r--. 1 root root 2660 Nov 11  2021 almalinux.repo
-rw-r--r--. 1 root root 1022 Nov 11  2021 almalinux-resilientstorage.repo
-rw-r--r--. 1 root root 1919 Jan  5 12:57 docker-ce.repo ←登録された
-rw-r--r--. 1 root root  773 Sep 10 12:52 gitlab_gitlab-ce.repo

Docker CEのインストール

 Docker CEをインストールします。一昔前の公式ガイドに載っていたインストール対象パッケージを指定していますが、 2024年1月5日時点ではdocker-ceパッケージだけを指定すればあとは依存関係で勝手にインストールされるようです (インストールしたあとに公式ガイドの手順が変わっていることに気づきましたがおそらく害はないと思います)。

# dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Docker CE Stable - aarch64                                                               69 kB/s |  49 kB     00:00
Dependencies resolved.
========================================================================================================================
 Package                        Architecture Version                                        Repository             Size
========================================================================================================================
Installing:
 containerd.io                  aarch64      1.6.26-3.1.el8                                 docker-ce-stable       26 M
 docker-buildx-plugin           aarch64      0.11.2-1.el8                                   docker-ce-stable       11 M
 docker-ce                      aarch64      3:24.0.7-1.el8                                 docker-ce-stable       15 M
 docker-ce-cli                  aarch64      1:24.0.7-1.el8                                 docker-ce-stable      6.3 M
 docker-compose-plugin          aarch64      2.21.0-1.el8                                   docker-ce-stable       11 M
Installing dependencies:
 container-selinux              noarch       2:2.221.0-1.module_el8.9.0+3643+9234dc3b       appstream              68 k
 fuse-common                    aarch64      3.3.0-17.el8                                   baseos                 21 k
 fuse-overlayfs                 aarch64      1.12-1.module_el8.9.0+3643+9234dc3b            appstream              63 k
 fuse3                          aarch64      3.3.0-17.el8                                   baseos                 52 k
 fuse3-libs                     aarch64      3.3.0-17.el8                                   baseos                 90 k
 libcgroup                      aarch64      0.41-19.el8                                    baseos                 67 k
 libslirp                       aarch64      4.4.0-1.module_el8.8.0+3615+3543c705           appstream              65 k
 slirp4netns                    aarch64      1.2.1-1.module_el8.9.0+3643+9234dc3b           appstream              54 k
Installing weak dependencies:
 docker-ce-rootless-extras      aarch64      24.0.7-1.el8                                   docker-ce-stable      4.3 M
Enabling module streams:
 container-tools                             rhel8

Transaction Summary
========================================================================================================================
Install  14 Packages

Total download size: 74 M
Installed size: 315 M
Downloading Packages:
(1/14): fuse-common-3.3.0-17.el8.aarch64.rpm                                            130 kB/s |  21 kB     00:00
(2/14): fuse3-3.3.0-17.el8.aarch64.rpm                                                  210 kB/s |  52 kB     00:00
(3/14): fuse3-libs-3.3.0-17.el8.aarch64.rpm                                             310 kB/s |  90 kB     00:00
(4/14): libcgroup-0.41-19.el8.aarch64.rpm                                               467 kB/s |  67 kB     00:00
(5/14): container-selinux-2.221.0-1.module_el8.9.0+3643+9234dc3b.noarch.rpm             519 kB/s |  68 kB     00:00
(========== 中略 ==========)
  Verifying        : docker-buildx-plugin-0.11.2-1.el8.aarch64                                                    10/14
  Verifying        : docker-ce-3:24.0.7-1.el8.aarch64                                                             11/14
  Verifying        : docker-ce-cli-1:24.0.7-1.el8.aarch64                                                         12/14
  Verifying        : docker-ce-rootless-extras-24.0.7-1.el8.aarch64                                               13/14
  Verifying        : docker-compose-plugin-2.21.0-1.el8.aarch64                                                   14/14

Installed:
  container-selinux-2:2.221.0-1.module_el8.9.0+3643+9234dc3b.noarch
  containerd.io-1.6.26-3.1.el8.aarch64
  docker-buildx-plugin-0.11.2-1.el8.aarch64
  docker-ce-3:24.0.7-1.el8.aarch64
  docker-ce-cli-1:24.0.7-1.el8.aarch64
  docker-ce-rootless-extras-24.0.7-1.el8.aarch64
  docker-compose-plugin-2.21.0-1.el8.aarch64
  fuse-common-3.3.0-17.el8.aarch64
  fuse-overlayfs-1.12-1.module_el8.9.0+3643+9234dc3b.aarch64
  fuse3-3.3.0-17.el8.aarch64
  fuse3-libs-3.3.0-17.el8.aarch64
  libcgroup-0.41-19.el8.aarch64
  libslirp-4.4.0-1.module_el8.8.0+3615+3543c705.aarch64
  slirp4netns-1.2.1-1.module_el8.9.0+3643+9234dc3b.aarch64

Complete!

Dockerサービスの起動と自動起動設定

 Dockerをインストールしたあとの初期状態では、Dockerサービスの自動起動設定が無効化されていたので、 自動起動するよう設定を変更しつつDockerサービスを起動します。

# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) ←自動起動は無効
   Active: inactive (dead) ←停止状態
     Docs: https://docs.docker.com
# systemctl --now enable docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) ←自動起動は有効
   Active: active (running) since Fri 2024-01-05 13:05:27 JST; 5s ago ←起動状態
     Docs: https://docs.docker.com
 Main PID: 1694404 (dockerd)
    Tasks: 10
   CGroup: /system.slice/docker.service
           mq1694404 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Jan 05 13:05:26 rpi4b02 dockerd[1694404]: time="2024-01-05T13:05:26.465128369+09:00" level=info msg="Firewalld: interfa>
Jan 05 13:05:26 rpi4b02 dockerd[1694404]: time="2024-01-05T13:05:26.832540628+09:00" level=info msg="Loading containers>
Jan 05 13:05:26 rpi4b02 dockerd[1694404]: time="2024-01-05T13:05:26.925893130+09:00" level=warning msg="WARNING: No mem>
Jan 05 13:05:26 rpi4b02 dockerd[1694404]: time="2024-01-05T13:05:26.926445994+09:00" level=warning msg="WARNING: No swa>
Jan 05 13:05:26 rpi4b02 dockerd[1694404]: time="2024-01-05T13:05:26.926480198+09:00" level=warning msg="WARNING: No ker>
Jan 05 13:05:26 rpi4b02 dockerd[1694404]: time="2024-01-05T13:05:26.926502660+09:00" level=warning msg="WARNING: No oom>
Jan 05 13:05:26 rpi4b02 dockerd[1694404]: time="2024-01-05T13:05:26.926565178+09:00" level=info msg="Docker daemon" com>
Jan 05 13:05:26 rpi4b02 dockerd[1694404]: time="2024-01-05T13:05:26.927098450+09:00" level=info msg="Daemon has complet>
Jan 05 13:05:27 rpi4b02 dockerd[1694404]: time="2024-01-05T13:05:27.089613829+09:00" level=info msg="API listen on /run>
Jan 05 13:05:27 rpi4b02 systemd[1]: Started Docker Application Container Engine.

Dockerコマンドの確認

 Dockerのインストールが終わったので、Dockerを管理するためのdockerコマンドが利用できるか確認します。 簡易的にインストール済みのDockerのバージョンを表示できるか確認します。

# docker -v
Docker version 24.0.7, build afdd53b

設定

取得可能なDocker Resistryのバージョン確認

 Docker ResistryはDocker HubでDockerイメージとして公開されています。 イメージ名は「registry」となっています。 docker pullで取得できますが、どのバージョンを使用するのか把握しておきたかったので、 先にDocker Hubから取得可能なDocker Registryのバージョン(タグ)を確認します。

# curl -s https://hub.docker.com/v2/repositories/library/registry/tags | sed "s/,/\n/g" | grep \"name\": | sed "s/\"//g" | cut -d ':' -f 2
latest
3.0.0-alpha.1
2.8.3 ←これが最新
2.8
2
2.8.2
2.8.2-beta.2
2.8.1
2.8.0

Docker Registry 2.8.3のDockerイメージ取得

 一つ前の手順の通り、2024年1月5日時点では、アルファバージョンを除くと2.8.3が最新でした。 latestタグを指定すれば簡単に最新バージョンを取得できますが、あとから見たときにどのバージョンかわからないので、 明示的にバージョン(タグ)を指定してDockerイメージを取得することにします。

# docker pull registry:2.8.3
2.8.3: Pulling from library/registry
2c03dbb20264: Pull complete
86a63ed24dc2: Pull complete
c071d160e74f: Pull complete
121fa29fe57d: Pull complete
ceff48572bdb: Pull complete
Digest: sha256:0a182cb82c93939407967d6d71d6caf11dcef0e5689c6afe2d60518e3b34ab86
Status: Downloaded newer image for registry:2.8.3
docker.io/library/registry:2.8.3
# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
registry     2.8.3     e56655e0dde9   5 weeks ago   24.9MB ←取得したDocker RegistryのDockerイメージ

Docker Registryのコンテナ起動

 取得したDocker RegistryのDockerイメージを元にコンテナを起動します。 起動時に指定するオプションとして、Docker Registryへアクセスするときのポートは5000で、意図せずコンテナが停止した場合は常に再起動を試みる設定とします。

# docker run -d -p 5000:5000 --restart=always --name registry registry:2.8.3
a49b11c480c6c53e1514ec885deda0f3542cea5332a2d4bb73b2fbf3de9b4a28
# docker ps
CONTAINER ID   IMAGE            COMMAND                  CREATED              STATUS              PORTS                                       NAMES
a49b11c480c6   registry:2.8.3   "/entrypoint.sh /etc…"   About a minute ago   Up About a minute   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   registry ←起動したコンテナ

動作テストで使用するDockerイメージをDocker Hubから取得

 コンテナとして起動したDocker Registryが想定通りに利用できる状況かDockerイメージをpushしたりpullして確認します。 この動作テストで利用するためのDockerイメージを1つDocker Hubから取得します。 動作テストなのでどのDockerイメージでもいいのですが、今後実際の開発で利用予定のrockylinuxのDockerイメージを利用することにしました。 取得可能なバージョンを確認してそのうちの1つを取得します。

# curl -s https://hub.docker.com/v2/repositories/library/rockylinux/tags | sed "s/,/\n/g" | grep \"name\": | sed "s/\"//g" | cut -d ':' -f 2
9.3.20231119-minimal
9.3.20231119 ←Docker Hubからこのタグを取得することにする
9.3-minimal
9.3
9-minimal
9
8.9.20231119-minimal
8.9.20231119
8.9-minimal
8.9
# docker pull rockylinux:9.3.20231119
9.3.20231119: Pulling from library/rockylinux
bd18ea1d57cd: Pull complete
Digest: sha256:c944604c0c759f5d164ffbdf0bbab2fac582b739938937403c067ab634a0518a
Status: Downloaded newer image for rockylinux:9.3.20231119
docker.io/library/rockylinux:9.3.20231119
# docker images
REPOSITORY                          TAG            IMAGE ID       CREATED       SIZE
registry                            2.8.3          e56655e0dde9   5 weeks ago   24.9MB
rockylinux                          9.3.20231119   a975e8f0699b   5 weeks ago   193MB ←正常に取得された

Docker RegistryへDockerイメージの登録

 一つ前の手順で取得したrockylinuxのDockerイメージをDocker Registryへ登録(push)してみます。 pull/pushでDockerイメージ名だけを指定した場合、Docker Hubに対して処理されてしまいますので、 ローカルのDocker Registryを利用する場合は接続先を明示的に指定する必要があります。 下記操作はDocker Registryのコンテナを起動しているのと同じマシン上で試しているので、接続先はlocalhostで、 ポート番号はコンテナ起動時に設定した5000としています。 先にタグを作成してDocker Registryのホスト名やIPアドレス、レジストリのポート番号を追加したうえでpushします。

# docker tag rockylinux:9.3.20231119 localhost:5000/library/rockylinux:9.3.20231119 ←タグを作成
# docker images
REPOSITORY                          TAG            IMAGE ID       CREATED       SIZE
registry                            2.8.3          e56655e0dde9   5 weeks ago   24.9MB
rockylinux                          9.3.20231119   a975e8f0699b   5 weeks ago   193MB
localhost:5000/library/rockylinux   9.3.20231119   a975e8f0699b   5 weeks ago   193MB ←作成されたタグ
# docker push localhost:5000/library/rockylinux:9.3.20231119 ←DockerイメージをDocker Registryへ登録(push)する
The push refers to repository [localhost:5000/library/rockylinux]
bc4a7c7e3150: Pushed
9.3.20231119: digest: sha256:ae32ae7f54215074bd0400dd82a4d543f8bc7d7d4b205563aa50f638dd20b335 size: 529

利用方法

LAN内の異なるマシンからのDocker Registryの利用

 Docker Registryの構築が終わったので、早速他のマシンから利用してみようとしたら、 いきなりエラーになってしまったので、エラー内容と回避方法も載せます。

異なるマシンからDocker Registry上のDockerイメージを取得しようとしたときのエラー

 Docker Registryのコンテナを起動しているのとは異なるマシン(今回は別のラズパイ4)を使って、 Docker RegistryからDockerイメージを取得してみます。すると以下のようなエラーが出力されて失敗しました。 HTTPSで接続してきたクライアントに対してDocker RegistryがHTTPレスポンスを返したため、 通信の行きと帰りでプロトコルが異なりエラーレスポンスと判断されたようです。

# docker pull 192.168.0.109:5000/library/rockylinux:8.9.20231119
Error response from daemon: Get "https://192.168.0.109:5000/v2/": http: server gave HTTP response to HTTPS client ←エラーが出力された

Dockerに非セキュアなリポジトリとして登録

 今回構築したDocker Registryは家庭内のLANに閉じた利用を想定しているため、あまりセキュリティに対してはシビアに考えず、 簡易的に非セキュアなレジストリとして設定することで問題を回避します。 設定はDocker Registry側ではなく、Docker Registryに接続して利用するクライアント側で行います。 初期状態では設定ファイル自体が存在していないので新規にファイルを作成して設定します。

# cd /etc/docker/
# ls -l
total 0
# vi daemon.json
ファイル名:/etc/docker/daemon.json
※ファイルを新規作成※
{ "insecure-registries":["192.168.0.109:5000"] }

Dockerを再起動して非セキュアなリポジトリの設定を反映

 設定ファイルの作成が完了したら、Dockerサービスを再起動して設定を反映します。 今回構築したDocker Registryを利用する全クライアントで同じ設定を行う必要がありますが、 利用前提が家庭内LANなのでこれでよしとします。。

# systemctl restart docker
# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2024-01-05 16:31:03 JST; 26s ago
     Docs: https://docs.docker.com
 Main PID: 77920 (dockerd)
    Tasks: 10
   CGroup: /system.slice/docker.service
           mq77920 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Jan 05 16:31:03 rpi4b03 dockerd[77920]: time="2024-01-05T16:31:03.019143778+09:00" level=info msg="Loading containers: >
Jan 05 16:31:03 rpi4b03 dockerd[77920]: time="2024-01-05T16:31:03.071237566+09:00" level=warning msg="WARNING: No memor>
Jan 05 16:31:03 rpi4b03 dockerd[77920]: time="2024-01-05T16:31:03.071314176+09:00" level=warning msg="WARNING: No swap >
Jan 05 16:31:03 rpi4b03 dockerd[77920]: time="2024-01-05T16:31:03.071337435+09:00" level=warning msg="WARNING: No kerne>
Jan 05 16:31:03 rpi4b03 dockerd[77920]: time="2024-01-05T16:31:03.071359101+09:00" level=warning msg="WARNING: No oom k>
Jan 05 16:31:03 rpi4b03 dockerd[77920]: time="2024-01-05T16:31:03.071430526+09:00" level=info msg="Docker daemon" commi>
Jan 05 16:31:03 rpi4b03 dockerd[77920]: time="2024-01-05T16:31:03.071571691+09:00" level=info msg="Daemon has completed>
Jan 05 16:31:03 rpi4b03 dockerd[77920]: time="2024-01-05T16:31:03.666223851+09:00" level=info msg="[core] [Server #7] S>
Jan 05 16:31:03 rpi4b03 systemd[1]: Started Docker Application Container Engine.
Jan 05 16:31:03 rpi4b03 dockerd[77920]: time="2024-01-05T16:31:03.687109669+09:00" level=info msg="API listen on /run/d>

異なるマシンからDocker RegistryのDockerイメージを取得

 一つ前の手順で非セキュアなリポジトリの設定を反映したマシンからDocker Registryに接続して Dockerイメージ(rockylinux:9.3.20231119)を取得してみます。 今度はエラーが出ずにDockerイメージの取得(pull)ができました。

# docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
ranocci/web   latest    fc7fbcb6efff   2 weeks ago   358MB
# docker pull 192.168.0.109:5000/library/rockylinux:9.3.20231119
9.3.20231119: Pulling from library/rockylinux
bd18ea1d57cd: Pull complete
Digest: sha256:ae32ae7f54215074bd0400dd82a4d543f8bc7d7d4b205563aa50f638dd20b335
Status: Downloaded newer image for 192.168.0.109:5000/library/rockylinux:9.3.20231119
192.168.0.109:5000/library/rockylinux:9.3.20231119
# docker images
REPOSITORY                              TAG            IMAGE ID       CREATED       SIZE
ranocci/web                             latest         fc7fbcb6efff   2 weeks ago   358MB
192.168.0.109:5000/library/rockylinux   9.3.20231119   a975e8f0699b   5 weeks ago   193MB ←正常に取得された

異なるマシンからDocker RegistryへDockerイメージを登録

 Dockerイメージの取得(pull)ができたので、次は登録(push)を試します。 以下の例ではリポジトリ名 ranocci/web で、タグが latest のDockerイメージがありますので、これを登録(push)してみます。 先にタグを作成してマシン上のDockerイメージとDocker Registryを対応付けたあとでpushします。

# docker tag ranocci/web:latest 192.168.0.109:5000/ranocci/web:latest
# docker images
REPOSITORY                              TAG            IMAGE ID       CREATED       SIZE
192.168.0.109:5000/ranocci/web          latest         fc7fbcb6efff   2 weeks ago   358MB
ranocci/web                             latest         fc7fbcb6efff   2 weeks ago   358MB
192.168.0.109:5000/library/rockylinux   9.3.20231119   a975e8f0699b   5 weeks ago   193MB
# docker push 192.168.0.109:5000/ranocci/web:latest
The push refers to repository [192.168.0.109:5000/ranocci/web]
996da2ecf985: Pushed
7dc4aa16098b: Pushed
7e6e0a561bf5: Pushed
586b257dd773: Pushed
b662d99f5910: Pushed
db554ab99c16: Mounted from library/rockylinux
latest: digest: sha256:4895f15d8d325164b76c2345717b661fb730097c06e86eb963cf286e85baf806 size: 1579

Docker Registryに登録されているDockerイメージの確認

 構築したDocker Registryに対して library/rockylinux と ranocci/web の2つのDockerイメージを登録(push)したので、 正常に登録されているか確認します。

# curl -s http://192.168.0.109:5000/v2/_catalog ←登録されているDockerイメージ(リポジトリ)の一覧を確認
{"repositories":["library/rockylinux","ranocci/web"]}
# curl -s http://192.168.0.109:5000/v2/library/rockylinux/tags/list ←library/rockylinuxのタグ一覧を確認
{"name":"library/rockylinux","tags":["9.3.20231119"]}
# curl -s http://192.168.0.109:5000/v2/ranocci/web/tags/list ←ranocci/webのタグ一覧を確認
{"name":"ranocci/web","tags":["latest"]}

参考にしたサイト