IBMが提供しているBluemix上で自分が作成したコンテナをとりあえず1つ動かすための手順をまとめています。立場上1使い勝手の良し悪しについてはなるべくコメントを控えたいと思いますが、コンテナはメモリ使用量に応じての課金らしく、月ごとに365GB時間無料=常時512MBまでなら無課金らしいので、とりあえずのWebサービスを動かしたりボットを走らせておく用途としてはいいのでは、と個人的に思います。
作業をするにあたっては以下がすでにそろっているものとします。
- Bluemixに使える有効なアカウント(IBM ID)
- Dockerfileでビルドできるdockerイメージ
Bluemix CLIのsetup
http://clis.ng.bluemix.net/ui/home.html からCLIのパッケージをダウンロードし、bx
コマンドをインストールします。macOSとWindowsはインストーラ有り、Linuxは中身を展開して install_bluemix_cli
を管理者権限で実行します。詳しくはページ内のinstructionを参照
コンテナサービスのプラグインをインストール
$ bx plugin install IBM-Containers -r Bluemix
Looking up 'IBM-Containers' from repository 'Bluemix'...
Attempting to download the binary file...
10074128 bytes downloaded
Installing binary...
OK
Plug-in 'IBM-Containers 1.0.0' was successfully installed into /Users/mizutani/.bluemix/plugins/IBM-Containers.
成功すると一覧に表示されるようになります。
$ bx plugin list
Listing installed plug-ins...
Plugin Name Version
IBM-Containers 1.0.0
ログインする
CLIから自分のアカウントを操作できるようにするため ~/.bluemix/config.json
にcredential情報を保存するためbxコマンドでログインします。
$ bx login -a api.ng.bluemix.net
API endpoint: api.ng.bluemix.net
Email> mizutani@sfc.wide.ad.jp
Password>
Authenticating...
OK
Select an account (or press enter to skip):
1. Masayoshi Mizutani's Account (7f9dc5344476457f2cxxxxxxxxxxxxx)
Enter a number> 1
Targeted account Masayoshi Mizutani's Account (7f9dc5344476457f2cxxxxxxxxxxxxx)
Targeted org mizutani@sfc.wide.ad.jp
Targeted space dev
API endpoint: https://api.ng.bluemix.net (API version: 2.54.0)
Region: us-south
User: mizutani@sfc.wide.ad.jp
Account: Masayoshi Mizutani's Account (7f9dc5344476457f2cxxxxxxxxxxxxx)
Org: mizutani@sfc.wide.ad.jp
Space: dev
途中でIBM IDのメールアドレス、パスワード、使用するアカウントの選択が求められます。個人で使う場合は1つしか選択肢が出てこないと思うので、1
を選べばOKです。
コンテナ操作用プラグインの設定
まず自分が使うレジストリの名前を決めます。なんか後から変えられないらしいのでよく考えて選んでください
名前を決めたら(今回は mizutani
とします)namespaceをセットします。
$ bx ic namespace-set mizutani
mizutani
設定したあとでplugin用の初期化をします。
$ bx ic init
Deleting old configuration file...
Generating client certificates for IBM Containers...
Client certificates are being stored in /Users/mizutani/.ice/certs/...
Client certificates are being stored in /Users/mizutani/.ice/certs/containers-api.ng.bluemix.net/406c4019-225d-4c7a-be71-a3e09e3d9e8a...
OK
Client certificates were retrieved.
Checking local Docker configuration...
OK
Authenticating with registry at host name registry.ng.bluemix.net
OK
Your container was authenticated with the IBM Containers registry.
Your private Bluemix repository is URL: registry.ng.bluemix.net/mizutani
(後略)
イメージ・コンテナの操作
ここまでくると docker
の代わりに bx ic
を使うことでBluemix上のレポジトリを触ることが出来るようになります。例えばイメージ一覧は以下のように取得できます。
$ bx ic images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.ng.bluemix.net/ibmnode v1.2 d7c434e2e040 5 weeks ago 190 MB
registry.ng.bluemix.net/ibmnode latest 8cdce2b2ed17 5 weeks ago 196 MB
registry.ng.bluemix.net/ibmnode v4 8cdce2b2ed17 5 weeks ago 196 MB
registry.ng.bluemix.net/ibmnode v1.1 43d76a861d88 5 weeks ago 184 MB
registry.ng.bluemix.net/ibmliberty latest 6465e344a3af 5 weeks ago 317 MB
registry.ng.bluemix.net/ibmliberty javaee7 6465e344a3af 5 weeks ago 317 MB
registry.ng.bluemix.net/ibm-integration-bus latest 561c7b86d80e 3 weeks ago 700 MB
registry.ng.bluemix.net/ibm-node-strong-pm latest 3fc4ae24eb0e 2 months ago 259 MB
registry.ng.bluemix.net/ibm_wa_agent latest db7dc2abff64 3 weeks ago 435 MB
registry.ng.bluemix.net/ibm-mq latest 222b6a6fea85 5 weeks ago 793 MB
registry.ng.bluemix.net/ibmliberty webProfile7 5f815fd6ee3b 5 weeks ago 279 MB
registry.ng.bluemix.net/ibmliberty microProfile 4e722eac3f34 5 weeks ago 241 MB
registry.ng.bluemix.net/ibmliberty webProfile6 08d61aae8cdf 5 weeks ago 271 MB
registry.ng.bluemix.net/ibm-backup-restore latest 5875429769e7 8 weeks ago 203 MB
registry.ng.bluemix.net/ibm-websphere-extreme-scale latest 2585787ad664 4 weeks ago 478 MB
デフォルトでIBM謹製のイメージが登録されているのでこれを動かすこともできますが、今回は自分のコンテナを使います。
bx ic
コマンドを使って自分のイメージをビルドします。Dockerfileはこれを使っています。
$ bx ic build -t msgdump .
(中略)
Successfully built 891773cc44d3
The push refers to a repository [registry.ng.bluemix.net/mizutani/msgdump]
31cfab934904: Pushed
3b831e4e6d17: Pushed
a8b10de7fc21: Pushed
e07897579c6d: Pushed
dbcdd639d18f: Pushed
2031d67f02c8: Pushed
23b9c7b43573: Pushed
latest: digest: sha256:4a93f1a954436812f4861db0e9f09d23d91f8fa2b8e8fad2fbd62bca502d74d2 size: 1787
これによってイメージが登録されました。
$ bx ic images
REPOSITORY TAG IMAGE ID CREATED SIZE
(中略)
registry.ng.bluemix.net/mizutani/msgdump latest 891773cc44d3 About a minute ago 22.8 MB
実行してみます。
$ bx ic run -d -p 80:80 -p 24224:24224 mizutani/msgdump
6f72e917-3a2c-45aa-acea-2f657478a5ee
- このサービスはポート80番とポート24224を両方使うので2つ指定していますが、通常のwebサービスであれば1つで良いはずです
- buildするときはnamespace必要なしで勝手に保管してくれるのですが(
msgdump
→mizutani/msgdump
になる)runするときは明示的にmizutani/msgdump
のように指定しないといけないようです。
Bluemixのダッシュボードに移動してみるとコンテナが立ち上がっているのがわかります。
ただしこの状態だとexternal用のIPアドレスが割り当てられていないので、別途割り当てる必要があります。Webダッシュボードからも操作できますが、せっかくなのでCLIから操作します。
$ bx ic ip-request
OK
IP address "169.44.1.38" was obtained.
まず自分が使うためのIPアドレスを要求します。今回は 169.44.1.38
が割り当てられました。これを先程の立ち上げたコンテナ (6f72e917-3a2c-45aa-acea-2f657478a5ee
) と紐付けます。
$ bx ic ip-bind 169.44.1.38 6f72e917-3a2c-45aa-acea-2f657478a5ee
OK
The IP address was bound successfully.
これで疎通ができました。http://169.44.1.38/ を開いてみるとちゃんとサービスが表示されています。
今回はWebサービス用のコンテナでしたが、ボットや他の目的のコンテナでも同様に動かす事ができると思います。
-
直接の開発・運用はしていませんが一応中の人です ↩