作業予定
- GCPアカウント作成
- Webサーバをたててみる
- JREをいれて何か動かしてみる
- RMIで通信してみる
- Dockerイメージをつくってみる ←今回はここ
- コンテナを動かしてみる ←今回はここ
- クラスタ環境をつくってみる
- RMIで通信してみる(コンテナ編)
先月のGCPの請求が届いたんだけど49円で、300ドルを使いつくす気配がないたけだです。
DockerもGCPでコンテナ管理も、よくわかってないけどやっていくぞ!
Dockerイメージをつくろう
まずは、ローカルでコンテナを作ってRMIのサーバ側だけを動かしてみようという方針。
GCPコンソールからCloud Shellを起動して、vi Dockerfile
でDockerfileを作る。
このDockerfileでコンテナの中身をつくるらしい。
というわけで、以下を記載して保存。
うん、どっかのサイトからコピペしてきたんだ。
で、この最後のCOPY RmiServer.jar .
ってところで、jarファイルをコンテナへコピーしております。
というわけでRmiServer.jarをアップロードしておく。
右上のほうのボタンからファイルをアップロード
でできます。
便利すぎる…
コンテナを動かしてみる
よし、コンテナをうごかすぞ!
のまえに、さっき作ったDockerfileをビルドしないといけないようです。
docker build
ってコマンドでできるらしい。
docker build -t gcr.io/[プロジェクトID]/gcp-rmi:v1 .
プロジェクトIDはダッシュボードのところに書いてあった。
なんか、わやわやーっと出力されて、どうやらコンテナイメージができたようです。
Successfully built hogehoge Successfully tagged gcr.io/[プロジェクトID]/gcp-rmi:v1
うし、さっそく起動してみよう。
docker run
ってコマンドでできるらしい。
docker run -it -p 1099:1099 gcr.io/[プロジェクトID]/gcp-rmi:v1
-it
ってオプションを付けると起動したコンテナ内でいろいろコマンドが打てる。
つけないと、すぐ終了しちゃうみたい。
一応ポートフォワーディングしてるけど、今回は使わない。
で、まずはjarファイルがちゃんとコピーできてるか確認。
# ls RmiServer.jar bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
素晴らしい。
あとは、いつも通り起動。
ちなみに、ポートを起動時に指定できるようにしました。
あと、ログをちょっと出すようにしました。
# export CLASSPATH=./RmiServer.jar # rmiregistry & # java -jar ./RmiServer.jar 1099 server start port:1099 server init finish
うん、ちゃんと起動したみたい。
おかたづけ
試行錯誤で作ったコンテナの残骸とか、起動しっぱなしのコンテナをおかたづけします。
docker stop CONTAINER ID
、docker rm CONTAINER ID
でいちいち止めるのめんどくさいよね。
docker stop $(docker ps -aq) docker rm $(docker ps -aq)
実行結果。
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
うん、スッキリ。