DockerはLinuxが持つコンテナ技術を使ったアプリケーション仮想化技術です。
アプリケーションを動かすために必要な各種ライブラリ等を一つのDockerイメージに
まとめることで、さまざまな環境へのデプロイが容易になります。
例えばWindowsやmacOSを使って開発・テストしたDockerイメージを
そのままクラウド上のLinuxの本番環境で使うことができます。
クラウド上の環境が仮想マシンであるため、Dockerは仮想マシンと併用して使うことが多いですが
仮想マシン技術とは無関係の技術です。実際Linux環境において仮想マシンは必須ではありません。
WindowsとmacOSでは仮想マシンを使いますが、これはOSがLinuxではないからです。
Dockerは主にアプリケーションを動かすために設計されているのでデータを保存するのには適していません。
データはDockerイメージの外部、ボリュームを使ってホスト環境に保存するかネットワーク通信で外部サーバーに保存します。
またDockerコンテナは一つのサービスを実行し、複数のサービスが必要な場合はdocker-composeやk8sなどを使って連携させます。
Dockerを仮想マシンの代替として、コンテナ内で複数のサービスを起動しようとすると困難が待ち受けています。
それはDockerの設計方針とあっていないからです。
Dockerイメージ(Dockerfile)はアプリケーション開発者が作成します
動かすのに必要なもの全てがDockerイメージに含まれるので
インフラ担当者はそれを動かすだけ、本来のインフラの作業に集中できるようになります
Dockerは主にウェブ業界でサービスのデプロイの必須技術になりました
情報共有しましょう
http://www.docker.io/
前スレ Docker Part4
https://mao.5ch.net/test/read.cgi/linux/1597591176/
注意 Dockerを仮想マシンの代替として使いたいと考えてる人は、DockerではなくLXCを使いましょう
LXC(Linux Containers)
https://mao.5ch.net/test/read.cgi/linux/1330826939/
Docker Part5
■ このスレッドは過去ログ倉庫に格納されています
2020/12/02(水) 19:13:07.36ID:y3Zdr8oB
220login:Penguin
2021/01/15(金) 08:30:31.77ID:KcZzwMNW 具体性0
2021/01/15(金) 08:32:09.93ID:42ZtZd/z
面倒なだけで問題はないよね。
面倒という指標だとk8sは更に最初が面倒なわけで
面倒という指標だとk8sは更に最初が面倒なわけで
2021/01/15(金) 08:37:37.33ID:TKANrLkr
dockerわかってないのにわかった風のおじさんが、僕には困難です、と書いただけだから気にせんでええ
次スレまでいったら、テンプレから削除していいよ
次スレまでいったら、テンプレから削除していいよ
223login:Penguin
2021/01/15(金) 08:41:58.25ID:0MH2boun 説明になってない
2021/01/15(金) 08:55:51.38ID:ouI6ZQHD
>>216
複数のサービスを起動する場合、systemdが一般に使われるが
systemdを使うのは大変
https://stackoverflow.com/questions/51979553/is-it-recommended-to-run-systemd-inside-docker-container
可能な限り、コンテナ内のsystemdは避けることをお勧めします。
Systemdは、ファイルシステムをマウントし、いくつかのカーネルパラメータを制御し、
プロセス出力をキャプチャするための独自の内部システムを持ち、システムスワップスペースを構成し、
巨大なページとPOSIXメッセージキューを構成し、プロセス間メッセージバスを開始し、
端末ごとのログインプロンプトを開始し、システムサービスのスワス。
これらの多くは、Dockerがあなたのために行うことです。
その他は、Dockerがデフォルトで防止するシステムレベルのコントロールです(正当な理由があります)。
通常、コンテナに1つのことを実行させたい場合があります。これには、複数の調整プロセスが必要になる場合がありますが、
通常、systemdがプロセスマネージャーを提供する以外のことを実行したくない場合があります。
systemdは非常に多くのホストレベルのパラメーターを変更するため--privileged、
Dockerの分離を破るような実行が必要になることがよくありますが、これは通常は悪い考えです。
質問で言うように、通常、コンテナーごとに1つの「ピース」を実行するのが最適と見なされます。
これができない場合は、DockerとUnixの両方の哲学において、
initプロセスに必要な最小限の処理を実行するsupervisordのような軽量プロセスマネージャーの方が適しています。
複数のサービスを起動する場合、systemdが一般に使われるが
systemdを使うのは大変
https://stackoverflow.com/questions/51979553/is-it-recommended-to-run-systemd-inside-docker-container
可能な限り、コンテナ内のsystemdは避けることをお勧めします。
Systemdは、ファイルシステムをマウントし、いくつかのカーネルパラメータを制御し、
プロセス出力をキャプチャするための独自の内部システムを持ち、システムスワップスペースを構成し、
巨大なページとPOSIXメッセージキューを構成し、プロセス間メッセージバスを開始し、
端末ごとのログインプロンプトを開始し、システムサービスのスワス。
これらの多くは、Dockerがあなたのために行うことです。
その他は、Dockerがデフォルトで防止するシステムレベルのコントロールです(正当な理由があります)。
通常、コンテナに1つのことを実行させたい場合があります。これには、複数の調整プロセスが必要になる場合がありますが、
通常、systemdがプロセスマネージャーを提供する以外のことを実行したくない場合があります。
systemdは非常に多くのホストレベルのパラメーターを変更するため--privileged、
Dockerの分離を破るような実行が必要になることがよくありますが、これは通常は悪い考えです。
質問で言うように、通常、コンテナーごとに1つの「ピース」を実行するのが最適と見なされます。
これができない場合は、DockerとUnixの両方の哲学において、
initプロセスに必要な最小限の処理を実行するsupervisordのような軽量プロセスマネージャーの方が適しています。
2021/01/15(金) 09:02:40.75ID:ouI6ZQHD
>>216
これとか読むといいかも。公式がVMじゃないと言ってる。
Containers are not VMs
https://www.docker.com/blog/containers-are-not-vms/
> しかし、これを言っても、VMに関する現在の考えやプロセスを適応させ、
> コンテナーに適用しようとしています。
>
> 「コンテナをバックアップするにはどうすればよいですか?」
> 「実行中のコンテナのパッチ管理戦略は何ですか?」
> 「アプリケーションサーバーはどこで実行されますか?」
>
> 私にとって、Dockerは仮想化テクノロジーではなく、アプリケーション配信テクノロジーで
> あることに気付いたとき、電球の瞬間が訪れました。
これとかも
So, You’re Saying Docker Isn’t A Virtual Machine???
https://derickbailey.com/2016/08/29/so-youre-saying-docker-isnt-a-virtual-machine/
A Docker container is not a virtual machine.
A Docker container is application virtualization.
これとか読むといいかも。公式がVMじゃないと言ってる。
Containers are not VMs
https://www.docker.com/blog/containers-are-not-vms/
> しかし、これを言っても、VMに関する現在の考えやプロセスを適応させ、
> コンテナーに適用しようとしています。
>
> 「コンテナをバックアップするにはどうすればよいですか?」
> 「実行中のコンテナのパッチ管理戦略は何ですか?」
> 「アプリケーションサーバーはどこで実行されますか?」
>
> 私にとって、Dockerは仮想化テクノロジーではなく、アプリケーション配信テクノロジーで
> あることに気付いたとき、電球の瞬間が訪れました。
これとかも
So, You’re Saying Docker Isn’t A Virtual Machine???
https://derickbailey.com/2016/08/29/so-youre-saying-docker-isnt-a-virtual-machine/
A Docker container is not a virtual machine.
A Docker container is application virtualization.
2021/01/15(金) 09:06:01.49ID:ouI6ZQHD
複数のサービスを実行することは可能だが、推奨しないと書いてある。
そしてこの記事に書いてある複数のサービスを実行する方法を見ればわかるように
仮想マシンのように気軽にはできずコードを書く必要がある
Run multiple services in a container
https://docs.docker.com/config/containers/multi-service_container/
コンテナの主な実行プロセスは、ENTRYPOINTおよび/またはCMDの最後ですDockerfile。
一般に、コンテナごとに1つのサービスを使用して、関心のある領域を分離することをお勧めします。
そのサービスは複数のプロセスに分岐する可能性があります(たとえば、Apache Webサーバーが
複数のワーカープロセスを開始します)。複数のプロセスがあっても問題ありませんが、
Dockerを最大限に活用するには、1つのコンテナーがアプリケーション全体の複数の
側面を担当することを避けてください。ユーザー定義のネットワークと共有ボリュームを使用して、
複数のコンテナーを接続できます。
そしてこの記事に書いてある複数のサービスを実行する方法を見ればわかるように
仮想マシンのように気軽にはできずコードを書く必要がある
Run multiple services in a container
https://docs.docker.com/config/containers/multi-service_container/
コンテナの主な実行プロセスは、ENTRYPOINTおよび/またはCMDの最後ですDockerfile。
一般に、コンテナごとに1つのサービスを使用して、関心のある領域を分離することをお勧めします。
そのサービスは複数のプロセスに分岐する可能性があります(たとえば、Apache Webサーバーが
複数のワーカープロセスを開始します)。複数のプロセスがあっても問題ありませんが、
Dockerを最大限に活用するには、1つのコンテナーがアプリケーション全体の複数の
側面を担当することを避けてください。ユーザー定義のネットワークと共有ボリュームを使用して、
複数のコンテナーを接続できます。
2021/01/15(金) 09:06:22.47ID:42ZtZd/z
そもそもコンテナを仮想マシンの代替として使うケースはほぼないだろ。
1に書くような話ではないな
1に書くような話ではないな
2021/01/15(金) 09:09:09.98ID:ouI6ZQHD
> Handling such processes this way is superior to using a full-fledged
> init process such as sysvinit, upstart, or systemd to handle process lifecycle within your container.
sysvinit, upstart, or systemd を使うよりも
自分でコンテナのメインプロセスを作ったほうがいい
> init process such as sysvinit, upstart, or systemd to handle process lifecycle within your container.
sysvinit, upstart, or systemd を使うよりも
自分でコンテナのメインプロセスを作ったほうがいい
2021/01/15(金) 09:27:49.50ID:IT9cRebK
たとえばnginxとphp-fpmを別コンテナにする気もないから自作シェルエントリポイントにしてる
俺はやらないがsupervisordで制御してもいいだろう
systemdまで入れるならlxcかkvmにするけど
俺はやらないがsupervisordで制御してもいいだろう
systemdまで入れるならlxcかkvmにするけど
2021/01/15(金) 09:41:57.89ID:ouI6ZQHD
つまりは仮想マシンであれば標準でsystemdなどが起動してるから
サービスを起動させるにはパッケージインストールして
ちょっと設定ファイルを書き換える程度の簡単な作業だが
Dockerでやる場合、systemdなどを使わずに
自分でスクリプト書いて起動と停止を制御しなきゃいかんのよ(Docker推奨の方法)
頑張ればsystemdを動かすことも出来るが、そのために --privileged オプションが
必要になるかもしれないし、その他の調整が必要になるかもしれない
何が必要かは起動するサービスによって違うので試行錯誤が必要になる
だからDockerはsystemdを使わずに自作スクリプトで制御することを推奨してる
systemdを使うぐらいならより軽量のsupervisordを使うほうがいい
もちろんパッケージインストールして終わりではなく
自分で設定ファイルを書く必要がある
サービスを起動させるにはパッケージインストールして
ちょっと設定ファイルを書き換える程度の簡単な作業だが
Dockerでやる場合、systemdなどを使わずに
自分でスクリプト書いて起動と停止を制御しなきゃいかんのよ(Docker推奨の方法)
頑張ればsystemdを動かすことも出来るが、そのために --privileged オプションが
必要になるかもしれないし、その他の調整が必要になるかもしれない
何が必要かは起動するサービスによって違うので試行錯誤が必要になる
だからDockerはsystemdを使わずに自作スクリプトで制御することを推奨してる
systemdを使うぐらいならより軽量のsupervisordを使うほうがいい
もちろんパッケージインストールして終わりではなく
自分で設定ファイルを書く必要がある
2021/01/15(金) 11:19:21.19ID:TKANrLkr
😫マルチプロセスコンテナ否定派
・1つのサービスのために多数のコンテナイメージをリリース
・イメージ使用者に面倒くさいymlを書かせる
🤗マルチプロセスコンテナ肯定派
・1つのサービスのために1つのコンテナイメージをリリース
・Supervisor等の設定を開発側が書いて出荷するのでイメージ使用者はdocker runするだけ
・1つのサービスのために多数のコンテナイメージをリリース
・イメージ使用者に面倒くさいymlを書かせる
🤗マルチプロセスコンテナ肯定派
・1つのサービスのために1つのコンテナイメージをリリース
・Supervisor等の設定を開発側が書いて出荷するのでイメージ使用者はdocker runするだけ
2021/01/15(金) 11:30:48.83ID:S7oMpLHl
じゃあちゃんと責任持って管理してね🤗
233login:Penguin
2021/01/15(金) 11:40:55.50ID:u8cDb4A3 仮想マシンみたいなことしたかったらLXCでよくね?
しらんけど
しらんけど
234login:Penguin
2021/01/15(金) 11:42:10.14ID:dw4hxnTe ・イメージ使用者に面倒くさいymlを書かせる
別に良くね?
別に良くね?
2021/01/15(金) 11:43:48.41ID:TKANrLkr
2021/01/15(金) 11:46:03.25ID:IT9cRebK
「プロセス」「サービス」を意図的に混同して相手を貶める
2021/01/15(金) 11:47:25.35ID:TKANrLkr
>>234
良くない
負担を減らせるなら減らしたほうがいい
ホスピタリティの精神だよ
セルフサービスで全部やってねなんてのは二流だ
もちろん分散型のイメージを提供するなと言ってるわけじゃない
分散型をオプションとしてサポートするのも良い事だ
良くない
負担を減らせるなら減らしたほうがいい
ホスピタリティの精神だよ
セルフサービスで全部やってねなんてのは二流だ
もちろん分散型のイメージを提供するなと言ってるわけじゃない
分散型をオプションとしてサポートするのも良い事だ
238login:Penguin
2021/01/15(金) 11:50:16.05ID:dw4hxnTe マルチプロセス派は配布して終わり!じゃなくてその後の運用まで考えてるのか?
2021/01/15(金) 11:52:42.16ID:TKANrLkr
>>238
運用もシングルコンテナのほうが簡単でしょ
運用もシングルコンテナのほうが簡単でしょ
240login:Penguin
2021/01/15(金) 12:03:39.22ID:dw4hxnTe >>239
なんで?
なんで?
2021/01/15(金) 12:06:00.89ID:TKANrLkr
242login:Penguin
2021/01/15(金) 12:23:08.21ID:dw4hxnTe 複数サービスのログ管理はどうする?
まさかファイル出力にしてlogrotatedとかも突っ込むの?
それかコンテナ自体のログを複数のサービスからのログが流れてる状態にするの?
ログ管理のSaaSへログの集約がしたくなったらどうする?
エージェントもコンテナに突っ込むのか?
複数コンテナで
ログは全部コンテナのログにしておけば
dockerのログだけローテーションすれば済むじゃん
ロギングドライバ変えたり
ログ転送のエージェントは別コンテナにしたりできる
まさかファイル出力にしてlogrotatedとかも突っ込むの?
それかコンテナ自体のログを複数のサービスからのログが流れてる状態にするの?
ログ管理のSaaSへログの集約がしたくなったらどうする?
エージェントもコンテナに突っ込むのか?
複数コンテナで
ログは全部コンテナのログにしておけば
dockerのログだけローテーションすれば済むじゃん
ロギングドライバ変えたり
ログ転送のエージェントは別コンテナにしたりできる
2021/01/15(金) 12:38:44.17ID:uuEHso6B
個別に更新するのだから、バラバラの方が管理しやすい。負荷分散も容易。
一箇所にまとめるのは滅多に変えない時だけね。
一箇所にまとめるのは滅多に変えない時だけね。
2021/01/15(金) 12:39:04.30ID:IT9cRebK
そんなもんそれぞれのプロセスがstderrに流すだけ
あとはホスト側でどうにでも
あとはホスト側でどうにでも
2021/01/15(金) 12:41:17.01ID:uuEHso6B
纏めた方が楽という人は、k8sのメリット関連の文献を読んだほうが良い。基本的に個人でも同じ。
依存関係が原因のレガシー化を防ぐには、細かく分けて疎結合というのがマイクロサービスの基本。
依存関係が原因のレガシー化を防ぐには、細かく分けて疎結合というのがマイクロサービスの基本。
246login:Penguin
2021/01/15(金) 12:45:13.28ID:dw4hxnTe supervisord管理下のプロセスの死活監視やリソース使用の監視はどうするんだ?
同じイメージに監視ツールのエージェント突っ込むのか?
もうめちゃめちゃ複雑だし、イメージに汎用性がない
複数アプリがあったら全部これやれってアプデも対応しろって言うの?面倒過ぎ
普通にマルチコンテナで動いてたら
Dockerコンテナが動いてるかどうかや、コンテナのCPU、メモリ使用量などの監視で済む
監視ツール変えたくなってもアプリのイメージをいじる必要がない
アプリ固有のメトリクスを記録監視するならアプリイメージに対応必要だが、
これらの基本的なメトリクスを取りたいだけなら対応不要
同じイメージに監視ツールのエージェント突っ込むのか?
もうめちゃめちゃ複雑だし、イメージに汎用性がない
複数アプリがあったら全部これやれってアプデも対応しろって言うの?面倒過ぎ
普通にマルチコンテナで動いてたら
Dockerコンテナが動いてるかどうかや、コンテナのCPU、メモリ使用量などの監視で済む
監視ツール変えたくなってもアプリのイメージをいじる必要がない
アプリ固有のメトリクスを記録監視するならアプリイメージに対応必要だが、
これらの基本的なメトリクスを取りたいだけなら対応不要
247login:Penguin
2021/01/15(金) 12:53:47.70ID:dw4hxnTe2021/01/15(金) 12:57:26.12ID:TKANrLkr
>>242
コンテナのログとして出せばいいだけ
コンテナのログとして出せばいいだけ
2021/01/15(金) 12:57:59.15ID:TKANrLkr
>>243
実は他者製のクラスタを個別に更新することは少ない
実は他者製のクラスタを個別に更新することは少ない
2021/01/15(金) 13:00:28.33ID:TKANrLkr
2021/01/15(金) 13:01:39.19ID:TKANrLkr
2021/01/15(金) 13:03:22.31ID:TKANrLkr
2021/01/15(金) 13:05:01.57ID:uuEHso6B
弊社の勤怠管理システムはIE限定です!
一箇所にまとめるとこうになる。
まあ、慣れてるからそれが良いという人はご自由にどうぞかな
一箇所にまとめるとこうになる。
まあ、慣れてるからそれが良いという人はご自由にどうぞかな
254login:Penguin
2021/01/15(金) 13:05:35.87ID:dw4hxnTe2021/01/15(金) 13:05:44.73ID:TKANrLkr
>>253
意味不明な論点ずらし乙
意味不明な論点ずらし乙
2021/01/15(金) 13:06:09.65ID:TKANrLkr
>>254
わかる
わかる
2021/01/15(金) 13:06:47.32ID:TKANrLkr
仕事に戻るからまた後でな
258login:Penguin
2021/01/15(金) 13:16:57.33ID:dw4hxnTe >>251
Spotifyにsupervisord最強おじさんはいない
Spotifyにsupervisord最強おじさんはいない
2021/01/15(金) 13:19:56.79ID:IT9cRebK
2021/01/15(金) 13:27:24.22ID:uuEHso6B
>>255
まとめるとレガシー化しやすいってこと。
まとめるとレガシー化しやすいってこと。
261login:Penguin
2021/01/15(金) 13:38:59.66ID:dw4hxnTe 1コンテナマルチプロセスにしろってsupervisordにしろってことだろ
そんな事やったらサービス単位で更新できないし、
supervisordの面倒見るのもいやだな
Docker自体がある意味supervisordみたいな物だから
supervisord in supervisordするって事じゃん?
そんな事やったらサービス単位で更新できないし、
supervisordの面倒見るのもいやだな
Docker自体がある意味supervisordみたいな物だから
supervisord in supervisordするって事じゃん?
2021/01/15(金) 14:24:59.58ID:IT9cRebK
「プロセス」「サービス」を意図的に混同して話をややこしくする
nginxとphp-fpmを別コンテナにするメリットがあるのかね
nginxとphp-fpmを別コンテナにするメリットがあるのかね
2021/01/15(金) 16:05:59.73ID:cz1NjHRF
>>251
Shopifyじゃなくて?
Shopifyじゃなくて?
2021/01/15(金) 16:09:00.97ID:6mixkv7d
>>262
まあマルチプロセスなベースイメージをそうと知らないまま使っている阿呆も中にはいるだろうね
まあマルチプロセスなベースイメージをそうと知らないまま使っている阿呆も中にはいるだろうね
2021/01/15(金) 16:11:53.56ID:NRANT14o
バカには疎結合なんか、分からんから、ほっとけほっとけって
2021/01/15(金) 16:25:32.08ID:TKANrLkr
2021/01/15(金) 16:28:50.03ID:TKANrLkr
>>265
疎結合と一言で言っても色々ある
ミクロサービスは疎結合の代表だが
別にミクロサービスじゃなきゃ疎結合できないわけじゃない
さっきも言ったように
サービスとしてはモノリスでもコードレベルで高度にモジュール化することで疎結合を達成するモジュラーモノリスのような考え方もある
コンテナは1つでも内部のサービスが疎結合ならなんの問題もないのだ
疎結合と一言で言っても色々ある
ミクロサービスは疎結合の代表だが
別にミクロサービスじゃなきゃ疎結合できないわけじゃない
さっきも言ったように
サービスとしてはモノリスでもコードレベルで高度にモジュール化することで疎結合を達成するモジュラーモノリスのような考え方もある
コンテナは1つでも内部のサービスが疎結合ならなんの問題もないのだ
2021/01/15(金) 16:29:53.28ID:TKANrLkr
>>263
そうだっけ?正確にはググって
そうだっけ?正確にはググって
2021/01/15(金) 16:35:15.87ID:TKANrLkr
で、この1コンテナ、マルチプロセス(サービス)で成功してる代表的なコンテナがGitLabね
薄っぺらい表面的な知識しかない連中と違って、流石にGitLabのエンジニア達は深く理解してる
杓子定規にコンテナを分ける必要はない、背景が不明な不特定多数に配布するなら、むしろバンドルしたほうがいい、と理解してる
薄っぺらい表面的な知識しかない連中と違って、流石にGitLabのエンジニア達は深く理解してる
杓子定規にコンテナを分ける必要はない、背景が不明な不特定多数に配布するなら、むしろバンドルしたほうがいい、と理解してる
2021/01/15(金) 16:40:51.49ID:6mixkv7d
GitLabはセルフホスティング対応が大前提だからそうなってるんだよ
シングルインスタンスなSaaSとは別次元の話
シングルインスタンスなSaaSとは別次元の話
2021/01/15(金) 16:59:15.47ID:TKANrLkr
つまり利用者側からは1コンテナのほうがいいってことだ
2021/01/15(金) 17:41:15.88ID:TKANrLkr
基本は1コンテナなんだよ
ちゃんと利用者のことを考えてるならな
で厳しい要件満たすために、分散管理したい連中のために、いちおうバラ売りコンテナも用意しとく
それがベストプラクティス
さいしょっから分散管理のみサポートします、なあんて、怠惰もいいとこだ
ちゃんと利用者のことを考えてるならな
で厳しい要件満たすために、分散管理したい連中のために、いちおうバラ売りコンテナも用意しとく
それがベストプラクティス
さいしょっから分散管理のみサポートします、なあんて、怠惰もいいとこだ
273login:Penguin
2021/01/15(金) 18:55:24.75ID:dw4hxnTe それはご苦労なこった
俺は怠惰だからメインのコンテナ以外はありあわせのイメージ使うぜ
俺は怠惰だからメインのコンテナ以外はありあわせのイメージ使うぜ
2021/01/15(金) 19:21:01.23ID:F2PkWUyM
自社以外に誰も求めてないマイナーサービスは最初からバラ売りでもいい
2021/01/16(土) 12:37:44.49ID:iVfNA5oL
複数のサービスを一つのコンテナにまとめたほうがいいって言ってるやつは
複数のサービスが一つのコンテナになってるから
"使うのが楽"って言ってるんだよ。
作るのが大変の否定になってない
>>1は作るのが大変と言っている
> Dockerを仮想マシンの代替として、コンテナ内で複数のサービスを起動しようとすると困難が待ち受けています。
Dockerを使ってると言いつつ、自分でDockerfileもyamlも書かずに
ただ誰かが作ったものを使うだけのやつは、Dockerを使ってるとは言えない
んで、使ってるだけのやつが、使うのが楽と言ってる
複数のサービスを一つのコンテナに入れるのがどれだけ大変かわかってない
だって自分で作ってないんだもの
複数のサービスが一つのコンテナになってるから
"使うのが楽"って言ってるんだよ。
作るのが大変の否定になってない
>>1は作るのが大変と言っている
> Dockerを仮想マシンの代替として、コンテナ内で複数のサービスを起動しようとすると困難が待ち受けています。
Dockerを使ってると言いつつ、自分でDockerfileもyamlも書かずに
ただ誰かが作ったものを使うだけのやつは、Dockerを使ってるとは言えない
んで、使ってるだけのやつが、使うのが楽と言ってる
複数のサービスを一つのコンテナに入れるのがどれだけ大変かわかってない
だって自分で作ってないんだもの
2021/01/16(土) 12:50:03.28ID:TRxochm9
いやいや、作るのもめちゃくちゃ簡単だぞ?
Supervisorとか使うだけ
Dockerfileも既存のchefなんかが、殆どそのまま使える
Supervisorとか使うだけ
Dockerfileも既存のchefなんかが、殆どそのまま使える
2021/01/16(土) 13:00:59.25ID:TRxochm9
コンテナを分けないことで、お互いのサービスの提供するコマンドラインツールを使いやすくなるのも、便利だな
ある古いサービスAの、管理者用のコマンドラインがあるんだが、、、
これはサービスAをインストールしたマシンで、ローカル実行する必要があった
もちろん、RPCなどという気の利いたものは、ない
開発者からすると、SSHがあればいいでしょ?みたいな気持ちだったんだろうな
そして、サービスBからこのコマンドラインを実行したい、と、なったわけだ
もし、サービスAとサービスBのコンテナを、分けてしまったら
サービスBから、このコマンドラインを実行するのは、普通の方法では、不可能だ
docker.sockをマウントして、サービスBコンテナからdocker execするか、、、
サービスAを拡張してRPAを追加しなきゃならない
あるいは、サービスAを、マルチサービス、にして、SSHを追加するか、、、
1コンテナだったら簡単なのに!
ある古いサービスAの、管理者用のコマンドラインがあるんだが、、、
これはサービスAをインストールしたマシンで、ローカル実行する必要があった
もちろん、RPCなどという気の利いたものは、ない
開発者からすると、SSHがあればいいでしょ?みたいな気持ちだったんだろうな
そして、サービスBからこのコマンドラインを実行したい、と、なったわけだ
もし、サービスAとサービスBのコンテナを、分けてしまったら
サービスBから、このコマンドラインを実行するのは、普通の方法では、不可能だ
docker.sockをマウントして、サービスBコンテナからdocker execするか、、、
サービスAを拡張してRPAを追加しなきゃならない
あるいは、サービスAを、マルチサービス、にして、SSHを追加するか、、、
1コンテナだったら簡単なのに!
2021/01/16(土) 13:05:52.72ID:d+XwEvch
オンプレの延長だな
279login:Penguin
2021/01/16(土) 13:07:11.86ID:5ICFXjQI データベースは既存のサーバーが使えたほうが便利と思うけど
AWSのRDSとか使わせろ
AWSのRDSとか使わせろ
2021/01/16(土) 13:09:50.55ID:iVfNA5oL
>>276
> いやいや、作るのもめちゃくちゃ簡単だぞ?
> Supervisorとか使うだけ
使うだけじゃなくて設定ファイルとか書かないと駄目だろ
ログをどうするかとかさ、永続的なファイルをどうするかとかさ
> いやいや、作るのもめちゃくちゃ簡単だぞ?
> Supervisorとか使うだけ
使うだけじゃなくて設定ファイルとか書かないと駄目だろ
ログをどうするかとかさ、永続的なファイルをどうするかとかさ
2021/01/16(土) 13:10:27.15ID:iVfNA5oL
> Dockerfileも既存のchefなんかが、殆どそのまま使える
chefを使うってアホじゃないか
Docker使う意味がなくなってる
chefを使うってアホじゃないか
Docker使う意味がなくなってる
2021/01/16(土) 13:10:30.88ID:TRxochm9
このように、1サービス1コンテナの精神で細かく分離すると
サービス同士が疎結合になり、一見すると良いように思える
しかし、疎結合である、ということは、サービス間の連携のオーバーヘッドが増える、ということだ
サービスはRPCを実装しなければならず、開発者は疲弊する
サービスメッシュの管理コストは増大し、運用者は疲弊する
これはミクロサービスの功罪と同じことだが、なんでもかんでも、小さく分けて、疎にするのが、常に正解なわけじゃない
全てはトレードオフなのだ!
たしか、マーティンファウラーだったと思うが
彼曰く、最初からミクロサービス的な思想に傾倒した案件は、失敗することが多い、らしい
最初はモノリスのほうが、うまく行くのだ
システムが、モノリスでは到底手に負えないほど、巨大化してから初めて、分割することを考えれば、よろしい
サービス同士が疎結合になり、一見すると良いように思える
しかし、疎結合である、ということは、サービス間の連携のオーバーヘッドが増える、ということだ
サービスはRPCを実装しなければならず、開発者は疲弊する
サービスメッシュの管理コストは増大し、運用者は疲弊する
これはミクロサービスの功罪と同じことだが、なんでもかんでも、小さく分けて、疎にするのが、常に正解なわけじゃない
全てはトレードオフなのだ!
たしか、マーティンファウラーだったと思うが
彼曰く、最初からミクロサービス的な思想に傾倒した案件は、失敗することが多い、らしい
最初はモノリスのほうが、うまく行くのだ
システムが、モノリスでは到底手に負えないほど、巨大化してから初めて、分割することを考えれば、よろしい
2021/01/16(土) 13:11:04.23ID:TRxochm9
>>280
そんなことも出来ないの?
そんなことも出来ないの?
2021/01/16(土) 13:12:08.94ID:iVfNA5oL
>>277
それ、仮想マシン使えって話なんだ
それ、仮想マシン使えって話なんだ
2021/01/16(土) 13:12:36.46ID:iVfNA5oL
2021/01/16(土) 13:12:54.17ID:TRxochm9
2021/01/16(土) 13:13:24.74ID:TRxochm9
>>285
大変じゃないけど?
大変じゃないけど?
2021/01/16(土) 13:15:45.87ID:iVfNA5oL
2021/01/16(土) 13:16:07.78ID:iVfNA5oL
>>287
apt-getでインストールするだけ vs 設定ファイルを自分で書く
apt-getでインストールするだけ vs 設定ファイルを自分で書く
2021/01/16(土) 13:16:30.37ID:iVfNA5oL
2021/01/16(土) 13:18:13.82ID:7o928iA8
>>284
仮想マシンは重いからやだ
仮想マシンは重いからやだ
2021/01/16(土) 13:18:42.21ID:7o928iA8
>>289
どっちも大変じゃないけど?
どっちも大変じゃないけど?
293login:Penguin
2021/01/16(土) 13:19:01.25ID:5ICFXjQI supervisordの方が面倒くさい
docker-composeの方が楽
docker-composeの方が楽
2021/01/16(土) 13:19:35.25ID:7o928iA8
2021/01/16(土) 13:20:33.01ID:7o928iA8
>>293
そりゃ、手間を利用者側に、オシツケテル、からでしょ
そりゃ、手間を利用者側に、オシツケテル、からでしょ
296login:Penguin
2021/01/16(土) 13:25:53.65ID:5ICFXjQI docker-compose psしたらsupervisordが生きてたらupと表示されるが
設定にミスがあった場合や問題が起きた場合もsupervisordさえ生きてたらupと出る
判定するにはログやsupervisordのあるコンテナ内でコマンド実行が必要
どこが優しいねん
設定にミスがあった場合や問題が起きた場合もsupervisordさえ生きてたらupと出る
判定するにはログやsupervisordのあるコンテナ内でコマンド実行が必要
どこが優しいねん
297login:Penguin
2021/01/16(土) 13:32:34.07ID:5ICFXjQI >>288
A container’s main running process is the ENTRYPOINT and/or CMD at the end of the Dockerfile.
It is generally recommended that you separate areas of concern by using one service per container.
That service may fork into multiple processes (for example, Apache web server starts multiple worker processes). It’s ok to have multiple processes, but to get the most benefit out of Docker, avoid one container being responsible for multiple aspects of your overall application.
You can connect multiple containers using user-defined networks and shared volumes.
https://docs.docker.com/config/containers/multi-service_container/
A container’s main running process is the ENTRYPOINT and/or CMD at the end of the Dockerfile.
It is generally recommended that you separate areas of concern by using one service per container.
That service may fork into multiple processes (for example, Apache web server starts multiple worker processes). It’s ok to have multiple processes, but to get the most benefit out of Docker, avoid one container being responsible for multiple aspects of your overall application.
You can connect multiple containers using user-defined networks and shared volumes.
https://docs.docker.com/config/containers/multi-service_container/
2021/01/16(土) 13:33:38.70ID:7o928iA8
299login:Penguin
2021/01/16(土) 13:33:54.29ID:5ICFXjQI avoid one container being responsible for multiple aspects of your overall application.
avoid one container being responsible for multiple aspects of your overall application.
avoid one container being responsible for multiple aspects of your overall application.
300login:Penguin
2021/01/16(土) 13:34:41.89ID:5ICFXjQI >>298
開発や運用でトラブルが一切無いと考える方が頭おかしい
開発や運用でトラブルが一切無いと考える方が頭おかしい
301login:Penguin
2021/01/16(土) 13:36:10.72ID:5ICFXjQI dockerやdocker-composeだけでsupervisordのやってる事と同じ事が出来る
余計なコンポーネントを増やすな
余計なコンポーネントを増やすな
2021/01/16(土) 13:39:18.26ID:7o928iA8
>>300
なら1コンテナ1プロセスでも間違いは起こるなー
なら1コンテナ1プロセスでも間違いは起こるなー
2021/01/16(土) 13:39:56.86ID:7o928iA8
304login:Penguin
2021/01/16(土) 13:42:03.31ID:5ICFXjQI >>303
supervisordあったらdocker要らなくね?
supervisordあったらdocker要らなくね?
305login:Penguin
2021/01/16(土) 13:47:58.61ID:5ICFXjQI 既存のデータベース使うとかは考えないの?
データベースの入ってないDockerイメージと
入ってるイメージ2種類作るのか?
それか起動時のスクリプトにフラグ追加?
だったら最初から分けとけよ
めんどくさい
データベースの入ってないDockerイメージと
入ってるイメージ2種類作るのか?
それか起動時のスクリプトにフラグ追加?
だったら最初から分けとけよ
めんどくさい
2021/01/16(土) 14:03:15.18ID:Q9Gxtc5G
2021/01/16(土) 14:05:12.85ID:Q9Gxtc5G
>>305
お前さー、少しはレス読みなよ
分散用に、分けたコンテナをオプションで配布する、ことまではヒテイしとらんだろ
言うなれば、マルチサービスコンテナファーストだよ
シングルサービスコンテナはオプションだ
お前さー、少しはレス読みなよ
分散用に、分けたコンテナをオプションで配布する、ことまではヒテイしとらんだろ
言うなれば、マルチサービスコンテナファーストだよ
シングルサービスコンテナはオプションだ
308login:Penguin
2021/01/16(土) 14:05:40.84ID:kbdLhinp309login:Penguin
2021/01/16(土) 14:07:23.52ID:kbdLhinp2021/01/16(土) 14:08:38.07ID:Q9Gxtc5G
>>305
それとな、内部DBと外部DBを選択できるコンテナは、わりとよくある
スタンドアロンだとsqlite、そうじゃないとpostgres、mysqlのどっちか
てなわけよ
スタンドアロンファースト
(・∀・)イイネ!!
それとな、内部DBと外部DBを選択できるコンテナは、わりとよくある
スタンドアロンだとsqlite、そうじゃないとpostgres、mysqlのどっちか
てなわけよ
スタンドアロンファースト
(・∀・)イイネ!!
2021/01/16(土) 14:12:15.37ID:Q9Gxtc5G
>>309
小ささにこだわって、オーケストレーションマニフェスト書かせたり、運用の手間を増やすな
カリッカリにチューニングしたい、オタク共に合わせるのは、大半のユーザーにとっては面倒でしかないんだよ
多少、重くていいから、お手軽に使わせろ、ってーの
小ささにこだわって、オーケストレーションマニフェスト書かせたり、運用の手間を増やすな
カリッカリにチューニングしたい、オタク共に合わせるのは、大半のユーザーにとっては面倒でしかないんだよ
多少、重くていいから、お手軽に使わせろ、ってーの
312login:Penguin
2021/01/16(土) 14:24:51.12ID:kbdLhinp >>310
sqliteはプロセス要らないからいいが
mysqlやpostgresqlを突っ込めというのはキ○ガイの所業
複数DB対応するには普通は対応コストがかかる
DBラッパー使っても特定DBにしか対応してない拡張は使えないし
docker-composeで書いても大した記述量でもあるまいに
意図的に無視してるな
sqliteはプロセス要らないからいいが
mysqlやpostgresqlを突っ込めというのはキ○ガイの所業
複数DB対応するには普通は対応コストがかかる
DBラッパー使っても特定DBにしか対応してない拡張は使えないし
docker-composeで書いても大した記述量でもあるまいに
意図的に無視してるな
313login:Penguin
2021/01/16(土) 14:28:59.91ID:kbdLhinp2021/01/16(土) 14:32:15.75ID:Q9Gxtc5G
315login:Penguin
2021/01/16(土) 14:34:53.03ID:kbdLhinp 手軽に試すなら普通はdocker-compose使うから
そんな特殊なやり方で対応する必要がない。
k8sやらnomadに手軽さは求めてないし。
k8sでやるんだったらhelmチャートあると便利。
そんな特殊なやり方で対応する必要がない。
k8sやらnomadに手軽さは求めてないし。
k8sでやるんだったらhelmチャートあると便利。
2021/01/16(土) 14:37:33.02ID:Q9Gxtc5G
マルチコンテナだとこうやって、実行環境に会わせて、オーケストレーションマニフェストをたくさん書かなきゃならん
一方でシングルコンテナなら、docker runするだけ
超簡単で、みんなハッピー
しかも、podmanでも、同じように動く
一方でシングルコンテナなら、docker runするだけ
超簡単で、みんなハッピー
しかも、podmanでも、同じように動く
317login:Penguin
2021/01/16(土) 14:39:41.23ID:kbdLhinp そんな手軽さ別に求めてないし。馬鹿なの?
docker-compose用意してたら大体想定されている使い方分かるから、
自分でYAMLなり何なり書けば良いだけ
docker-compose用意してたら大体想定されている使い方分かるから、
自分でYAMLなり何なり書けば良いだけ
2021/01/16(土) 14:50:08.02ID:Q9Gxtc5G
>>317
ユーザーに、手間をかけさせちゃ、だめだ
GitLabはこれをよくわかってる、から、1コンテナに詰め込んだ
ユーザーはdocker runするだけで、GitLabを使えるようになった
これが、マルチコンテナだったら、まあ、大変だよ
ユーザーに、手間をかけさせちゃ、だめだ
GitLabはこれをよくわかってる、から、1コンテナに詰め込んだ
ユーザーはdocker runするだけで、GitLabを使えるようになった
これが、マルチコンテナだったら、まあ、大変だよ
2021/01/16(土) 15:03:01.91ID:Q9Gxtc5G
自作PCとスマホ、みたいなもんかなー
マルチコンテナ≒自作PC
このパーツ、あのパーツ、色々集めて、ミスしないようにくみたてて、ドライバとかも探して、入れて下さい
ツールは別売りなんで、それも自分で探して、入れてください
組み合せが悪いと、動かないかもしれません
でも、まあ、自己責任です
スマホ≒シングルコンテナ
スマホを購入して、箱から出して、電源を入れて下さい
WIFIとアカウントの入力だけ、お願いします
驚きましたか?そうです、もう使えます!
必要になりそうなアプリケーションも、予め揃えてあります
おめでとうございます!
マルチコンテナ≒自作PC
このパーツ、あのパーツ、色々集めて、ミスしないようにくみたてて、ドライバとかも探して、入れて下さい
ツールは別売りなんで、それも自分で探して、入れてください
組み合せが悪いと、動かないかもしれません
でも、まあ、自己責任です
スマホ≒シングルコンテナ
スマホを購入して、箱から出して、電源を入れて下さい
WIFIとアカウントの入力だけ、お願いします
驚きましたか?そうです、もう使えます!
必要になりそうなアプリケーションも、予め揃えてあります
おめでとうございます!
320login:Penguin
2021/01/16(土) 15:03:11.70ID:kbdLhinp■ このスレッドは過去ログ倉庫に格納されています
ニュース
- タイムズカー、個人情報最大660万件流出 氏名、住所、生年月日、電話番号、メアド、運転免許情報、学生証などの画像 [おっさん友の会★]
- 【サッカー】日本に敗れたベネズエラ監督 PK獲得が一転PK献上の判定に不満爆発「私たちへのリスペクトを欠いていた」 [ゴアマガラ★]
- 【🇯🇵】日の丸を傷つけたら処罰「国旗損壊罪」に日弁連が即時廃止求める「表現の自由そのものが失われかねない」 [少考さん★]
- 中野2億円時計窃盗事件のチリ人2人再逮捕 日本狙った理由「刑罰軽い」 [少考さん★]
- 【サッカー】ベネズエラ代表DFがジャッジに怒り、監督も指摘したシーンをSNSで共有「ホスト国を勝たせるために仕組まれた親善試合だ」 [ニーニーφ★]
- 【米中】トランプ氏、「中国側へ武器売却」を提案 対台湾懸念で 米大使明かす ★4 [煮卵★]