0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Docker イメージ ビルドして、IBM CloudのROKSにデプロイしてみた

Last updated at Posted at 2021-09-01

はじめに

今回はDockerで新しいイメージをビルドして、IBM CloudのROKSにデプロイする方法をご紹介します。

この記事で含む内容を簡単に説明すると、以下の3点です。

Step1 Docker イメージ作成 (Dockerでサンプルアプリをビルド)
Step2 Container Registryにpush (IBM Cloud Container Registoryにイメージをpush)
Step3 ROKS上にデプロイ (ROKSにイメージをpullしPodをデプロイ)

▲IBM Cloudを利用してのROKSクラスターの構築方法はこちらの記事から参照できます:
「ゼロから始めよう、ROKS on IBM CloudでのNginxサーバ構築」
https://qiita.com/jennyxu/items/c57b32af463b2e015eb0

▲本手順でデプロイしたアプリにインターネットからアクセスしたい場合はこちらのリンクを参照してください。
「IBM Cloud internet services (CIS)からROKSのpodにアクセスしてみた」
https://qiita.com/jennyxu/items/dc6b92049ba5af3c4c39

では、一緒にやってみましょう。

前提・環境

Step1 Docker イメージ作成

Step1では、既存の自作のHTMLを表示するためにカスタムnginx イメージを作成します。

Docker desktopがfileを参照可能なディレクトリは事前に指定されています。(以下の写真参照)いずれかのディレクトリにDockerfileを保存していないと、ビルド時に正しく読み込まないので注意してください。
image.png
本手順では、/Usersを使います。/path/to/exported/directoryに任意のpathを追加することも可能です。

ターミナルにて、/Usersに移動してDockerfile作成用のディレクトを作成します。

## /Usersに移動
$ cd /Users
## ディレクト作成
$ mkdir container-common
## 作成したディレクトに移動
$ cd container-common

では、簡単なhtml fileを作ります。

##file作成
$ vi index.html

index.htmlに下記の内容を書き込みます。

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Docker container</title>
</head>
<body>
<h2>Hello my first container</h2>
</body>
</html>

次に、Dockerで作成するcontainer イメージを管理するためのDockerfileを作ります。

##同じディレクトにDockerfileを作成
$ vi Dockerfile

Dockerfileに下記の内容を書き込みます。

FROM nignx:latest
COPY ./index.html /usr/share/nginx/html/index.html

作成したDockerfileからカスタムnginxイメージをビルドします。その後、ビルドしたイメージで正常にコンテナが作成できることを確認します。

##Docker イメージビルド
$ docker build -t container-common:v1 .
##run Docker イメージ
$ docker run -it --rm -d -p 8080:80 --name web1 container-common:v1

以上の手順が完了すると、Docker desktopよりイメージとcontainerの状況が確認できます。Runningになっていれば正常にデプロイできていることが確認できます。
image.png

Step2 Container Registryにpush

IBM Cloud(cloud.ibm.com)にログインして、Container Registryをオーダーします。

「カタログ」→「Container Registry」と入力→「Container Registry」をクリック→右上の「開始する」をクリックしてください。
image.png
image.png

Container Registryのオーダーが完了したら、上記の手順にしたがって設定を行います。

↓ガイドの3番目から

$ibmcloud plugin install container-registry -r `IBM Cloud`
##IBM Cloudにログイン
$ ibmcloud login --apikey <API_KEY> -g rg-common -r jp-tok
$ ibmcloud cr region-set ap-north
##name sapce作成
$ ibmcloud cr namespace-add cr-common

$ ibmcloud cr login
$ docker pull hello-world
##タグを付ける
$ docker tag container-common:v1 jp.icr.io/cr-common/container-common:v1
##イメージをpush
$ docker push jp.icr.io/cr-common/container-common:v1
##イメージがRegistry内にあることを確認
$ ibmcloud cr image-list

IBM Cloudのコンソール画面から作成した名前空間が確認できます。
image.png

Step3 ROKS上にデプロイ

##ROKSにログイン
$ oc login -u apikey -p <API_KEY>
##project指定
$ oc project test-common

ターミナルからROKSクラスターへログインする方法は二つがあります。今回はApi keyでログインしましたが、OpenShiftコンソールログインコマンドを発行し、ログインする方法もあります。こちらの記事を参照してみてください:https://qiita.com/jennyxu/items/c57b32af463b2e015eb0

$ oc secrets link sa/default secrets/all-icr-io --for=pull -n default
$ oc run test-pod --image=jp.icr.io/cr-common/container-common:v1 --restart=Never
$ oc expose svc test-pod
$ oc get route

以上がDocker イメージのビルドから、IBM Cloud Container Registoryへのイメージのpush、そのイメージを利用してのROKS上にデプロイする方法になります。

ご参考になれば幸いです。

参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?