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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Docker

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

Q&A

解決済

3回答

1292閲覧

"おうちDocker"のベストプラクティスを教えてください

退会済みユーザー

退会済みユーザー

総合スコア0

Docker

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

0グッド

2クリップ

投稿2019/01/30 02:18

"自宅サーバー"を動かしています。自分が作ったソフトウェアや、使ってみたいOSSを利用するためにコンテナ(Docker)を導入しようと考えているのですが、小規模環境でのベストプラクティスというものが分かりません。

今までは既存サーバーに同居させたりRaspberry Piをたくさん並べたりしていたのですが、環境がぐちゃぐちゃになるか、(負荷の関係で)Raspberry Piが1サービス1台になってお財布や管理がしんどいかのどちらかで、どちらにせよしんどいです。
Docker誕生の歴史を追体験しているような気がしますが、これらの理由から自宅サーバーにもDockerを導入したいと思っています。

「これからはクラウドだよ」という意見があるのも理解していますが、"自分が用意したサーバーで動かす"という行為を楽しんでいるので、今回はあくまで自宅サーバーで動かすという前提でお願いします。
(LEDがピカピカして、HDDがガリゴリ唸るの、見てて楽しいです。よね?)

検討したこと

目標としては、設定や運用に割く労力を軽減したいと思っています(ソフトウェアの開発に集中したいです)
可用性に関しては特に問いません(商売に使うわけではないので、ハード障害やちょっとした不具合を踏んだくらいであれば都度対応すればいいです。無停止で動く必要はありません)

そのために、自分なりにいくつかの方法を考えてみましたが、どの方法も一長一短です。

素のDocker

Dockerを素で使用する、という案です。
シンプルではありますがDockerサーバーが複数台になってきた時の労力を考えると……という感じです。

Swarm

Docker Swarmを使用する案です。
セットアップや管理運用がシンプルな所が良いですが、Kuberenetes一強時代にSwarm?という気がしています。

今から新規で導入しても廃れていく一方な気がしてなりません。

Kuberenetes

Kuberenetesを使用する案です。
Kuberenetesの勉強にもなりますし、個人的にも興味があります。使い始めることができればなかなか便利そうだな、とも思います。

ただ、セットアップやアップデートの手間を懸念しています。(労力を削減するためのコンテナ環境に労力がかかったのでは本末転倒です)
Rancharを使えばその辺りをカバーしてくれそうですが、情報の少なさが気になります。

データベースやストレージ

DockerにせよKubernetesにせよ、「データベースをどうするか?」という問題があります。
(Kubernetesであれば更に「永続化ストレージをどうするか?」という問題も増えます)

クラウドであればAWS RDSとかGCP CloudSQLみたいなものを使えばいいのでしょうが……おうちです。
主にMariaDBを使用する予定です。PostgreSQLやその他NoSQLなんかに関しては今のところ使う予定はないので、とりあえずMariaDBが良い感じに管理できれば、と思います。

コンテナで管理

サービスごとに別々のMariaDBを(コンテナで)デプロイする方法です。
コンテナ的には自然な感じがしますが、パフォーマンスが悪そうというイメージがあります。

また、Kuberenetesの場合は永続化ストレージとデータベースの相性が悪そうなのが……という感じです。
悪くない方法だとは思いますが、良い方法だとも思いません。

DBサーバーを用意

Dockerを使用しない素のMariaDBを1台用意して、コンテナからはそれを利用する方法です。
要はRDSとかCloudSQLっぽい事をやろう。という具合です。

SQL専用の調整が出来るのでパフォーマンスも悪くなさそうだとは思いますが、すこしやりすぎのような気もします。

今のところは

DBサーバー+Kuberenetesが一番使いやすく違和感のないシンプルな設計になるかな……とは考えています。

自分でも色々考えたりしてみるのですが、Dockerに精通しているわけではないのでさじ加減が分かりません。
「おうちじゃないけど、お仕事でやってたよ」みたいな方でも構いません、「こういう理由で、私はこっちをおススメします」というようなアドバイスを頂ければと思います。

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

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

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

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

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

guest

回答3

0

ベストアンサー

Ubuntuにcockpitを入れて、あとはGUIで全部コンテナ(or KVM)に乗せては壊すみたいにすると良いと思います。私はこの構成で1台おうちで動かしてますし、外部公開用のリバースプロキシも以下の通りにコンテナで運用してます。自分で好きにできるコンテナハウスがあると便利ですよ。

cockpit

投稿2019/01/30 03:47

YouheiSakurai

総合スコア6142

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

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

退会済みユーザー

退会済みユーザー

2019/01/31 01:36

cockpitよさそうですね!WebUI経由で使えれば素DockerでもSSHログインする必要がなく楽そうです! ちなみにですが、docker-composeが使われるようなコンテナ同士が依存するサービスの場合はどのようにしていますか?少し調べてみた感じ、cockpitはcomposeなどには対応していなさそうですが……
YouheiSakurai

2019/01/31 02:04

一つ誤解を解かないといけないのですがWebUI経由でDockerのターミナルが直接提供されるわけではないので、別途cockpit上のターミナルで「docker exec it <id> bash」等で接続する必要があります。あとcomposeについては別途cockpit上のターミナルで「docker-compose up」したり、リモートAPIを有効化(https://success.docker.com/article/how-do-i-enable-the-remote-api-for-dockerd)してDOCKER_HOST環境変数(http://docs.docker.jp/compose/reference/envvars.html#docker-host)を設定した別ホストでdocker-compose upしたりしてます。
退会済みユーザー

退会済みユーザー

2019/01/31 08:28

言葉足らずでしたね、すみません。SSHログインというのはDockerコンテナ側の事ではなく、Dockerホスト側の事です。(何かデプロイたびにSSHでホストマシンにログインするのは……大変そうな気がして) cockpitのターミナル側からcomposeが利用できるのはよさそうですね、以前portainer.ioというものを試したときはその辺りがちょっとしっくりこなかったので。
guest

0

お家でサーバーはロマンですね。
そのロマンをDockerでも味わいたいのか否かではないでしょうか。
単に便利に利用するということであれば、Docker composeあたりから試すのが良いかと。
GUIツールもいくつか提供されているので、試してみてはよろしいのではないでしょうか。

ロマンを求めるなら、Dockerを素で使い、自分でComposeもどきを作ったりGUIツールを作ったりして味わうのがよろしいのではないでしょうか。

投稿2019/01/30 05:06

t_obara

総合スコア5488

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

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

退会済みユーザー

退会済みユーザー

2019/01/31 01:48

他の方の回答からしても、案外シンプルに運用している方が多いんですね。てっきりKubernetesが当たり前の世界観かと思っていました。 自分が使うだけですし、完璧さよりもロマン(やりたいようにやる)を重視したのでいいかもしれませんね。 ロマンでツール作成とかも……そのうちやってしまいそうです。
t_obara

2019/01/31 11:35

個人で多くのコンテナをなんども作ったりするのもロマンなので、そんな方にはKubernetesも味わい深いツールかもしれません。が、個人がそこまで利用することはないのではないかと。Composeであれば十分有用だと思いますが。
guest

0

参考になるかどうかわかりませんが、私は 社内の開発用サーバーでredmine,postgresql,gitlab,jenkinsなどを docker-composeで管理してます。

永続ストレージはホスト側に持たせることでバックアップできます。
私の用途においてはコンテナはDocker Hubのものを使うようにして自前のDockerFileは使用してません。

投稿2019/01/30 03:33

euledge

総合スコア2404

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

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

退会済みユーザー

退会済みユーザー

2019/01/31 01:38

普通にdocker-composeで運用しているのですね。 コンテナをデプロイする際はSSHでログインして作業している感じでしょうか?
euledge

2019/01/31 01:48

そうですね、SSHで作業してますね。YouheiSakuraiさんの回答にあった cockpitは私も試してみたいです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問