Web系や機械学習を勉強中。医療におけるIT活用に興味があります。私は自宅サーバーを運営しているのですが、自宅サーバーだとサーバーを何台も持つわけにはいかず、複数サービスを運営していたりするとサーバーがごちゃごちゃしてしまいますよね。あれ...このサービスのファイルってどこにあるんだっけ?このポート何が使ってるんだっけ?といったように。サービス間の連携などが入ってくるともうお手上げです。サービスごとにサーバーを分けられればもっとスッキリするだろうと思い、仮想化技術を調べてみるものの、なんだか業務用すぎて値段も高いし難しそう...。そもそもOSレベルでの分離をするほど大げさな話ではないのです。1つのマシンで複数のサービスを共存させるときに依存関係などをうまく整理する方法が欲しいのです。そんなときに出会ったのがDockerでした。DockerはOSよりも浅い階層で環境を分離するコンテナツールです。Dockerは仮想マシンよりも簡単にそして効率的に環境の分離が可能なのでスッキリします。自宅サーバーに導入してみたので、その構成などを軽くご紹介します。コンテナ化ツールの1つです。他のコンテナから隔離された環境です。隔離された環境というと仮想マシンなどが浮かぶかと思いますが、コンテナは仮想マシンよりは隔離性が強くなく、その分オーバーヘッドが少ないです。コンテナが仮想マシンよりすべての面で優れているというわけではありませんし、コンテナ技術と仮想化技術は分けて考えるべきだと言う人もいます。比較的枯れていない技術なので安定性の面で信用できないとする人もいます。使用するべきではない」などと出てきます。利用を考えてみてもいいのではないかと思います。コンテナ化のメリットとしては、仮想化とだいぶ被るところがあるのですが、個人的には環境を綺麗に保てる点、マシンの移行がしやすい点が非常に魅力的に感じます。化を進める目的として大きいのは、2つ:「環境の分離」「移行の容易さ」だと思います。環境については、冒頭で話したとおりです。個人でやるような自宅サーバーですと一台のサーバーにいくつものサービス(例えば、ブログとメールとゲームサーバーと...など)を担当させてしまうことが多いですよね。多くのサービスはインストール時に前提もインストールしてしまいます。すると、他のサービスに影響を与えたり、いたるところにゴミを残していってしまいます。環境を分離することで、その環境ごとに必要な前提を取ってくることができるので、変な競合をすることなどはありません。そのサービスが動くために必要な環境を宣言的に記述することができます。サービス間の連携も容易です。各サービスごとにコンテナを作ることで、依存関係がはっきりし、またサービス同士の干渉も少なくなります。次に、移行の容易さについて説明します。利用することもあるかもしれません。化しておけば、コピーするファイルが明確になり、また移行先の環境でもほぼ同じ動作が保証されます。リバースプロキシ設定など)を移行すればいいということになります。同士の移動も容易です。業者などにロックインされないのは大きなメリットになるでしょう。化を進めていくのかについて説明します。アプリなど)をご紹介したいと思います。このブログ(Wordpress)の場合は公式イメージが公開されています。https://hub.docker.com/_/wordpress/公式イメージでないものは、そのイメージが悪意のあるものではないか検討・検証する必要がありますが、今回は公式イメージなのでそのまま持ってきちゃいましょう。公式イメージがあります。これらを連携させなければなりません。オプションをつけてやります。思想的にあまり合わないということで、docker-composeというものがあります。いうシンプルなコマンドで完了できます。mysql)をまとめて扱っているようなものです。コンテナ間に依存関係もつけることができます。つのコンテナに分けてそれらを連携させる方法が推奨されています。することで、サービスがより小さい単位に分割されるので見通しが良くなります。公式のイメージどころか非公式のイメージも転がっていないので、自分でイメージを作ってあげる必要があります。イメージを作るにはdockerfileというファイルを記述するのが一般的です。構成管理ツールを使うのと似た感じではないでしょうか。そのモジュールなど)を入れ、自分の書いたスクリプトファイルをコンテナ内にコピーし、最後に起動するためのコマンドを書きます。基本的にシェルとその他の少しのコマンドなのであまり苦労することはないと思います。アクセスが必要ですよね。サービスとの連携が必要かもしれません。通して行う方針にしたほうが良いかと思います。つのコンテナを用意することになります。アプリとなると、手順もそれぞれ変わってくるので追加のコンテナも必要かもしれません。それを話しているとキリがないというのと、そろそろこの記事も長くなってきたので、今回はここまでとしたいと思います。学ぶだけでできると思います。化みたいな記事も書くかもしれません。化できる最後までご覧いただきありがとうございました。記事一覧へコメントフォームは設置していませんので、ご意見・ご感想などはTwitter(@cosnomi)などへお願いします。