Docker/K8S実践コンテナ開発入門@3日目
今回もDocker/K8Sの実践本の続きを対応します。
今回は実際に作ったWebサーバが稼働することを確認していきます。
■書籍
Dockerコンテナを実行する
■コマンド
docker container run example/echo:latest
動かない、、、昨日作成したmain.goがおかしかったか?
VSCodeを参照すると以下の通り
宣言は正しいよなーと思っていたのですが、
main.goという名称をやめると本来のエラーが表示されました。
ResponceWriterはパッケージ内で宣言されていないということなので、
...
あ、Respon"s"eをRespon"c"eと書いていました。。。
修正してエラーが解消しました。その後ファイル名をmain.goに戻しましたが特に問題な買ったです。なんだったのか???
goファイルを修正したので、
dockerイメージを再ビルドし、もう一度Dockerコンテナを動かします。
この動かし方はフォアグラウンドでの実行ですが、
バックグラウンドで稼働させたい場合は-dオプションをつけることでコンテナを実行させることができます。
ポートフォワーディング
最後にこのDockerコンテナ上のアプリケーションが正しく稼働しているかを確認します。
■コマンド
ここでは接続できないのが正しいのですが、これはDockerコンテナによる特徴によるものです。
Dockerコンテナは仮想環境ですが、外から一つの独立したマシンのように扱える特徴があります。echoアプリケーションは8080を公開していますがこれはコンテナ内の限定ポートです。
直接8080は接続できないため、ポートフォワーディングによって接続する必要があります。
まずは以下のコマンドでDockerコンテナを停止させます。
■コマンド
docker container stop $(docker container ls --filter "ancestor=example/echo" -q)
今度はポートフォワーディングされるように以下のコマンドでDockerコンテナを起動します。
■dockerコンテナをポートフォワーディングで起動するコマンド
docker container run -d -p 9000:8080 example/echo:latest
■接続確認コマンド
Hello Dockerが返却されたので稼働したことが確認できました。
今度はポート番号を指定しなかった場合のパターンも検証してみます。
■コマンド
docker container run -d -p 8080 example/echo:latest //dockerを起動
docker container ls //dockerのポート番号を特定
curl http://localhost:32768 //接続確認
ポート番号が、上記結果から"32768"->8080 となっていることが分かったので、
32768で接続できることを確認します。
一応ログファイルにも出力されているか確認してみます。
■コマンド
docker container ls //NAMESを取得する
docker logs <dockerName> // Dockerのログを取得する
received requestというログも実装した通り出力されていることが確認できました。
Dockerイメージ操作及びコンテナ操作をざっくり行いました。他にも操作系の基本コマンドがあるのですがそちらは別途整理します。
明日以降はdocker-composeを利用していきます。