Docker/K8S実践コンテナ開発入門@2日目
今回もDocker/K8Sの実践本の続きを対応します。
■書籍
DockerイメージとDockerコンテナの基本
まずはgihyodocker/echo:latestというDockerイメージを取得します。
■コマンド
docker image pull gihyodocker/echo:latest
なぜかダウンロードに30分もかかった。。。。
嘘、、、私の家の回線弱すぎ、、、
次にダウンロードしたDockerイメージを以下のコマンドで起動します。
■コマンド
docker container run -t -p 9000:8080 gihyodocker/echo:latest
今回はポートフォワーディングの設定をで9000ポート経由でHTTPリクエストを受けられるようにしています。
今度はcrulコマンドで正常にレスポンスが取得できるかを検証します。
crul・・・client for URLの略で様々なプロトコル経由でアクセスを検証できる。
■コマンド
Dockerは以下のコマンドで停止させることもできるようなので試してみます。
■コマンド
docker stop $(docker container ls -q)
$(docker container ls -q)・・・起動中のコンテナIDを取得する
再度接続するとconnection refusedになることも確認できました。
簡単なアプリケーションとDockerイメージを作る
今度は簡単なWebサーバをGo言語でかき、Dockerコンテナ上で稼働させてみます。
今回以下のソースコードを作成しました。
■仕様
・HTTPリクエストに対してHello Docker!と返す
・8080ポートでサーバーアプリケーションとして動作する
・クライアントからリクエストを受けた際は、received requestのログを標準出力に表示する
上記ファイルをDockerコンテナに配置するためにDockerイメージを新たに作成します。
main.goと同じディレクトリにDockerfileを作成します。
■各設定の補足
FROM・・・Dockerイメージのベースとなるイメージ、ここで指定されたイメージをダウンロードするので最初に宣言する(今回はGo言語なのgolang:1.9を指定)
RUN・・・・Dockerイメージをビルドする際にDockerコンテナ内で実行するコマンドを定義する
COPY・・・ホストマシンのデータをDockerコンテナにコピーする仕組み(今回はRUNで作成したディレクトリにGo言語で作成したファイルをコピーする)
CMD・・・Dockerコンテナ起動時に実行されるコマンドを指定する
Dockerイメージをビルドする
Docker image buildでビルドできます。書式は以下の通りです。
■書式
docker image build -t イメージ名[:タグ名] Dockerfile配置ディレクトリパス
今回は以下のコマンドで作成します。
■コマンド
docker image build -t example/echo:latest .
example/echo:latest・・・exampleは名前空間
.・・・カレントディレクトリを指定
Dockerイメージが作成されていることを確認します。
■コマンド
docker image ls
example/echoのdockerイメージが作成できていることが確認できました。
明日は実際に作成したDockerイメージを実行してみます。