探検


Docker Part3

レス数が900を超えています。1000を超えると表示できなくなるよ。
1login:Penguin
垢版 |
2019/03/08(金) 14:40:20.55ID:VDOvuQ0J
LXCを使った軽量仮想環境。
これからの動向が気になるところ。
情報共有しましょう。

http://www.docker.io/

前スレ
Docker Part2
https://mao.5ch.net/test/read.cgi/linux/1506574845/
2020/07/21(火) 08:36:51.02ID:nXYHdseE
>>827
どちらもボリューム。データの保存先のパスが違うだけって知ってる?
Dockerサーバー上の特定のパスに保存するか
Dockerが用意したパスを使うかの違い
2020/07/21(火) 09:34:41.28ID:+NBX9hi+
ホストマウントはホスト環境への明示的な依存なので、どうしても必要でなければ避けてvolumeを使うべき
volumeも内部的にはホスト環境に依存してるといえばそうだけど、抽象化・隠蔽されているのでホストマウントよりBETTER
実例として、Docker for Windowsでのパーミッション、リモートエンドポイントへのコマンド実行、などでvolumeを使用していれば避けられたトラブルが結構あった
2020/07/21(火) 10:07:02.11ID:nXYHdseE
つまりはいろんな種類のホスト、例えばWindowsやMacでも使いたいなら
Docker上のボリュームを使えってことだな。

Dockerイメージ自体は同じものを使える。
必要に応じてDockerのボリュームを使おうがサーバー上の
パスを使おうが自由に選択できる。

だが相対パスを使えばいいだけじゃないか?
2020/07/21(火) 10:23:04.25ID:iuc4a5Mi
相対パスでマウントできたっけ
2020/07/21(火) 11:16:17.36ID:ZxJULecG
相対パスを変換するだけやろ
2020/07/21(火) 11:16:50.09ID:ZxJULecG
docker-composeはそれを自動でやってくれる
2020/07/21(火) 11:18:02.84ID:ZxJULecG
そもそもDockerのクライアントがどんなOSかなんて関係ない
Dockerはサーバーで動くし、DockerはLinuxでしか動かない
2020/07/21(火) 11:43:13.56ID:+NBX9hi+
>>832
その相対パスが存在するか、適切なパーミッションを持っているか、といった条件はホストへの依存性となる
基本的にホストへの依存性が少ないほどトラブルは減る
2020/07/21(火) 11:54:51.20ID:+NBX9hi+
>>829
docker runで全てが解決するならdocker execは存在しない
docker runはコンテナ外部で解決可能なジョブの実行に適している
docker execはコンテナ内部で行う必要があるジョブのために存在する
2020/07/21(火) 17:20:28.68ID:rF6lL3p5
問題は Windows と Mac でボリュームを使うとファイルシステムの変換が起こるのでとても遅いということですね
2020/07/21(火) 17:24:19.41ID:cvaypvgc
>>838
だからdocker execは主にデバッグ用だって
通常の運用時には使わないもの

コンテナ外部で解決可能とか何のことを言ってるんだかさっぱりわからん
docker runとdocker execで実行できることは全く同じ
違いはdocker runはメインの処理を行うもので、
docker execはメインの処理を行ってる最中に乗り込んでデバッグするもの
2020/07/21(火) 17:32:03.04ID:iuc4a5Mi
runで常時起動してるコンテナに
例えばcronからexecでジョブ実行してもいいと思うがな
2020/07/21(火) 19:56:43.47ID:1Ck3nt75
kubectl exec 経由なら、管理用のコンソールが欲しいときにわりと使ってる
2020/07/21(火) 20:04:49.86ID:5ttvOiMf
>>840
全く違うよ
運用ジョブには大まかに分けてリモート実行可能なものとローカル実行のみ可能なものに分類できる

コンテナの外で解決可能なジョブはこの分類で言うとリモート実行可能なジョブに当たる
具体例はデータベースのバックアップ、バグデータの修正など
データベースコンテナとは別にジョブ専用のコンテナを同じネットワークでrunすれば良い

コンテナの外で解決できないジョブはローカル実行の可能なジョブにあたる
具体例はGitlabのバックアップ(gitlab rake)コマンドなど
ローカルで実行される前提のコマンドはdocker execで実行するしかない
2020/07/22(水) 00:03:46.48ID:2kFCswWG
Dropboxにバックアップするのが楽だからホストのボリュームがいいと思ってたけど
Dockerのなかでボリューム作ったほうがはまらないってことですね
勉強になりました
2020/07/22(水) 06:37:22.77ID:DmDy0NhW
>>843
なんか使い方がおかしいな
まさかDockerコンテナの中に永続的な情報を入れてるんじゃないだろうか?
永続的な情報はボリュームに入れるんだぞ
2020/07/22(水) 06:39:34.85ID:DmDy0NhW
>>843
> ローカルで実行される前提のコマンドはdocker execで実行するしかない
何度読んでも全く理解できん
なんでだよ

コンテナの外で解決できないジョブはローカル実行の可能なジョブにあたる
ローカル実行の可能なジョブはコンテナの外で解決できない
と話をループさせてるだけで全く説明してないよ
2020/07/22(水) 08:51:30.32ID:4XcuGSJO
>>845
例として運用ジョブとしてポピュラーなバックアップを挙げたが、今の話題と永続化は別の問題だ
2020/07/22(水) 09:22:02.54ID:4XcuGSJO
>>846
わからないなら、わかるまでよく考えるしかない、としか言えないな
2020/07/22(水) 09:35:40.02ID:ILpdMsPa
では無いということで決着
2020/07/22(水) 09:56:11.99ID:8t2ogVS3
イメージ開発者など実際に運用までしない人には確かに要らない機能だと思う
2020/07/22(水) 12:32:30.91ID:0mhEikFA
イメージ開発してる人は自分でイメージつくからね
今あるイメージでなんとかしなきゃで
バッドノウハウ溜め込む運用とは考え方が違う
2020/07/22(水) 13:10:29.72ID:TaKEPsBL
で、工数がかさんで、メンテナンス範囲が広がる、と
既存のツールセットをうまく使う、ということもできないと後々つらくなる
2020/07/22(水) 13:17:10.14ID:TaKEPsBL
execでコマンドうちゃいいだけなのに、わざわざ工数をかけてメ対象を増やして、アタックサーフェスを広げて、何がしたいのかね一体
2020/07/22(水) 16:09:20.10ID:hHBoQuqj
>>853
よりシンプルになる
2020/07/22(水) 17:21:04.37ID:TaKEPsBL
>>854
execのがシンプルですけど
2020/07/24(金) 11:28:30.42ID:9ctQO3NL
ボリュームも好きなように使えばよかです。
2020/07/24(金) 16:08:44.19ID:PGdrq6O1
データベースはdockerの中にボリュームつくって
htmlとか静的ファイルはホストにボリュームつくるのがベストと考えてるんですが

メリットとデメリットはよく分かりません
2020/07/24(金) 18:36:20.59ID:wNiJOAd7
せっかくDockerのおかげでリリースが簡単になったのに、
ホストに静的コンテンツをリリースするんじゃ元と変わらない、
どころか静的コンテンツとコンテナでリリースの手間が余計に増えてしまう

静的コンテンツはVOLUMEを使わないでイメージに固めてしまうのが簡単
2020/07/24(金) 18:44:01.00ID:KgUsH74f
>>857
> データベースはdockerの中にボリュームつくって
> htmlとか静的ファイルはホストにボリュームつくるのがベストと考えてるんですが

どちらでも作るDockerイメージは同じ
2020/07/26(日) 11:46:33.02ID:ZKCP3mGq
ホストからボリュームのマウントってできるんですか?
ホストとDockerか同時に参照して読み書き
2020/07/26(日) 11:53:37.27ID:zOThrt4A
>>860
それが指定したディレクトリをボリューム化して使う方法だろ
2020/07/26(日) 12:41:37.77ID:KbVs3Pw7
-v $PWD/:/home
とか?
2020/07/26(日) 14:27:05.43ID:LYKyG3mp
-vって非推奨じゃないっけ
2020/07/26(日) 19:10:43.31ID:xwiBJJgr
そんなわけねーだろあほか
2020/07/26(日) 23:10:22.02ID:YmgaEoJ6
>.>843が理解できない人が理解できない。。
docker execがデバッグ用に使うものって・・・なにそれw
2020/07/27(月) 15:39:45.25ID:16MZ7SLt
-vが非推奨じゃなくて--mountが推奨されてるだけか
ってことは今後-vが非推奨になることもありえるな
2020/07/27(月) 16:17:45.47ID:CekD5d56
ない
2020/07/27(月) 21:43:15.69ID:16MZ7SLt
https://docs.docker.com/storage/bind-mounts/#choose-the--v-or---mount-flag

でも書いてあるね
2020/07/28(火) 09:06:50.60ID:Eo000t12
まあブイって分かりにくいしなボリュームなんだろうけど
2020/07/28(火) 14:33:12.71ID:neJtwKTj
/htdocs/public_html/wordpress
/htdocs/public_html/joomla

サイトの中で複数のCMSを動かしてるのですがこの場合
コンテナはapacheなどのwebサーバを起動して
entrypointでwordpressとjoomlaをgit cloneするのが良いでしょうか?
2020/07/28(火) 14:54:37.04ID:m4hPL3wS
>>870
まず最初に何のためにDockerを使うのか
目的をいえ
2020/07/28(火) 17:25:06.85ID:66gKFktJ
流行だから
2020/07/28(火) 19:53:47.19ID:0ejo3GGx
wordpressとjoomiaをpullするのがいいと思うよ。
2020/07/28(火) 22:42:13.49ID:nHx7byYs
どういう問題を解決したいのかを理解してないで
Docker使おうとするからわからんのだ
875870
垢版 |
2020/07/28(火) 23:16:18.39ID:neJtwKTj
joomlaからwordpressのapiを使いたいのです
2020/07/29(水) 02:36:49.88ID:1DD16e/3
>>875
1.ホスト側に両方のサービスを登録しておく(動作確認用)
127.0.0.1 wordpress
127.0.0.1 joomla

2. joomla側にwordpressのアドレスを登録しておく

172.18.0.x wordpress とか。

3. joomla側からWPのAPIたたく。

http://wprdpress/wp/v2/posts?status=draft

おわり。
2020/07/30(木) 02:15:11.89ID:eMYOlHCU
マックユーザーは知ってる単語を総動員して俺スゲーアピールするからな。
意味は滅茶苦茶。
2020/07/30(木) 13:12:56.80ID:OjTtmOha
Mac ユーザーはどれですか?
2020/08/02(日) 01:04:36.78ID:a2KL0hDN
無料でプライベートリポジトリが持てるとこありませんか?
2020/08/02(日) 10:54:46.95ID:gLkvbaRS
Gitlab.com
2020/08/04(火) 14:57:23.41ID:r4gffBIv
GitHub
2020/08/06(木) 08:39:59.14ID:83LhEmMR
>>877
は誤爆ね。
ARMマックのスレ住人のこと。
2020/08/06(木) 18:43:11.69ID:3qQCQ04+
docker engine apiに認証認可を加えるプラグインはあるか?
docker swarmクラスタを複数のチームで共同利用してる
作成したリソースを他人に削除されないように保護したいんだがそういうのは難しいかな
2020/08/06(木) 19:52:34.99ID:NogDVngy
https://docs.docker.com/engine/extend/plugins_authorization/
とかは?
2020/08/10(月) 21:37:54.41ID:7+E1pOJx
1日で〜のDocker本買ったけど後半の章雑すぎて購入して損
いいことも書いてあるから全く参考にならないってわけじゃないんだけど
後半からtypoが異様に多い
尼損のレビューがヤサクラに見えてしまう
買うなら初版はおすすめしない
2020/08/10(月) 21:39:58.83ID:7+E1pOJx
チャプター5はDockerfileのサンプルコードが入ってなくて動作確認できないとかね
サンプルコードなら出版社からダウンロードできるが、本を読み進めてできるよう書いてほしかった
2020/08/10(月) 21:42:56.42ID:7+E1pOJx
さわって学ぶ〜のほうはレビューついてないが初心者にはこっちがわかりやすかった
この本を読んでから、1日で〜の本を読むと理解力が進むかな
2020/08/10(月) 22:19:03.56ID:UKFyAkrv
まず、たった一日でDockerとKubernetesが身につく訳が無い。
2020/08/10(月) 23:32:42.88ID:A61ymjf1
なんとなく使うぐらいなら1日もいらん
2020/08/11(火) 02:02:40.95ID:/umJrRzE
まあエアプならそう言えるけどな。
2020/08/11(火) 06:14:32.10ID:ZlYpnHkh
アプリケーションコンテナがどういう問題を解決するツールかってのを
ちゃんと理解してる人なら1日もいらんだろうが
大抵の人はコンテナって何?から入るので無理
2020/08/11(火) 13:07:02.70ID:U49UUAfb
ネットワークの使い方がよくわからないんだよね
同じネットワークに所属するコンテナ同士はお互い通信できるけど
本番ではlocalhostとして接続したいからネットワーク名で接続し合うのはなんか違う
2020/08/11(火) 17:47:50.49ID:tAVKMbGD
>>892
> 本番ではlocalhostとして接続したいからネットワーク名で接続し合うのはなんか違う
どこからlocalhostでつなぎたいと言ってるんだ?
コンテナ同士はコンテナ名(コンテナのホスト名)で接続するものだ
localhostで接続するのはホスト(Dockerを起動してるマシン)から特定のコンテナに接続するときだけだ
そして外部マシンからはからはホスト名(Dockerを起動してるマシンのホスト名)で接続する
2020/08/11(火) 18:02:58.17ID:tAVKMbGD
あとコンテナから接続先のコンテナは(一般的には)設定変更できるように作るもんだぞ
多分それがわかってないんだと思うが

例えばそのコンテナがWordpressだったとして
接続先のMySQLはコンテナを使うかもしれないし
AWSやGCPのMySQLを使うかもしれない

「コンテナ同士がお互いに通信できる」場合の通信相手のホスト名は変更可能にしておく
通信先ホスト名はコンテナを起動するときに環境変数などで指定するのが一般的
イメージに埋め込んでしまったら、同じイメージを使えなくなるからね
2020/08/11(火) 18:08:55.02ID:tAVKMbGD
例えばWordpressを起動する wordpress.exe コマンドがあったとして
そのWordpressはおそらくどのポート番号で待ち受けするか?という --portオプションや
どのMySQLに接続するか?という--db-addressというオプションを持っているはずだろ?

それと一緒なんだよ。 dockerで起動するときも
docker run wordpress --待受ポート番号 --接続先データベースサーバー
のような感覚

Dockerイメージ=一つのアプリとして考える

「同じネットワークに所属する」というのはどちらかといったら便利機能
本来は外部に立てたデータベースサーバーへのIPアドレスを指定する所を
コンテナにつけた短いホスト名で簡単にアクセスできますよってだけ
2020/08/11(火) 19:57:48.11ID:U6TkWWEF
長い
12 factor appでググれ、で済む話だろ
2020/08/12(水) 01:05:56.62ID:695OsXNm
12 factor appにコンテナの話は書いてない
読み直してこい
2020/08/12(水) 08:42:48.33ID:ywxaxJOF
DNS サーバーがhostsで名前解決するのはどうかな?
2020/08/16(日) 00:21:18.95ID:61ueIM5k
コンテナAの/tmp/time.txtを、コンテナBから読み込みたいんですが
これはコンテナ同士でボリュームを共有しないと見えないでしょうか?
2020/08/16(日) 00:30:48.19ID:xu+Ov6hc
NFSでマウントすれば?
2020/08/16(日) 00:32:48.42ID:GIuDy0WK
これからDocker入門する初心者ですがWindows上でも、MacでもDocker上のコンテナは同じ環境に出来るので、OSを意識しなくて良いというのがメリットでしょうか?
2020/08/16(日) 01:19:01.37ID:28Ktyu28
はい
2020/08/16(日) 02:39:02.81ID:eqqfHYzC
>>900
それはアホなやり方です
2020/08/16(日) 20:30:18.18ID:ksz6M+9p
>>892
ネットワークがよくわからんは同意。
k8sにしても理解に苦しむというか、もう少し工夫できんかったのか不満は多いな。
2020/08/16(日) 20:38:31.58ID:+jHSMkRj
>>904
Dockerの役割をそもそも理解してないんだと思う
2020/08/16(日) 21:09:41.38ID:ksz6M+9p
>>905
dockerの理解とネットワークは関係ないね。
役割を理解したからネットワークが理解できるわけじゃない。
2020/08/16(日) 21:18:40.60ID:+jHSMkRj
>>906
Dockerの役割っていうのは、そういうネットワークを仮想化して
意識せずに使えるようになってるってことだよ

Dockerの具体的なネットワーク実装を意識してしまうのは
まだ抽象化して考えれるようになっていない
2020/08/16(日) 21:34:58.56ID:ksz6M+9p
>>907
>>892がそもそもいっているのは「ネットワーク名で接続し合うのはなんか違う」
だから、「Dockerだから(したくないのに)ネットワークを意識する」と、言っている。
実際クラスタリング組むとPodを管理するネットワークとコンテナ通信用のネットワーク
とかバラバラなので、余計に意識はする。
それを何とかでできんかったのか?と、俺は言っている。
docker使ってネットワークをあまり意識する必要がないのは1台で動いているときだけ。
そして本番機が1台で動くことは滅多にない。
2020/08/16(日) 21:42:32.06ID:+jHSMkRj
>>908
「ネットワーク名で接続し合う」っていうのが意味不明
それぞれのDockerはホスト名で接続し合う

その接続先のホスト名というのは、Dockerコンテナ起動時に指定した
(同じネットワークに属している)シンプルな名前かもしれないし
外部サーバーのホスト名かもしれない

いずれにしろ、Dockerコンテナ起動時に指定するもの
同じネットワークに属していれば、ホスト名がシンプルな名前でよくなるというだけ
2020/08/16(日) 21:53:41.94ID:fGT/iEH6
全部localhostにしたらしたで余計わけわからなくなりそうなもんだが
物理ネットワークを意識せずに仮想ネットワーク上に構築できるならそれでおk
2020/08/16(日) 22:01:18.76ID:ksz6M+9p
>>909
わからないなら、しったかで答えるなよ。
https://docs.docker.jp/engine/userguide/networking/dockernetworks.html#id4

デフォルト・ネットワーク以外は「ネットワーク名で接続し合う」のは当然だろ?
2020/08/16(日) 22:11:20.78ID:+jHSMkRj
>>911
それ読んだのにネットワーク名で接続し合うなんて読むのか?
同じネットワークに属させるだけ
同じネットワークが複数のホストにあっても構わない
だからDockerコンテナからはネットワーク名なんて意識する必要がない
起動時のオプションに過ぎない
2020/08/16(日) 22:13:59.08ID:+jHSMkRj
>>910
何の話をしてるのか知らんが、
物理・仮想マシンでアプリ(Dockerコンテナ)を起動した時
同じマシンからはlocalhostでアプリ(Dockerコンテナ)に接続でき
外部からはその物理・仮想マシンのアドレスで接続するだろ
そこは単純なアプリと何も変わらんのだが
914login:Penguin
垢版 |
2020/08/16(日) 22:25:58.43ID:ksz6M+9p
>>912
同じネットワークに属した結果、そのネット―ワークで接続してるだろ。
ブリッジであれ、オーバーレイであれ、自分で作らなければならないんだから
「起動時のオプションに過ぎない」訳が無いだろう。
2020/08/16(日) 22:33:18.42ID:+jHSMkRj
>>914
どこの話だよ。引用してみ。
2020/08/16(日) 22:50:24.43ID:+jHSMkRj
あー、なんとなくわかったわw
「ネットワークを作る」っていうのを聞いて
ネットワーク設定を変更してるんだなって思ってるんだな

まあ実際にはそういう事をやってるんだろうが意識することではない
知らなければいけないのは、グループを作って
其のグループに属していれば、普通に通信できるってだけの話

変に内部の仕組みまで理解しなければいけないって考えるから
理解できないんだよ。単に使う分には必要のない知識

使うときに必要な知識と、トラブルシューティングに必要な知識は分けて考えれ
普段使いしているときはトラブルシューティング用の知識は使わずに
Dockerで抽象化されてるものだけを考えればいいんだよ
脳容量が少ないんだから混ぜるな。混ぜるからいっぱいいっぱいになって
脳がついてこれないんだよw
2020/08/16(日) 22:53:11.82ID:wSm45jpn
>>913
コンテナ同士の通信の話では?

発端のレスは>>892
その後のレスの文脈まで踏まえるとPOD内通信と同じようにPOD間の通信もlocalhostで繋ぎたいってのがネットワークわからん派の主張
それに対して全部localhostで繋いだらわけがわからなくなるってのが俺の主張
918login:Penguin
垢版 |
2020/08/16(日) 22:55:54.77ID:ksz6M+9p
>>915
892の話してるんだろ。
「本番ではlocalhostとして接続したい」なんて言っているのは単に開発機から
本番機に移行する時の良くある無理解と思われるので、そこは触れない。
が>>892が、「ネットワークの使い方がよくわからないんだよね」と言う結論に至るのは
結局Dockerのあのダルイネットワークの仕組みのせいだろう。
2020/08/16(日) 22:58:20.21ID:+jHSMkRj
話戻るけど、これほんと意味不明なんだよね

>>892
> 本番ではlocalhostとして接続したいからネットワーク名で接続し合うのはなんか違う

どこから「localhostとして接続したい」なんて要件が出てきたのやら

Docker使わずにnginx起動するとするだろ?
このnginxに「localhostとして接続したい」なんていうか?

いうなら同一マシンからなら「localhostで接続できます」だろ
違うマシンからならホスト名で接続するし
同じマシンならlocalhostで接続する。
このlocalhostもホスト名の一つでもあるんだがな

(同一マシンという)条件が揃えばlocalhostで「接続できます」という話であって
本番ではlocalhostで「接続したい」なんて要件はありえないんだが
2020/08/16(日) 22:59:08.79ID:+jHSMkRj
>>918
なんで引用してって書いたのに、引用しないの?
921login:Penguin
垢版 |
2020/08/16(日) 23:00:05.84ID:ksz6M+9p
>>920
何の話をしてるのさw?何を引用しろと言っているのw?
922login:Penguin
垢版 |
2020/08/16(日) 23:01:26.08ID:ksz6M+9p
>>920
あー、なんか君の言っていることが分かった気がするよ。
俺はある程度>>892の雰囲気を読んであげてるつもりだけど、
君はまるで読んであげてないんだろうね。
2020/08/16(日) 23:03:53.00ID:+jHSMkRj
>>918
よくわからんのはバカだから
Dockerを理解してないからだろ
2020/08/16(日) 23:05:13.32ID:+jHSMkRj
>>922
勝手に解釈してます。本人が言ったことと違う前提の話を
思い込みでしてますって堂々といわれてもなぁw
925login:Penguin
垢版 |
2020/08/16(日) 23:05:46.12ID:ksz6M+9p
>>923
それに対して俺は「もう少し工夫できんかったのか不満は多いな。」
と感想を言っている。これはDockerの役割なぞとは関係ない。
926login:Penguin
垢版 |
2020/08/16(日) 23:06:50.06ID:ksz6M+9p
>>924
まあいいよ!粘着KYは本当に雰囲気読むのが下手ね!
2020/08/16(日) 23:10:35.52ID:+jHSMkRj
Dockerの役割っていうのは仮想化
仮想化っていうと仮想マシン(仮想機械)のことだと勘違いしてるやつがいるが
仮想メモリと同じ意味の仮想化
実際の物理的なものを隠蔽化して仮想的なものを作り出すというしくみ

Dockerは仮想化を提供することでDocker上で動いているコンテナが
それを動かしてる物理的なインフラ(ネットワーク含む)を意識しないですむようにしている
Dockerコンテナからすればどこで動いてるかなんて意識する必要はないし
動かす方は単にDockerコンテナを起動する時にオプションを与えてるだけ
2020/08/16(日) 23:10:58.23ID:q1N0C8AL
ID:+jHSMkRj
罵倒マウント常習犯
NGしたいからコテハンつけてくれ頼む
2020/08/16(日) 23:11:26.14ID:+jHSMkRj
>>925
Dockerの役割を理解しないで
工夫しろとか言っても的外れにしかならんだろw
レス数が900を超えています。1000を超えると表示できなくなるよ。

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