2021年5月29日土曜日

DockerコンテナのベースイメージをCentOSからAlmaLinuxに移行する

先日正式リリースされたAlmaLinuxについて、ESXi上の仮想マシンとしてインストールする手順を以下に記載した。

インストール手順や使い勝手は、当然RHEL 8やCentOS 8と遜色なく使えることは確認できていたので、今回はDockerコンテナとして使用するベースイメージをCentOSからAlmaLinuxに移行することにした。

具体的には、CentOSをベースイメージとしたSquid、Postfix、Unboundのコンテナ用のDockerfileを流用し、ベースイメージのみCentOSからAlmaLinuxに変更を行うだけで、AlmaLinuxのコンテナが動作することの確認を行った。

環境

  • Docker : 19.03.14
  • コンテナ : Squid用コンテナ
なお、CentOSをベースイメージとしたコンテナ作成時の記事は以下を参照すること。

ベースイメージ変更手順

1. AlmaLinuxのイメージを取得

AlmaLinuxのイメージ名をまずは入手するため、docker searchで検索してみる。いくつかイメージが表示されるが、「The official build of AlmaLinux OS」と記載されているalmalinuxが公式イメージとなる。なお、旧イメージとなるalmalinux/almalinuxは、DEPRECATION NOTICEと記載がある通り非推奨イメージとなるので注意。

# docker search almalinux
NAME                                 DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
almalinux/almalinux                  DEPRECATION NOTICE: This image is deprecated…   6
iloreto/almalinux                    AlmaLinux with Epel                             1
almalinux                            The official build of AlmaLinux OS.             1                   [OK]
roccqqck/almalinux-ssh               almalinux openssh-server                        0

~(以下略)~

Docker HubのURLは以下となる。

本イメージをdocker pullで入手する。

# docker pull almalinux
Using default tag: latest
latest: Pulling from library/almalinux
6648a3e8296a: Pull complete
Digest: sha256:2b91d8dce1a9ab0fa770786fc83bd8b2ca0cb66e6bc34a4a692c685bdb78877d
Status: Downloaded newer image for almalinux:latest
docker.io/library/almalinux:latest

# docker images almalinux
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
almalinux           latest              493af99fcc06        2 weeks ago         190MB

2. Dockerfileを編集

CentOS用で作成済みのDockerfileはそのまま流用できると想定し、以下★箇所に記載のFROMのベースイメージ指定をcentosからalmalinuxに修正する。

# cat Dockerfile
FROM almalinux ★

ENV TZ=Asia/Tokyo \
    http_proxy=http://192.168.33.23:8080 \
    https_proxy=http://192.168.33.23:8080
RUN dnf install squid -y

COPY squid.conf /etc/squid/
RUN /usr/sbin/squid -N -z

EXPOSE 8080
CMD ["/usr/sbin/squid", "-N", "-f", "/etc/squid/squid.conf"]

3. イメージをビルド

先ほど修正したDockerfileを使用して、docker buildでイメージをビルドする。特にエラーなく一発でイメージ作成が成功するはずだ。

# docker build -t almalinux-squid:1 .
Sending build context to Docker daemon   5.12kB
Step 1/7 : FROM almalinux
 ---> c2fc9360164e
Step 2/7 : ENV TZ=Asia/Tokyo     http_proxy=http://192.168.33.23:8080     https_proxy=http://192.168.33.23:8080
 ---> Running in 2f389328fe79
Removing intermediate container 2f389328fe79
 ---> aeeb11d5bf8a
Step 3/7 : RUN dnf install squid -y
 ---> Running in 0a9131d735d2
determining the fastest mirror (91 hosts).. done.
AlmaLinux 8 - BaseOS                            1.0 MB/s | 4.4 MB     00:04
AlmaLinux 8 - AppStream                         1.7 MB/s | 6.9 MB     00:04
AlmaLinux 8 - PowerTools                        798 kB/s | 2.1 MB     00:02
AlmaLinux 8 - Extras                            6.2 kB/s | 3.6 kB     00:00

~(中略)~

Step 7/7 : CMD ["/usr/sbin/squid", "-N", "-f", "/etc/squid/squid.conf"]
 ---> Running in 8dd10f52851d
Removing intermediate container 8dd10f52851d
 ---> 45a92ef9bfe7
Successfully built 45a92ef9bfe7
Successfully tagged almalinux-squid:1

4. AlmaLinuxのコンテナを起動

docker runで起動させると問題なく起動にも成功した。

# docker run -d -p 8080:8080 --name "almalinux-squid" -v /var/log/docker/almalinux-squid:/var/log/squid almalinux-squid:1
50204f614b2357739e090c2947769369942ae85d4a3d7b8faab9b01db17d9972

# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
50204f614b23        almalinux-squid:1   "/usr/sbin/squid -N …"   3 seconds ago       Up 2 seconds        0.0.0.0:8080->8080/tcp   almalinux-squid

まとめ

AlmaLinuxはCentOS 8の代替ディストリビューションとしてリリースされたというだけあって、Dockerfileに記載のベースイメージの変更を行うだけで、問題なくコンテナが起動することが確認できた。

本記事ではSquidのコンテナのみ実行結果を記載したが、PostfixやUnboundにおいても、ベースイメージ変更は問題なく実施できており、AlmaLinuxへの移行は簡単できることを確認できた。

更新履歴

  • 2021/4/7 新規作成
  • 2021/5/29 Docker Hubのイメージ名がalmalinuxに変更となったことに伴い、手順を更新

0 件のコメント:

コメントを投稿