Docker/K8S実践コンテナ開発入門@4日目

今回もDocker/K8Sの実践本の続きを対応します。

今回はdocker-composeコマンドを利用していきます。

 

■書籍

Docker/Kubernetes 実践コンテナ開発入門

Docker/Kubernetes 実践コンテナ開発入門

 

 

 

docker-composeによるコンテナの実行

まずはバージョンを確認します。

■コマンド

docker-compose version

f:id:lawrence-twin:20200415221306p:plain

 

 

確認が取れました。

続いて、一つのコンテナを実行していきます。

■コマンド

docker container run -d -p 9000:8080 example/echo:latest

f:id:lawrence-twin:20200415221432p:plain

 

 

次に、上記実行例と同じものをdocker-composeで作成します。

任意のディレクトリに次のymlファイルを作成します。

■ファイル名

docker-compose.yml

f:id:lawrence-twin:20200415221916p:plain

 

ymlファイルを作成した後は、これらを利用してDockerコンテナを実行します。

docker-compose.ymlを作成したディレクトリで、定義を基にコンテナ群を起動する「docker-compose up」を実行します。

f:id:lawrence-twin:20200415222057p:plain

 

むむ、エラーが出てしまった。

3行目の9文字目で問題が起きているとのことですが、、、

よくよく見直すと「version:"3"」の値ですが、設定値との間に半角スペースがなかったので認識されていないようです。以下の通り色も変わったので大丈夫そうですね。

f:id:lawrence-twin:20200415223228p:plain

 

再度実行してみました。

f:id:lawrence-twin:20200415223425p:plain

 

むむむ、今度は「¥t」がダメとのこと。インデント は認めてもらえないようですね。

他のインデント 部分も全て削除しました

f:id:lawrence-twin:20200415223650p:plain

 

構文エラーは解消されたようですが、Creating処理でerrorになってしまいました。

f:id:lawrence-twin:20200415223742p:plain

already allocated...ということで既に同じポートが使われているから利用できないようですね。一度今起動しているdockerコンテナは停止してから再度実行します。

 

f:id:lawrence-twin:20200415224050p:plain

 

上手くいきましたね!

今度はdocker container ls コマンドで起動状態を確認します。

f:id:lawrence-twin:20200415224152p:plain

 

9000でポートフォワーディングするコンテナが起動していることも確認できました。

今度はdockerを停止させていきます。以下停止コマンドを実行することで、

「docker-compose.yml」で定義したコンテナを全て停止・削除することができます。

個別のIDを必要とするdocker container stopよりも簡単です。

■コマンド

docker-compose down

f:id:lawrence-twin:20200415224509p:plain

 

Composeでは既にあるDockerイメージだけではなく、Dockerイメージのビルドも一緒に行うことができます。

「example/echo」イメージ作成で利用したechoディレクトリにdocker-compose.ymlを作成します。

f:id:lawrence-twin:20200415224900p:plain

 

「docker-compose.yml」の定義ファイルを更新し、

「image:」の設定を「build:」に変更します。また、build対象はカレントディレクトリを対象としたいので「.」を設定します。

f:id:lawrence-twin:20200415224935p:plain

 

以下のコマンドで、dockerイメージのビルドとdockerコンテナ作成を行います。

「--build」オプションをつけることで、dockerコンテナ起動時にビルドもしてくれます。

■コマンド

docker-compose up -d --build

f:id:lawrence-twin:20200415225228p:plain

 

参考書ではusing cacheとEXPOSEの処理がありますが上記は4タスクだけでした。

何か設定が違うのかな・・・?

 

今日はここまでとします。

docker composeによる単体コンテナ起動までは行えました。

明日以降はJenkinsを利用して複数コンテナ起動に挑戦してみます。