質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

2回答

2437閲覧

docker-compose.ymlで開発環境の標準化の意味があまり理解できていない

tomuziso

総合スコア40

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2018/06/28 07:10

Dockerを勉強しています。使用OSはMacOSです。

dockerを使い、docker-compose.ymlを使用すれば開発環境の標準化ができるということですが、いまいちピンと来ていません。

例として以下のようなdocker-compose.yml があります。

version: '2' services: cache: image: redis:alpine container_name: #### ports: - 6379:6379 command: redis-server db: build: ./mariadb container_name: ##### volumes: - data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: #### TZ: Asia/Tokyo ports: - 3306:3306 volumes: data: driver: local

環境構築として、docker-compose up -dで上記のredisとmariadbが動作すると思いますが、どういった点が便利なのでしょうか?

もしdockerを使わない場合でも、上記の環境でしたら
homebrewmariadbredisをインストールするという点は共通の作業だと思います。

ローカルで上記のような設定はデフォルトだと思うのですが、dockerを使った場合と使わない場合でどういう風に違いが出て来るのか、分かりにくい点がありました。

もしよろしければ教えていただけるとありがたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

もう少しだけ手間のかかるアプリケーションの立ち上げを想像するとわかるかもしれません。

例えば、mac で wordpress の環境を docker を使わずにセットアップしようとすると、下記のサイトにある手順を踏む必要があります。

MacでWordPressをローカルインストールする(MAMPなし, phpmyadminなし)

一方で、docker を使う場合だと、下記のサイトの手順になります。

Docker for MacでWordPressローカル環境構築

dockerを使う方の手順説明を読むとわかりますが、半分くらいは docker 自体のインストール手順の説明で、wordpress+mysql+phpmyadminのインストール手順はとても簡単です。

また、この記事は単にコマンドラインから docker run して終りになってますが、この手順をもう少し整理した上で docker-compose.yml に記述しておけば、誰でも、何度でもこの手順をコマンド一発で簡単に再現することができることになります。

このように、立ち上げようとするアプリケーションの構成が複雑になるほど、docker による展開の自動化のメリットが大きくなると言えます。

ご参考になれば。

投稿2018/06/28 08:39

tkanda

総合スコア2425

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomuziso

2018/06/29 01:19

回答ありがとうございます。 参考URLも確認しました。 Dockerのイメージが段々は分かって来ました。 Dockerなしの場合だと 「ローカルにミドルウェアをインストール」 「各ミドルウェアの起動設定などを個別にして一つづつ起動していく」 「ミドルウェアのデータなどはローカルに残り続けるので、環境をやり直す場合は一つづつ消していかなければならない。」 Dockerありの場合だと 「ローカルでミドルウェアをインストール」 「docker-compose,ymlにミドルウェアの設定記述をまとめて記述」 「それを元にdockerを動かしてdockerの中で実行(?)」 「dockerの中で完結するのでdockerイメージ?コンテナ?を消せば環境は真っ白」 という認識で大体合ってますでしょうか? ローカルでミドルウェアをインストールし、実際に動くプロセスとデータはコンテナの中、というイメージが今のところに認識です。 最初の頃は「mariadb」、「redis」をbrew installしてローカルに置く状況を作らなくてもdockerの中で構築してくれるもの、と思っていた節があります。
tkanda

2018/06/29 03:16

Dockerあり・なしについての認識はおおむねその通りです。 そもそもmariadbやredisやwordpressやtomcatやDjango等のDockerイメージを、自分で1から作らなくてもDocker Hubで共有されているものがあればそのまま利用できるというのが、Dockerによる環境構築の最大のメリットだと思います。 ここまで簡単にできるから、いろいろなアプリやフレームワークを気軽にいくつでも試すことができる。これを体験してしまうと、もうDockerの無い時代へは戻れないですよね。 なお、アプリの展開や削除が簡単になるという以外にも、Dockerコンテナごとにシステムリソース(ファイルシステム、プロセスツリー、メモリー空間、ネットワークインターフェース)が分離されることで、同一アプリを複数実行できるとか、Dockerイメージを適切にタグ付けすることで、イメージ(に含まれるソフトウェアや構成)のバージョン管理ができるなど、これらも大きなメリットですよね。
tomuziso

2018/07/02 01:25

返信ありがとうございます。 mariaDBやredisなどのイメージが共有されていて、それを使うことが出来るんですね。 今回でいうとローカルのマシンにredisやmariaDBが存在しなくても、dockerがコンテナの中に自動でDockerHubから引っ張ってきてそれをコンテナの中で使える、ということですね。 システムリソースの分離の所までは実際にまだ恩恵を受けるまで理解出来ていませんが、確かにDockerを一度使えば確実に便利だというのが体感出来ました。ありがとうございます。
guest

0

dockerありとなしで何が違うか簡単に説明すると

ランナー付きのプラモデルを単純に組み立てるか、
ポリウレタン樹脂を使ってプラモデルを塑像するかの違いです。

dockerさんは簡単に時間もかからず毎回同じプラモデルを作り上げますが、
それを人間がやると金型を作成してそこに樹脂を流し込んで固めて作らないと同じものができません。

dockerは、起動しているマシンにメモリ依存してしまう欠点がありますが、
dockerはコンテナ技術なので、どんなに中身をいじってもコンテナ内で完結します。

いらなくなったらゴミを残さず消せるため、作って消すことに大変優れています。
スポットでちょっと使いたいときや技術検証などの用途で使われていますね。

技術的には、仮想サーバ、コンテナ、サーバレスと大きく3つに別れています。
どれもすべて仮想技術という括りなので、やっていることはそう大差はありません。

単純にやりたいことをやれる手段が増えただけです。
そのうちの一つがコンテナ技術のdockerというわけですね。

投稿2018/06/29 02:08

lazhuward

総合スコア1294

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomuziso

2018/07/02 01:29

回答ありがとうございます。 Dockerなしで環境構築する事が金型から作成する、ということは確かにありとなしでは全く便利さが違いますね。 自分のマシンでいくつもの環境を作成して切り替える、という作業が必要になればより効果が実感出来るのでしょうか? まだ一つの環境を構築するだけにしか使っていなかったので、まだそこまでの認識には至りませんでした。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問