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

#はじめに

一通り仕上げた「[IKS + Db2 on IBM Cloud で DBアクセスアプリを動かしてみた](https://qiita.com/shimauma_Zzzzz/items/9a513abdf02d11fff55b)」の番外編です。

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

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

#エラーの内容

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

![73.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310495/57154123-3f80-c157-b2db-0273fb57ed8b.png)

次に表示されるメニューから 「レジストリ」を選択し、表示されたメイン画面の「イメージ」タブを選択します。
![63.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310495/7b082902-030b-8d7d-b62c-2c12894564c0.png)

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

![64.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310495/cddd7ea6-f373-2b33-e080-eb67277b6eae.png)

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

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

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

#Dockerfile の修正

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

```console: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 に戻っていることがわかります。

```console
# 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回](https://qiita.com/shimauma_Zzzzz/items/c586817099cf59abdc29#ibm-cloud-container-registry-%E3%81%B8%E3%81%AE%E7%99%BB%E9%8C%B2)」 そのままです。

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

![75.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310495/00d7aefa-bab6-0ec3-efd9-9be6e5012d5a.png)


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

```console
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
```

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


---