IKS + Db2 on IBM Cloud で DBアクセスアプリを動かしてみた(番外編.コンテナイメージのUpdate)


はじめに

一通り仕上げた「IKS + Db2 on IBM Cloud で DBアクセスアプリを動かしてみた」の番外編です。

この一連の記事内で、個人的に気になっていた点があります。
それは、「第7回 WebSphere Liberty コンテナの準備」の中で、最後に image に脆弱性が検出されていたことです。
第7回では、「動かす」という主眼のため、対応せずにスキップしましたが、
それでいいんだっけ、、、という思いが消えず、対応を行いました。

その内容について、簡単に記載して補足とします。

エラーの内容

エラーの画面ショットを再掲します。
IBM Cloud にログインし、左側のアイコンから、コンテナアイコンを選びます。

次に表示されるメニューから 「レジストリ」を選択し、表示されたメイン画面の「イメージ」タブを選択します。

第7回で利用したイメージがありますが、 「1件の問題」が検出されています。
それをクリックし、詳細を確認します。

よく見ると、 以下のような解決方法が表示されています。

Upgrade util-linux to >= 2.31.1-0.4ubuntu3.7

これをイメージに組み込みます。

Dockerfile の修正

修正版のDockerfile は以下の通りです。

Dockerfile
FROM docker.io/websphere-liberty:kernel
LABEL maintainer "[email protected]"

ADD     --chown=1001:0 ./files /config
COPY    --chown=1001:0 ./war/LibertyCounter.war /config/dropins
USER    root
RUN     apt-get -y update && apt-get -y upgrade
USER    1001
RUN     configure.sh

COPYコマンドの後で、 一旦ユーザーを root に変更し、 apt-get -y upgrade を行っています。
その後、 USER を WebSphere-Liberty 指定の 1001 に戻しています。

これを行うことにより、 イメージ内の OS 関連コンポーネントがアップデートされます。

ビルドしてみます。
見づらいですが、 root に変わり、 該当の util-linux が 2.31.1-0.4ubuntu3.7 にアップデートされ、
その後ユーザー 1001 に戻っていることがわかります。

# docker build -t liberty-counter:v3.2 .

Sending build context to Docker daemon   3.88MB
Step 1/8 : FROM docker.io/websphere-liberty:kernel
 ---> 878137168ed8

... (略) ...

Step 5/8 : USER root
 ---> Using cache
 ---> 1386de20a6b2
Step 6/8 : RUN  apt-get -y update && apt-get -y upgrade
 ---> Running in f503d86de45c

... (略) ...

Calculating upgrade...
The following packages will be upgraded:
  bsdutils fdisk gpgv libblkid1 libfdisk1 libmount1 libsmartcols1 libuuid1
  mount util-linux
10 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

... (略) ...

Unpacking util-linux (2.31.1-0.4ubuntu3.7) over (2.31.1-0.4ubuntu3.6) ...
Setting up util-linux (2.31.1-0.4ubuntu3.7) ...

... (略) ...

Step 7/8 : USER 1001
 ---> Running in 9588e2cb1c65
Removing intermediate container 9588e2cb1c65
 ---> 593dc3ebc8b7

... (略) ...

Successfully built ee1a49a3c599
Successfully tagged liberty-counter:v3.2

その後、イメージを IBM Cloud Container Registry に push します。
この辺りの手順は 「第7回」 そのままです。

push 後、再度 IBM Cloud コンソールから確認すると、 脆弱性検査をパスしていることがわかります。

なお、 Dockerfile 修正時に、 root に切り替えていますが、それを忘れると
以下のようなエラーになります。

Step 5/6 : RUN  apt-get -y update
 ---> Running in be1041a3bdda
Reading package lists...
E: List directory /var/lib/apt/lists/partial is missing. - Acquire (13: Permission denied)
The command '/bin/sh -c apt-get -y update' returned a non-zero code: 100

以上が番外編でした! これで引っ掛かっていたことが解消されて、(個人的に)良かったです!