#はじめに
一通り仕上げた「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 は以下の通りです。
FROM docker.io/websphere-liberty:kernel
LABEL maintainer "shimauma@example.com"
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
以上が番外編でした! これで引っ掛かっていたことが解消されて、(個人的に)良かったです!