探検


Docker Part4

■ このスレッドは過去ログ倉庫に格納されています
2020/08/17(月) 00:19:36.93ID:PKLBL3Xf
Linuxが持つコンテナ技術を使った、仮想マシン必要ないアプリケーション仮想化技術で
アプリケーションのデプロイが用意になります

Docker(アプリ仮想化)は仮想マシンと併用して使うことで最も効果を発揮し
開発・テストで使ったDockerイメージと全く同じものを本番環境で使えます
さらにWindowsとmacOSでも同じDockerイメージが動きます。
(Linuxは仮想マシンが不要ですが、WindowsとmacOSは仮想マシン技術を併用して実現しています。)

Dockerイメージ(Dockerfile)はアプリケーション開発者が作成します
動かすのに必要なもの全てがDockerイメージに含まれるので
インフラ担当者はそれを動かすだけ、本来のインフラの作業に集中できるようになります

Dockerは主にウェブ業界でサービスのデプロイの必須技術になりました
情報共有しましょう

http://www.docker.io/

前スレ
Docker Part3
https://mao.5ch.net/test/read.cgi/linux/1552023620/


注意 同じコンテナ技術を使うが異なるアプローチで仮想マシンの
代替を目指しているのがLXC。目的が全く異なるので注意
LXC(Linux Containers)
https://mao.5ch.net/test/read.cgi/linux/1330826939/
2020/10/17(土) 04:27:57.99ID:ZuG7iJvZ
>>570
dockerイメージ=プログラム(exeファイル)と考えればいいんだよ。
exeファイルの中に消えたらいけないデータを保存するかい?しないだろ?

つまり保存するデータはdockerイメージの外に保存するんだよ。
それがボリューム。ボリュームっていうのはdockerイメージを起動するときに割り当てる。
例えば任意のディレクトリをボリュームとして使うことができる。
exeファイルを実行するときにデータディレクトリを指定しているようなもんだ

こうやってdockerイメージの外のリソースを起動時に割り当てることで
dockerイメージ内部からはどこで動かしても同じように見えるようになるわけ

ちなみにデータと設定ファイル(アプリ実行中に保存しないもの)は別な。
設定ファイルはdockerイメージに埋め込んでいい(場合によっては外に出すこともある)
2020/10/17(土) 04:58:28.34ID:o45tI0TJ
>>571
>dockerイメージ=プログラム(exeファイル)と
なるほどそういうことなんですね
>任意のディレクトリをボリュームとして使うことができる。
容量に余裕のあるHDDを指定して永続的に保存なんてこともできるのですね

アプリの設定を変えたあとその設定も他の環境でも共有したいとなると
イメージまるごと共有するか
クラウドに設定を保存するとか
ですかね
(chromeブラウザとかだとログインすればすぐ同期されていい感じなのですが)

ありがとうございました
2020/10/17(土) 17:19:50.34
そんなゴリゴリに使い倒すつもりはないからホストPCのシステムディスクって250GB(SSD)もあれば十分だよね・・?
2020/10/17(土) 22:15:33.31ID:DLL24/S3
https://martinheinz.dev/blog/35
575login:Penguin
垢版 |
2020/10/24(土) 16:40:06.56ID:xxGzDPrd
Docker Hub Image Retention Policy Delayed, Subscription Updates
https://www.docker.com/blog/docker-hub-image-retention-policy-delayed-and-subscription-updates/

Docker Hubのイメージ削除は2021年半ばまで延期するってよ・・・

リソース消費量ベースのサブスクリプションにどう対応したら良いかとか
そもそも現在のリソース消費量は?とかよく分からないからってフィードバックが寄せられたっぽい
2020/10/25(日) 11:54:59.14ID:8aW1oLHx
dockerhubの方針はよくわからないからgithubでいいや
2020/10/26(月) 01:04:34.96ID:AY57YqY6
imageを共有すること自体がないから
docker-compose.ymlの共有はするけど
2020/10/26(月) 23:53:29.78ID:h3ceCoJ5
このご時世にvmみたいな使い方してしまった
はぁ
2020/10/29(木) 03:10:38.44ID:PcZHu1+a
イメージ作成したときにダウンロードしてきたイメージはどこに保存されているの?
イメージ作成前後でボリュームのサイズ調べてもサイズが増減しない・・見間違えてるだけかな
2020/10/29(木) 03:53:45.99ID:Hs3h4quA
最初にイメージの格納場所のサイズを設定するだろ。
~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.rawとか。

docker system df -v
で確認。
581login:Penguin
垢版 |
2020/10/29(木) 14:00:29.61ID:rXwaKjQ8
Ready for pull rate limits? Docker outlines 'next chapter' as Google tells customers how to dodge subscriptions
https://www.theregister.com/2020/10/28/docker_pull_rate_limit_1_november/

The issue is worse for users of private GKE clusters since "all image pulls will be routed via a single NAT gateway".
Winser warned that "any service that relies on container images may be affected, including Cloud Build, Cloud Run, App Engine etc."

11月からNATゲートウェイ経由かつ匿名ユーザーだと
全くpull出来なくなる感じ?
ヤバくね?
2020/10/29(木) 18:00:59.00ID:jMkOFc/w
必要なイメージをプライベートレジストリに確保するだけ
2020/10/30(金) 21:51:31.58
https://labs.play-with-docker.com/
でボリュームのマウントがうまく行かない
$ cat test.txt
$ docker run -it -v /my/:/var/my ubuntu
コンテナの端末に入って/var/myに移動してもtest.txt無し

ローカルのPCでは成功したのになあ
2020/10/30(金) 22:54:14.38
補足
test.txtはmyディレクトリに作ってある
2020/10/30(金) 22:56:41.22
たぶん/my/のパスが間違ってるってことだよね
ほんとは
/なんたら/かんたら/うんたら/my
ってパスなんだろうけど
586583
垢版 |
2020/10/30(金) 23:06:02.09
改めてやってみたら
/my:/var/my
じゃなく
/root/my:
でやったらできた!
2020/10/30(金) 23:57:29.93ID:dHpXX+dB
python使いたいだけなのに886MBって重くない?
2020/10/31(土) 00:15:50.02ID:Vfwi3dRZ
うそ!?私のPython 41.09MB!
589login:Penguin
垢版 |
2020/10/31(土) 09:33:06.67ID:4qiE9XbQ
alpineベースのPythonは扱いが難しい

特にCライブラリを使うパッケージが必要なプログラムの場合、ソースからビルドされて遅かったり
alpineにコンパイル済みのがあってもバージョンが古かったり
たまにglibcとmuslの違いから起きる互換性の問題がある

alpineよりslimの方がオヌヌメ
alpineよりは大きいがまだ小さめ
2020/10/31(土) 13:31:17.31ID:nDrTm0nA
python:3.7-slim
で-alpineとか-slimつけるだけでいけた�d
2020/10/31(土) 13:40:42.84ID:Vfwi3dRZ
つけるだけでいけたの前にdocker-hubくらい見ようよ
2020/10/31(土) 14:12:19.71ID:nDrTm0nA
ん dockerhubみたら
python:<version>-slim
って書いてあったよ
2020/10/31(土) 14:34:33.75ID:oeYVChnG
Docker Hubを見るのも当然だし、大元のDovkerfileを読もうよ。
594login:Penguin
垢版 |
2020/11/01(日) 17:44:44.70ID:M5iteKem
謎の現象に苦しんでいます。

CentOS 7で、yumでdockerを導入しました。

docker volume creteで、vol_etcと、vol_varを作成し、docker runのオプションで、次のようにボリュームを指定のディレクトリにマウントしました。
--mount source=vol_etc,target=/etc --mount source=vol_var,target=/var

このコンテナはimageから起動しているので、オリジナルの/etcと/varとが、それぞれボリュームにコピーされるはずです。

オリジナル/etcの内容は全てボリュームにコピーされたようです。
しかし、/varの一部のディレクトリの内容が、なぜかボリュームにコピーされません。
そのため、そのディレクトリの内容のみ空っぽになってしまいます。
(具体的には、/var/spool/hylafaxというディレクトリが空になります。/var/spool/の他のサブディレクトリについては中身がコピーされています。)

念の為、ボリュームをマウントせずにコンテナを起動すると、問題のディレクトリも中身が入っていることが確認されます。

原因として何が考えられるでしょうか。お手上げ状態です。
2020/11/01(日) 17:56:10.61ID:M5iteKem
>>594
自己レスです。

オリジナルの/var/spool/hylafax 内に、pipeファイルがあります。

prw------- 1 uucp uucp 0 Sep 19 2018 FIFO

これが原因で、ボリュームにサブディレクトリも含めてコピーがされない可能性はあるでしょうか。
2020/11/01(日) 18:14:02.39ID:RPHXCdM8
pipeを削除したイメージを作ってやってみれば原因かどうかわかるんじゃないの
2020/11/01(日) 19:30:01.48ID:6Gl5tSwg
>>594
基本的な話として、
ホストの/etcや/varをDockerコンテナの中にマウントしてはいけません。
厳禁といってもいいレベルでダメです
2020/11/01(日) 19:32:30.47ID:6Gl5tSwg
/etc や /var 以下の必要なものだけをマウントする場合はギリOKです。
そのDockerイメージは何の機能をコンテナ化したものですか?
その機能に必要なものだけをマウントしてください
2020/11/01(日) 19:33:45.60ID:6Gl5tSwg
ついでに言っておくと/etcや/varなんかをDockerコンテナに
割り当てたりなんかしたら最悪ホストシステムが破壊されます。
2020/11/01(日) 19:41:34.60ID:lesnXEzs
アプリ屋くん今日も大暴走
2020/11/01(日) 20:10:35.55ID:w/PjhgBB
>>594
>― mount source=vol_etc,target=/etc --mount source=vol_var,target=/var

なんで、こうするのか、理解に苦しむわ…。
とくに、 /var をなぜVolumeにする?
意味がわからない。
2020/11/02(月) 00:03:07.68ID:BCpQPJWu
Dockerを仮想マシンか何かだと思ってるんだろ
/etcや/varを共有してDockerコンテナの中で作業しようとしてる
603login:Penguin
垢版 |
2020/11/02(月) 00:51:55.56ID:FrveCY20
仮想マシンでvar とかetcの共有なんてしないけどね。
2020/11/02(月) 00:55:50.11ID:BCpQPJWu
だから仮想マシンとしてログイン(?)して使いたいけど
/etcや/varを共有したいって思ったんでしょ?

アプリ専用コンテナとして考えれば
必要なものだけを共有するという発想になる

そんな広い範囲のディレクトリを参照するってことは
そのコンテナでいろんな作業をしたいってことだろう
/etcが見れればいろんなアプリ何も設定しなくても動くと勘違いしちゃうもんねw
2020/11/02(月) 01:02:37.86ID:4g2Afrsx
もうめちゃくちゃだなこいつ
質問者はホストと共有するなんて言ってねえし
2020/11/02(月) 01:14:54.26ID:BCpQPJWu
?

ボリュームってなんのことか知ってますか?
607login:Penguin
垢版 |
2020/11/02(月) 04:24:32.64ID:FrveCY20
>>594
Dockerのmountとかvolumeってのは、システムの可変の部分を定義することね。
/var/www/html 配下をマウントして、中身はプライベートなgithub/gitlabとかからpullするとか。
或いは/etc/nginx/conf.d配下だけをマウントして独自の定義ファイル置くとか。
例えホストと同等のゲストを作りたいと思ったとしてもホストのetcとゲスト(コンテナ)のetc全く別物w
/etc/とか/var/直下をゲストがマウントしたいとか、多分Dockerの作者も仰天の利用方法だと思うわ。
2020/11/02(月) 08:57:26.54ID:EcOPmiOb
こいつvolumeとbind mountの区別ついてなさそうだな
2020/11/03(火) 16:30:43.03ID:6B3+AB0D
DOCKER_CONTENT_TRUSTって設定するべきでしょうか?
2020/11/03(火) 17:19:49.85ID:fVpH/w23
してもいいししなくてもいい
2020/11/03(火) 17:37:57.63
DockerfileでRUNするたびにdocker imagesの一覧が増えていくんだけどなんで
2020/11/03(火) 20:10:29.81ID:6B3+AB0D
>>610
設定しておくことにしました
613login:Penguin
垢版 |
2020/11/03(火) 20:55:06.23ID:ZfhIPw1B
Use GitHub Actions to deploy your application to IBM Cloud Kubernetes Service
https://youtu.be/r5hyAmuNHyE
2020/11/03(火) 21:01:25.70ID:3zNCbq6k
>>611
Dockerコンテナやイメージがなんであるか理解してください。
それでも分からなければ、Docker社にお問い合わせください。
2020/11/03(火) 21:13:57.95ID:SU13O3bL
>>601
使用するアプリが、/var/spool/app以下に設定ファイルをいろいろと自動作成するんですよ。
それから/var/spoolは、postfixも作業領域を持つので、
varまるごとボリューム化しておけば便利だと思いました。
2020/11/03(火) 21:15:55.55ID:SU13O3bL
>>605
そのとおりです。
ボリュームを作成した上で、コンテナ内の/etc/と、/var/spoolを書き出して、
データ永続化しようとしているわけです。
2020/11/03(火) 21:17:53.87ID:SU13O3bL
>>596
pipeのない/var/spool/hylafax/etcにボリュームをマウントすると、
きちんとコンテナ内容物がボリュームにコピーされました。
おそらく、pipeが原因だと思います。
2020/11/03(火) 21:18:50.16ID:SU13O3bL
>>604
ぜんぜん違います。>>605さんの言うとおりです。
2020/11/03(火) 21:20:18.59ID:SU13O3bL
>>598
コンテナのディレクトリにマウントしているのは、
docker volumeです。
ホストの内容ではありません。
2020/11/03(火) 21:23:58.03ID:SU13O3bL
コンテナをprivilegeで動作させて、sshログインできるように設定しました。
リモートでコンテナ内に入ってから、yumで必要なパッケージを導入して、
アプリ環境を整えました。その後、commitしてイメージに固めました。
/etcや、/var/spoolは、コンテナ内での作業内容が保存されるので、
永続化のためにボリュームに切り出しておきます。

こんな使い方便利すぎて、どこが悪い?
2020/11/03(火) 21:34:39.97ID:mxkbANnQ
そういう運用したいならLXCのほうがいいよ
2020/11/03(火) 22:16:22.40ID:M5SiUIu9
むしろVMの方が楽まである
623login:Penguin
垢版 |
2020/11/03(火) 23:10:38.94ID:SU13O3bL
>>622
メモリ食うから仮想マシンは無理

>>621
Dockerのボリュームとか、イメージとか、
ネットワークとか、便利なのでなあ。
LXCは古い技術でしょ。やりたいことができなかったらと思うとわざわざ使う気になれないなあ。
624login:Penguin
垢版 |
2020/11/03(火) 23:14:12.57ID:SU13O3bL
>>621
CentOS7イメージだとprivilegeコンテナにすれば仮想マシンぽく運用できた。
でも、CentOS6イメージだとそういうわけには行かなかった。
こういう場合には、LXCというのを使うのが良いのかなと思っています。
2020/11/04(水) 00:26:19.21ID:5EaF6Elr
Dockerのマウント3種類についてわかったことをまとめる
https://qiita.com/y518gaku/items/456f34c317a65a9dae86

Volumes、bind mounts、tmpfs mounts について
626login:Penguin
垢版 |
2020/11/04(水) 00:46:11.05ID:8vCtX8KM
ホストディレクトリをコンテナにマウントする場合も、Dockerボリュームを複数コンテナで共有する場合も、排他同時アクセス機能はないんでしょ?

それができたら、ファイルサーバ機能を別コンテナに切り分けたりできるのになあ。
2020/11/04(水) 01:03:12.04ID:8GrlF7V6
誰かDocker Certified Associate受けたことある人おらん?
英語あんまり自信ないんだが、問題文の英語どのくらいの難易度か教えて欲しい
628login:Penguin
垢版 |
2020/11/04(水) 01:10:20.49ID:7tuD0WTP
>>620
便利なんだろうけどIaaCとは全然違うような?
メモリ、ストレージは節約できるだろうけどインフラの構築手順をコード化
して共有するという、コンテナ化の元の理念は死んでる気がする。
別に原理主義ではないけどな。属人化の部分が解消されない気はする。
629login:Penguin
垢版 |
2020/11/04(水) 01:23:13.41ID:aRkKqxcc
Linuxのシェル変数$USERを
Dockerfileの中でのみ使う方法を教えてください

${USER}とか$USERでは取れませんでした

ARG USER=$USER
とか
ARG USER=${USER}

もだめでした
630login:Penguin
垢版 |
2020/11/04(水) 01:37:00.44ID:7tuD0WTP
>>629
そもそもここで使いたいと期待するUSER変数がdocker buildを実行するホスト側
のユーザーなのか、コンテナ側なのか分からないんだが・・・
2020/11/04(水) 01:37:41.85ID:aRkKqxcc
>>630
ホスト側です
632login:Penguin
垢版 |
2020/11/04(水) 01:46:40.22ID:7tuD0WTP
引数に渡してENVにあげる。

https://vsupalov.com/docker-build-time-env-values/
2020/11/04(水) 03:46:47.92ID:QtKCHGIC
そういうこと。仮想マシンがあるのに
わざわざDockerでやる必要がない
2020/11/04(水) 03:47:05.33ID:QtKCHGIC
DockerはDockerの目的にために利用するのがいい
2020/11/04(水) 03:57:36.50ID:UuvmniCF
でもDockerの方がGUI無い分軽いじゃん
636login:Penguin
垢版 |
2020/11/04(水) 04:10:56.90ID:7tuD0WTP
>>620
あと、この使い方は最初の一発目位は良いけど、運用が進むとそのうちexportされたetcやvarに
依存するようになって、ホストAで動いていたものがホストBでpullすると動かないとか、
コンテナの最大のウリだった可搬性も消えてなくなる気がする。
・・・まあ、VMで運用してメモリ食うことが問題なら、メモリ増やすことが解決策であって
privilegeにしてシステム全体をリスクに晒してまでコンテナ化して解決しよう、というのは
ちょっと理解し難いな。
2020/11/04(水) 08:25:33.86ID:8vCtX8KM
>>628
>インフラの構築手順をコード化して共有するという、コンテナ化の元の理念

コード化するということは、意図したとおりにエラーなく進行するかいわばデバッグが必要になると思う。
おっしゃるとおりそれを共有するなら一回のデバッグの努力に意義があるけど、
自分でコンテナとそのイメージを構築するだけなら、
sshログインしてコンテナ内で直接構築作業すれば楽に思う。
共有しない構築手順のコード作成は労力がめんどうくさくなる。
2020/11/04(水) 08:30:52.94ID:8vCtX8KM
>>636
>運用が進むとそのうちexportされたetcやvarに依存するようになって、ホストAで動いていたものがホストBでpullすると動かない

運用が進む前から、最初から、ボリュームに逃したetcやvarに依存しているよ。
もちろん、別のホストでコンテナを動作させるには、そのコンテナのイメージと、ボリューム内容、そしてrunするためのワンライナーが必要になる。
それでも、ホストマシンに直にシステム構築するよりもはるかに可搬性が高いと思う。
万人向けに共有する場合であればおっしゃるとおり、可搬性は悪いと言えると思うけどね。

コンテナを削除しても残り続けるボリュームという概念が存在するとは、
Dockerはボリュームに逃した内容(etc,varなど)に依存するコンテナがあっても仕方ないと考えているのではないかと思う。
2020/11/04(水) 08:33:48.04ID:8vCtX8KM
>>633 >>634
Dockerの原理主義ってどうして多いんだろう
仮想マシンも、LCXも、Dockerコンテナに劣るところがたくさんある。
LCXはコンテナの削除などの扱いがディスクコピーにかかる時間を要するために非常に遅いらしい。
2020/11/04(水) 08:38:36.55ID:8vCtX8KM
>>636
>運用が進む
運用が進むとはいっても、最初に構築したコンテナをイメージに固めるよ。
ただ、アプリのためのコンフィグファイルはコンテナのetcやvarなどに保存されるので、
その書き換えを目的としてそれらのディレクトリはボリュームに逃がしている。
etc全体とか、var全体にするよりも、もっと局所に留めるのが良いかもしれないけどね。

以後は、そのイメージからrunするようにする。>>628さんのいうような構築手順はコード化していないけど、
構築されたアプリケーションはイメージという形で維持しつづけるよ。
641login:Penguin
垢版 |
2020/11/04(水) 09:25:01.57ID:1buxXrD8
IaC全くしてないレガシーなPHPのシステムをDocker+ECSに移行なら昔やった

でも、本番でバインドマウントしてるのはアップロードされたファイルだけだな

設定は環境変数から取得するようにして
アップロードされたファイルなど一部だけをバインドマウント経由でEFSに保存する
他は全てnginxやphpのイメージに予め入れておく

ログは標準出力経由で全てコンテナのログへ
DBは元から別サーバー

ローカル開発環境ではUnisonでphpファイルを同期
開発機のphp入ってるディレクトリを丸ごとマウントでも良いか、このシステムは肥大化してて遅いのでUnisonを使用
2020/11/04(水) 09:29:46.18ID:sMNwaZ5l
俺は横着なのでDockerfileが構築手順書がわりになる方が便利
それがなけりゃlxc使う(かつては使ってた)

docker runも--rm付けて毎回クリーンに起動するのが性に合う
無論ログやdbファイルはボリュームで外部化するけど
2020/11/04(水) 10:03:23.77ID:eFolKj+u
>>626
直接マウントするのはハードウェア1つにつきコンテナ1つだけ
マウントしてるコンテナが他のコンテナにサービスとしてファイルアクセスを提供する
排他制御とかもその1つのコンテナが全部引き受ける
2020/11/04(水) 10:13:53.42ID:c69K63Cq
>>636
dockerに限らずIasCって必ずしもコストパフォーマンスがいいとも限らんからな
自動化の制御が複雑になるなら手作業で設定してコミットしちゃったほうが簡単だって考え方は十分ありだと思うよ

IasCに疲弊してる企業が、よくよく考えたら本当に欲しかったものはサーバーの状態をexp impする機能だった
2020/11/04(水) 11:06:14.87ID:8vCtX8KM
>>643
ホストディレクトリをマウントしているコンテナが、
他のコンテナにサービスとしてファイルアクセスを提供するには、
XFSとか、Sambaとか、排他制御ができるというオンラインファイル共有サービスを公開するということですか。

なるほど、じゃあ、ボリュームをマウントしたコンテナが、
それらの共有サービスを公開すれば、他のコンテナでもボリューム内容を共有できますね。
2020/11/04(水) 11:10:18.58ID:8vCtX8KM
>>644
>IasCに疲弊してる企業

Docker原理主義者の言うことを鵜呑みにしたのかしら
アプリの設定ファイル作成をコード化するなんて頭おかしいとすら思えてしまった。
2020/11/04(水) 11:13:28.47ID:QtKCHGIC
>>645
オンライン共有サービス? ストレージサービスとかいう名前でいいだろw

アプリ用コンテナとデータベース用コンテナは分けて
それぞれコンテナ=1サービスにしろっていうのはそういうこと
2020/11/04(水) 11:14:58.00ID:QtKCHGIC
>>646
それはあなたの感想であって、意見や主張は何も含まれてないですね
649login:Penguin
垢版 |
2020/11/04(水) 11:38:17.56ID:g/DLzKYE
最初からDocker前提で書いてればそんな難しくはない
レガシーなシステムを大量に抱えてたら大変
650login:Penguin
垢版 |
2020/11/04(水) 12:24:20.61ID:8vCtX8KM
>>647
でも、データベースの場合は、SQLコマンドのやり取りだけなので、データベースのデータファイルを直接オンラインストレージサービスで共有する必要はないよな。

排他制御を行うためにストレージサービス(XFS, samba)を使う場合は、ファイルレベルでの取り扱いが必要な場合だけだよね。
2020/11/04(水) 12:25:28.53ID:mkPVUBW6
レガシーの移行はいっぺんにやろうとするな
VM、LXC、systemdコンテナ、Ansible、Chefなどを使って段階的に移行すべし
そもそもdockerに移行する意味があるのかはよく考えたほうがいい
652login:Penguin
垢版 |
2020/11/04(水) 12:31:03.62ID:8vCtX8KM
>>647
でも、そもそもどうしてコンテナには1サービスしかおいたら駄目なのか?

例えば、名前解決させるのにdnsmasqデーモンが別途必要だとすると、これで複数サービスになってしまう。

アプリケーションという概念は、様々なサービスの組み合わせが本質だから、可搬性を考えても、それらをワンコンテナに組み込むのが自然だと思う。

即ち、データベースとwebサービスは同一コンテナにしてもよいでしょということになる。
653login:Penguin
垢版 |
2020/11/04(水) 12:34:52.88ID:8vCtX8KM
>>647
ストレージサービスだと、iSCSIも含んでしまう。
排他制御ができるファイル単位サービスということで、オンライン共有サービスと言った。
2020/11/04(水) 12:38:00.10ID:3mo/cajL
>>626
ホストの同一ディレクトリを複数コンテナでマウントするだけでしょ
排他もかかるよ
2020/11/04(水) 12:41:03.59ID:5mpefc2R
>>652
その考え方で概ね正しいよ

好例としてGitlabのオフィシャルコンテナも1コンテナにすべてのサービスを詰め込んで1コンテナ:マルチサービスで動かしている
そして内部的な構成管理ツールとしてChefを使っている
これは1コンテナ:1プロセスという無意味なプラクティスには反するが現実として非常にうまくいってる

ただしこの構成だと特定のコンテキストやレイヤーを抜き出してそれだけスケールアウトするのが難しくなる
デメリットはせいぜいそれぐらいしかない
2020/11/04(水) 12:45:25.28ID:3mo/cajL
よく言われるのは1プロセスじゃなく1サービスだろ
WebとDBで完結して1サービスと見なせるなら分ける必要ないよ

Webを複数にして負荷分散等する予定があるとか
DBをデータマート的に多目的に使う奈良分けた方が柔軟だろうが
657login:Penguin
垢版 |
2020/11/04(水) 13:10:06.70ID:g/DLzKYE
mysqlとかphpmyadminとか既存のDockerイメージあるじゃん?
なのにわざわざ苦労して手動インストールして
1つの複雑なDockerイメージにする理由がない
2020/11/04(水) 13:26:36.97ID:QtKCHGIC
>>652
> 即ち、データベースとwebサービスは同一コンテナにしてもよいでしょということになる。
する理由がない

複数コンテナを結合できるのに、一体化させる理由がないんだよね
複数コンテナをつなげるのは簡単だが、一つになってるものは分離できない
2020/11/04(水) 14:17:42.89ID:5mpefc2R
・複数のコンテナをオーケストレーションしないと使えないサービス
・コンテナ1個動かせばOKなサービス

どっちが楽なのかは自明だろ
2020/11/04(水) 14:18:38.55ID:5mpefc2R
更に既存資産があれば作るのも楽々だ
わざわざ労力をかけてDockerfileに書き直す?
ハァト…無駄な努力
661login:Penguin
垢版 |
2020/11/04(水) 14:21:20.57ID:1buxXrD8
>>659
docker -composeも使えない猿未満の方?
662login:Penguin
垢版 |
2020/11/04(水) 14:31:08.78ID:1buxXrD8
DBは本番だと別サーバーな事も多い
メインのDockerイメージに含まれてても容量が大きくなって邪魔なだけ

DBは自分で用意するから余計なお節介はやめろ

DBだけAWS RDS使いたければ、
元から別コンテナだったら本番で構成に含めなければ済む話
なぜsupervisordとか使って複雑にする必要がある?
2020/11/04(水) 16:03:30.21ID:ZKU6KPhr
流行ってるからでぇ〜すwww
たいがいこんなもんだろ
2020/11/04(水) 17:44:02.78ID:5mpefc2R
>>661
なぜ使える使えないという個人のスキルの話に脱線するのか意味不明だよ君

dockercomposeを使わなくても簡単に動かせるならそちらのほうがいい
より簡単な方はどっちなのか?
答えは誰でもわかる、単一コンテナのほうが簡単
2020/11/04(水) 17:46:32.48ID:5mpefc2R
>>662
ケースバイケース
既存資産があるなら1つにまとめてしまったほうが楽な場合がある
Gitlabのように戦略的に単一コンテナを選ぶ場合だってある
何でもかんでも分割すりゃいいってもんじゃない
2020/11/04(水) 17:49:51.64ID:YAhpIihL
>>664
論理的じゃない

簡単に動かせるならそちらのほうがいい・・・とは限らないだろ
2020/11/04(水) 17:50:49.68ID:YAhpIihL
>>665
分割したほうが再利用しやすいという話だ
2020/11/04(水) 17:54:01.59ID:5mpefc2R
>>666
いやいや
同じ機能が手に入るなら簡単であればあるほどいい
難しい構成が許されるのはそれに見合う目的が必要

つまりデフォルトは限りなくシンプルに簡単に
細かくチューンナップしたいなら難しい構成を許可する
という順番がある
最初から難しい構成を押し付けるのはクソ製品
2020/11/04(水) 17:55:15.65ID:YAhpIihL
> 同じ機能が手に入るなら簡単であればあるほどいい

自分で答え言っちゃってるわなw

「同じ機能が手に入らない」ので
言ってることが論理的ではない
2020/11/04(水) 17:57:50.83ID:5mpefc2R
>>667
そうとも限らない
Gitlabコンテナは世界中で再利用されている
再利用するのにまったく困ることがない
もし仮にGitlabコンテナを構成するサービスが別のコンテナになっていたらオーケストレーション構成を考えるのが面倒で再利用に余計な手間がかかってしまう
2020/11/04(水) 17:59:06.99ID:YAhpIihL
× Gitlabコンテナは世界中で再利用されている
○ GitLabサービスは世界中で利用されている

一番簡単なのは GitLabサービスなのだ
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況