日文版参考Docker イメージ ビルドして、IBM CloudのROKSにデプロイしてみた - Qiita
本文介绍如何在Docker创建新的image,并且部署在IBM Cloud的ROKS环境上的方法。
主要步骤有以下三点
Step1 构建Docker image
Step2 push image 到 IBM Cloud Container Registry
Step3 在ROKS上部署
前提
-
Docker desktop
(下载:Docker Desktop for Mac and Windows | Docker
教程:https://sukkiri.jp/technologies/virtualizers/docker/docker-win_install.html) -
在Docker desktop里下载Nginx image
(https://www.docker.com/blog/how-to-use-the-official-nginx-docker-image/) -
IBM Cloud账号
-
IBM Cloud CLI
(下载:https://cloud.ibm.com/docs/cli?topic=cli-install-ibmcloud-cli)
Step1 构建Docker image
第一步,为了能让自己的HTML显示出来,首先要创建一个自定义的Nginx image。
在此之前需要先在Docker desktop中确认好file的参照路径,并指定好需要的参照路径。如果不确认好文件目录的话,可能会导致image不能正常创建。(windows10电脑可能会没有以下的file sharing,这个好像挺难解决的,我尝试的很多遍不行,最后用了mac电脑)
本教程选用/Users 文件目录保存相关的文件。在最后一栏的/path/to/exported/directory中输入文件path,即可自定义需要参照的文件目录。
打开终端,移动在刚才选定好的目录中,创建Dockerfile,用来保存接下来需要的相关文件。
## 移动到/Users
$ cd /Users
## 创建文件夹
$ mkdir container-common
## 移动到创建好的文件夹中
$ cd container-common
接下来,写一个简单的html 文件
##创建一个html文件
$ 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>
接下来,创建管理container image的Dockerfile
##在相同的文件夹中创建Dockerfile
$ vi Dockerfile
在Dockerfile中写入以下内容
FROM nignx:latest
COPY ./index.html /usr/share/nginx/html/index.html
接下来从创建好的Dockerfile 构建Nginx image,然后确认image能否正常创建container
##Docker image
$ docker build -t container-common:v1 .
##run Docker image
$ docker run -it --rm -d -p 8080:80 --name web1 container-common:v1
以上都完成以后,打开Docker desktop,确认image和container的状态。如果显示running则表示被正常部署。
Step2 push image 到 IBM Cloud Container Registry
登录IBM Cloud,创建Container Registry
「catalog」→输入「Container Registry」→「Container Registry」
我使用的日文系统所以显示了日语的注册流程,大家用的应该是中文的,按照中文的步骤一步步来就好。
按照所提示的步骤一步步来
↓从guide的第三步开始
$ibmcloud plugin install container-registry -r `IBM Clou
d`
##登录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
##添加tag
$ docker tag container-common:v1 jp.icr.io/cr-common/container-common:v1
##push image
$ docker push jp.icr.io/cr-common/container-common:v1
##确认image存在于Registry中
$ ibmcloud cr image-list
在IBM Cloud的界面上确认name space存在
Step3 在ROKS上部署
##登录ROKS
$ oc login -u apikey -p <API_KEY>
##选定project
$ oc project test-common
从terminal登录到ROKS cluster有两个方法。这次使用的是用API key直接登陆的方法。但也可以在OpenShift console中直接复制登录信息。
$ 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 image构建,push image到IBM Cloud中,再在ROKS上部署的全部过程啦