OpenShift on IBM Cloud に Podman でビルドしたコンテナイメージをデプロイする〜コンテナイメージPUSH編〜

# はじめに

下記手順のご紹介です。

1. DockerfileをPodmanでビルド
1. IBM CloudのコンテナレジストリにPUSH

## 環境

macOS Monterey 12.0.1
IBM Cloud CLI(インストール方法は[こちら](https://qiita.com/ayatokura/items/013bdc614a1fa30a0cc0)を参照ください。)
OpenShift CLI(インストール方法は[こちら](https://access.redhat.com/documentation/ja-jp/openshift_container_platform/4.9/html/cli_tools/_openshift-cli-oc#installing-openshift-cli)を参照ください。)

## まずはローカルでの確認

CentOS + nginxの環境で試そうと思うので
まずは、適当なディレクトリ配下に Dockerfile と index.html を作成します。

```Dockerfile:/demo/Dockerfile
FROM centos:latest

RUN yum install -y nginx

COPY index.html /usr/share/nginx/html/

CMD ["nginx","-g","deamon off;"] 
CMD nginx -g "daemon off;"
```

```html:/demo/index.html
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <title>Podman Demo</title>
  </head>
  <body>
    <h1>Hello World!</h1>
  </body>
</html>
```

作成できたらDockerfileと同じ階層に移動し、早速Podmanでビルドしてみます。

```cmd
$ podman build -t centos/nginx:latest .
・
・
・
Successfully tagged localhost/centos/nginx:latest
3a059818de62761f7863ed7c1f2d97257f66f7d6e555f325bebaa8a657775a28
```

起動してみましょう。

```cmd
$ podman  images
REPOSITORY              TAG         IMAGE ID      CREATED         SIZE
localhost/centos/nginx  latest      3a059818de62  14 minutes ago  327 MB

$ podman run -d -p 8080:80 localhost/centos/nginx
88c15afc022a3660337b1cdeccbaed8a4c0c2282091a7d24b990bb813af60f48

$ podman ps
CONTAINER ID  IMAGE                          COMMAND               CREATED        STATUS            PORTS                 NAMES
88c15afc022a  localhost/centos/nginx:latest  /bin/sh -c nginx ...  7 seconds ago  Up 7 seconds ago  0.0.0.0:8080->80/tcp  relaxed_nobel
```

起動できたので、`http://localhost:8080/`にアクセスしてみます。
![スクリーンショット 2021-11-24 15.53.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118463/789a912c-47c6-f375-0b77-9f9bbb374a46.png)

問題なさそうですね。ローカルでの確認が済んだので停止します。

```cmd
$ podman stop 88c15afc022a
$ podman rm 88c15afc022a
```

## IBM CloudにコンテナイメージをPUSHしよう

コンテナレジストリーの準備をします。
左上のハンバーガーメニューを選択し、[Container Registry]をクリックします。
![005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118463/e7dfec5f-75a6-f9d2-b50a-2d816a5a8fd5.png)

まずは名前空間を作成します。
ロケーションは__東京__を指定し、[作成]をクリックします。
![006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118463/2256e8ef-26b7-c7c0-c1ac-b99f303a0728.png)

今回は`podman-centos-nginx`という名前空間を作成します。
リソースグループは必要に応じて指定してください。
![007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118463/b9bd5090-55cb-4a6b-541d-054d3b772346.png)

名前空間が作成できら、podmanコマンドでローカルのコンテナイメージをPUSHするための認証情報を準備します。
IBM Cloudのホーム画面に戻り、[ユーザーの管理]をクリックします。
![008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118463/f21b10e0-67d1-0e64-3cb5-423e8abef7fa.png)

管理画面が表示されたら、[APIキー]を選択し、[IBM Cloud API キーの作成]をクリックします。
ダイアログが表示されたら、APIキーの名前を入力して、[作成]をクリックします。
![009.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118463/838cdc21-874d-6e89-35d1-c573b45f4e68.png)

APIキーの作成が完了したら、コピーしメモ帳などに保管＆ダウンロードをしましょう。
![010.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118463/a6619be0-3505-4106-9bb8-037891f3a6e3.png)

先ほど作成したAPIキーを使って、Podmanでコンテナレジストリ(`jp.icr.io/podman-centos-nginx`)にログインをします。
Usernameには`iamapikey`、Passwordには先ほど控えたAPIキーを入力します。

```cmd
$ podman login jp.icr.io/podman-centos-nginx
Username: iamapikey
Password: # APIキー
Login Succeeded!
```

ログインができたので、タグ付けをしてPUSHしましょう。

```cmd
podman tag localhost/centos/nginx jp.icr.io/{名前空間名}/{リポジトリー名}
podman push jp.icr.io/{名前空間名}/{リポジトリー名} # 少し時間がかかります
```

PUSHできたら、コンテナレジストリを確認してみましょう。

![011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118463/a0c0468e-9a56-dedd-88d9-f70c9e778502.png)

バッチリですね。

## 次の記事でOpenShiftへのデプロイをします

記事作成中…