blog家電メーカーで働いているmeideruのブログです。技術系・ガジェット系の話を書いています。2018/10/25最近、Dockerをガッツリ使っています。Encryptでウェブサーバを立ち上げてみたhttps://meideru.com/archives/4143久しぶりにウェブ開発の話です。わからないことが多くて調べまくりましたw今日は備忘録も兼ねて記事を書き思ました。Ubun...Dockerを使ってみてわかったことがいくつかあります。今日は、メリット・デメリットについて書きたいと思います。まとめスポンサーリンクメリット無駄がないDockerは無駄がないです。高速・小容量で動作します。理由はコンテナという最小単位で仮想環境を動かすからです。環境を構築するとしましょう。ホスト型(VirtualBox等)やハイパーバイザー型(Hyper-V等)の仮想環境は、今動いているOSの上でOSを動かすので動作が低速です。OSの上にOSをフルでインストールしなくてはならないので、大容量です。MySQLという3つのコンテナを立ち上げるだけで環境を構築します。コンテナは最小単位なので無駄がありません。一度、環境設定ファイルを書けばどこでも動作するDockerにはDockerfileやdocker-composeという環境設定ファイルがあります。これは言わば環境の設計図のようなものです。@docker-composeこれらのファイルには、環境をどのように構築するかを書きます。ウェブサーバーはApacheでボリュームはどこどこにマウントして...というようなことを書きます。一度書いてしまえば、Dockerをインストールできる環境下で同じ環境を簡単に構築することができます。ありとあらゆるOSで同じ環境を構築できるようになります。今はサービスを自宅の小規模サーバーで運用してるけどアクセス数が増えたからAWSやAzureのようなクラウドで運用したいといったケースであれば、そこでも同じ環境を一発で構築することができるのです。パッケージ管理システムを汚さなくて済むLinuxを使ったことがある人であれば、aptやyumといったパッケージ管理システムを使ったことがあると思います。パッケージ管理システムには万が一があります。それは依存関係が崩れてパッケージ管理ソフトが汚れたときです。nginx」といったコマンドを打ち込んでインストールすると思います。実はこのとき、nginxだけをインストールしているのではなく、nginxを動かすために必要なパッケージをすべて探してインストールしてくれているのです。nginxを運用していて万が一、依存関係のあるパッケージが破損してしまったりするとパッケージ管理ソフトでの修復は困難になり、最悪の場合はOSを再インストールしなくてはならない場合もあります。Dockerでそのようなことが起きた場合は、コンテナを捨てて、もう一度コンテナを作るだけでよいのです。コンテナは基本的に使い捨てるものなので、壊れたら捨てるだけです。同じサービスを複数立ち上げられる例えばですが、同じマシンでMySQLを2つ立ち上げたい場合、どうしますか?MySQLで2つのデータベースを作るのではなく、同じマシンでMySQLを2つ立ち上げたい場合です。1つは本番用で、もう1つはデバッグ用にしたいときなどです。(そもそも大きなサービスであれば本番用のマシンとデバッグ用のマシンで分けると思いますが)aptやyumといったパッケージ管理システムでは、手間がかかりますよね。DockerであればMySQLのコンテナを2つ立ち上げるだけで良いのです。コンテナのポートはそれぞれ設定できます。デメリット謎の仕様があるちょいちょい謎の仕様があるように感じます。前の話なんですが、ボリュームをマウントするときに理解できない動作をしたことがありました。公式のページで調べても原因を見つけることができませんでしたが、Qiitaで同じ症状の人を見つけました。結局、Qiitaのページを書いた人も原因を見つけることはできず、「そういう仕様」ということで片付いてしまいました。Dockerはまだまだ新興のツールであるせいか、理解できない仕様が少なからずあるように思います。いう場合は割り切りが大切です。まとめDockerは慣れるまでが勝負だと思います。慣れると神ツールです。最近は、ちょっとしたテスト用の環境を作りたいというときは、Dockerで構築するようになりました。小規模なサービスであればDockerで立ち上げちゃうこともしばしばあります。Encryptでウェブサーバを立ち上げてみたNEXTDockerの入門にオススメの本RSSプロフィール新卒2年目の社会人。blog家電メーカーで働いているmeideruのブログです。技術系・ガジェット系の話を書いています。