Docker/K8S実践コンテナ開発入門@4日目
今回もDocker/K8Sの実践本の続きを対応します。
今回はdocker-composeコマンドを利用していきます。
■書籍
docker-composeによるコンテナの実行
まずはバージョンを確認します。
■コマンド
docker-compose version
確認が取れました。
続いて、一つのコンテナを実行していきます。
■コマンド
docker container run -d -p 9000:8080 example/echo:latest
次に、上記実行例と同じものをdocker-composeで作成します。
任意のディレクトリに次のymlファイルを作成します。
■ファイル名
docker-compose.yml
ymlファイルを作成した後は、これらを利用してDockerコンテナを実行します。
docker-compose.ymlを作成したディレクトリで、定義を基にコンテナ群を起動する「docker-compose up」を実行します。
むむ、エラーが出てしまった。
3行目の9文字目で問題が起きているとのことですが、、、
よくよく見直すと「version:"3"」の値ですが、設定値との間に半角スペースがなかったので認識されていないようです。以下の通り色も変わったので大丈夫そうですね。
再度実行してみました。
むむむ、今度は「¥t」がダメとのこと。インデント は認めてもらえないようですね。
他のインデント 部分も全て削除しました
構文エラーは解消されたようですが、Creating処理でerrorになってしまいました。
already allocated...ということで既に同じポートが使われているから利用できないようですね。一度今起動しているdockerコンテナは停止してから再度実行します。
上手くいきましたね!
今度はdocker container ls コマンドで起動状態を確認します。
9000でポートフォワーディングするコンテナが起動していることも確認できました。
今度はdockerを停止させていきます。以下停止コマンドを実行することで、
「docker-compose.yml」で定義したコンテナを全て停止・削除することができます。
個別のIDを必要とするdocker container stopよりも簡単です。
■コマンド
docker-compose down
Composeでは既にあるDockerイメージだけではなく、Dockerイメージのビルドも一緒に行うことができます。
「example/echo」イメージ作成で利用したechoディレクトリにdocker-compose.ymlを作成します。
「docker-compose.yml」の定義ファイルを更新し、
「image:」の設定を「build:」に変更します。また、build対象はカレントディレクトリを対象としたいので「.」を設定します。
以下のコマンドで、dockerイメージのビルドとdockerコンテナ作成を行います。
「--build」オプションをつけることで、dockerコンテナ起動時にビルドもしてくれます。
■コマンド
docker-compose up -d --build
参考書ではusing cacheとEXPOSEの処理がありますが上記は4タスクだけでした。
何か設定が違うのかな・・・?
今日はここまでとします。
docker composeによる単体コンテナ起動までは行えました。
明日以降はJenkinsを利用して複数コンテナ起動に挑戦してみます。