X



トップページLinux
1002コメント476KB
Docker Part2©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0272login:Penguin
垢版 |
2018/08/01(水) 05:48:16.53ID:rxe3lfEn
動くコンテナのイメージ作るのがアプリエンジニアの仕事なら、結局必要なミドルをアプリエンジニアが入れる事になってそれこそインフラエンジニアの作った本番環境と差異が出てしまうと思うのですが。

まあ新規や中小規模のサービスならそれでも問題無いと思うけど。
0273login:Penguin
垢版 |
2018/08/01(水) 05:52:39.03ID:rxe3lfEn
大きい会社だとIDEしか使ったことがない、CUI触ったこと無いアプリエンジニアとか普通に居りましてですね

まあその程度のアプリエンジニアはいずれ淘汰されると切り捨てるなら問題無いんですけどね。
0274login:Penguin
垢版 |
2018/08/01(水) 06:00:09.93ID:rxe3lfEn
アプリ動かすのに必要なミドルウェアをバージョンも含めて熟知してるアプリエンジニアって相当優秀だと思う。

取りあえずアプリ動く程度に適当にミドル入れまくるアプリエンジニアいるけど、それができるアプリエンジニアすらそこそこ出来る評価なんだけど。
0275login:Penguin
垢版 |
2018/08/01(水) 06:12:59.68ID:eV7ibk3+
>>272
やっぱお前使い方間違ってるわ

答えだけ言っておくね。本番環境と全く同じ環境になる
0276login:Penguin
垢版 |
2018/08/01(水) 06:13:53.34ID:eV7ibk3+
>>274
> アプリ動かすのに必要なミドルウェアをバージョンも含めて熟知してるアプリエンジニアって相当優秀だと思う。

お前の会社の人間が馬鹿だってことかな?
そうなんだろうな。

ミドルウェアのバージョンを把握してないで
どうやってアプリが正しく動くことを保証するのか?

言ってみ
0277login:Penguin
垢版 |
2018/08/01(水) 06:15:57.48ID:eV7ibk3+
コンテナの中にミドルウェアが入ってしまってるのに
どうやってインフラエンジニアがミドルウェアを入れ替えるんだ?
コンテナに手を入れてミドルウェアを差し替えるんか?w
0278login:Penguin
垢版 |
2018/08/01(水) 06:18:28.58ID:eV7ibk3+
というかミドルウェアがなにかもわかってなさそうw
0279login:Penguin
垢版 |
2018/08/01(水) 06:57:46.82ID:rxe3lfEn
え、もしかして自分でミドル入れずにDockerhubに落ちてるミドル入りコンテナ使ってるクチだったりするの?
0280login:Penguin
垢版 |
2018/08/01(水) 06:59:30.64ID:rxe3lfEn
コンテナの中庭ミドルが入ってしまっているのにって、じゃあそのミドルは誰が入れるの?

アプリエンジニアが適当に入れたミドルをそのまま本番に使ってたりするんですか?
0281login:Penguin
垢版 |
2018/08/01(水) 07:01:51.20ID:rxe3lfEn
インフラエンジニアの居ない規模の企業でアプリエンジニアが勉強して開発から本番運用までやってるって言うなら分かるけど。

インフラエンジニアいるのにミドル部分までアプリエンジニアが制御するって問題無いの?

部署をまたいだアプリエンジニア同士で宗教論争はじまってまとまらないと思うんだけど。。
0282login:Penguin
垢版 |
2018/08/01(水) 07:06:15.76ID:rxe3lfEn
最終的にはインフラ分からないアプリはフェードアウトするって意見に異論はないけど、まだその時ではないと思ってる。中小規模やベンチャーは知らない。
0283login:Penguin
垢版 |
2018/08/01(水) 07:40:52.95ID:vZ5iA/aw
>>280
> アプリエンジニアが適当に入れたミドルをそのまま本番に使ってたりするんですか?

なんで適当に入れるんですか?
お前じゃあるまいしw
0284login:Penguin
垢版 |
2018/08/01(水) 07:52:42.75ID:vZ5iA/aw
>>281
お前さ、アプリケーションが動くサーバー作ったことないだろ?
どうせデータベースサーバーのセットアップぐらいしかしてねーだろ?

データベースサーバーのセットアップなんて簡単だもんな
設定ファイルをいじるだけ。そんな簡単な仕事はお前にやらせるよ

で、アプリ開発してないやつが、どうやってアプリケーションが
動くサーバーを作れるっていうの?
あぁ、どうせお前、オープンソースのアプリ動かしてるだけだっけ?w

俺が作ったアプリ、そのアプリが動くのになんのライブラリが必要か言ってみ?
アプリを開発してる俺は当然わかるが、教えないからなw

アプリのコード読んで必要なものを調査するとかやんなくていいよ
俺がコンテナのイメージつくってやっからさ、
お前はそれ動かすだけ。おまえにできないことはやらなくていい
お前はDockerr動くLinuxマシンだけ用意してればいい
0285login:Penguin
垢版 |
2018/08/01(水) 08:09:10.69ID:rxe3lfEn
何をそんなに怒っているの?
0286login:Penguin
垢版 |
2018/08/01(水) 08:12:05.32ID:rxe3lfEn
あなたがよくても他のアプリエンジニアから不満でたりしないの?
あなたのレスみる限り大きな声で周りねじ伏せて自分凄いって思ってるタイプの人に見えますが。
周りは従ってるんじゃなくて腫れ物には触らないようにしてるだけっていうオチじゃないですか?
0287login:Penguin
垢版 |
2018/08/01(水) 09:24:20.09ID:rSD2s4kw
マウント合戦はお腹いっぱい
0288login:Penguin
垢版 |
2018/08/01(水) 10:07:33.31ID:oUHlYMq4
それだけDockerの理解・運用は難しいということだな
俺本読んでもさっぱりわからんかったもん
コンテナがIPアドレスを持つって聞いて、ファッ?ってなったわ
コンテナ=アプリとその動作環境をパックにしたものと
ここで教わったが、アプリがIPアドレスを持つわけないだろう
0289login:Penguin
垢版 |
2018/08/01(水) 10:18:41.57ID:V8uA/puM
containerizedされたアプリケーションならdocker-composeなりkubernetesなりでミドルウェアごと構成管理するのが普通
この場合はインフラ屋の役割は主としてdockerなりkubernetesクラスタの管理になると思うのだけれど

単に共通テスト環境としてコンテナを使っていて, アプリケーションをcontainerizedせずにリリースするとか単体のコンテナとして配布して使う側で上手に組み合わせてねってものならインフラ屋が実動環境に合わせてコンテナ構成をすることもある
Travis CIとかGitLab CIでビルド環境として使うコンテナはこっちの場合が多そう
テスト/開発環境でもdocker-composeかVagrantした方がいいと思うけども
0290login:Penguin
垢版 |
2018/08/01(水) 10:32:58.00ID:V8uA/puM
>>288
UNIXソケットを使わない場合にアプリケーション間のデータのやり取りはTCPやUDPで行われることが多いと思うのだけれど, そうするとIPアドレスがないと困るだろう
特にロードバランシングしていると同一ホスト上でないことが普通なので, ソケットが使えないことが多い
0291login:Penguin
垢版 |
2018/08/01(水) 18:16:15.55ID:vZ5iA/aw
>>286
人間の問題と技術の問題は切り離して考えましょう

俺の周りがどうこうとか聞く必要ないだろ?
お前には関係ない話なんだから。俺の周りが凄くて
全員がDockerを使いこなしていて、誰も文句言わなくても、

「お前の」周りではそうじゃないんだろ?

なら、それはお前の周りでの問題であって。
その問題の原因は人間だって素直に認めればいいじゃないか?

下には下なんていくらでもいるんだから、素人集団には
使えませんと言われても、それ技術となんの関係もないやん
0292login:Penguin
垢版 |
2018/08/01(水) 18:21:54.43ID:vZ5iA/aw
>>288
> コンテナがIPアドレスを持つって聞いて、ファッ?ってなったわ
> コンテナ=アプリとその動作環境をパックにしたものと
> ここで教わったが、アプリがIPアドレスを持つわけないだろう

そう。認識としてはIPアドレスを持ってないと考えていい。
内部の仕組みの話だから。

コンテナ = アプリで、環境の仮想化を行っているため、
そのコンテナ(=アプリ)は自由にサービスを提供するポートを変更できる。

仮にコンテナの中で80番ポートでアクセスを受け付けているからって、
コンテナ(=アプリ)は80番ポートでアクセスを受け付ける必要はない。
コンテナが受け付けるポートは自由に変更できる。
それが「仮想化」で実現している機能の一つ

それを実装するために、内部的にルーティングしているというわけ

Dockerの仕組みに詳しい人はネットワークについても勉強するだろうけど
Dockerを使っている段階では、コンテナがどのIPアドレスを
持ってるかなんて意識していない
0293login:Penguin
垢版 |
2018/08/01(水) 18:23:53.95ID:vZ5iA/aw
>>288
> それだけDockerの理解・運用は難しいということだな

技術職っていうのはそういうもんだよ。
ソフトウェアにおいて技術=知識
知識を得て楽をするか、知識ない人は力ずくで頑張れと
0294login:Penguin
垢版 |
2018/08/01(水) 21:17:15.65ID:rxe3lfEn
>>291
いや、関係あるでしょ。
元々ある程度のリテラシーのエンジニアに使ってもらうこと前提の話をしてるのに、あなたは俺が俺がばっかりで使い手に対する配慮がほとんど感じられない。

さっきもいったようにあなたは腫れ物か、もしくは本当に周りがDockerくらい使いこなせるみたいな優秀なエンジニアばかりの職場で働いてるからそういう考えになるんでしょうね。

せいぜいその職場から振り落とされないようにしてくださいね。
普通の職場で働くと、たぶんあなたは腫れ物扱いされます。
0295login:Penguin
垢版 |
2018/08/01(水) 21:18:23.05ID:/ajt4qwz
なんで喧嘩腰なの?
0296login:Penguin
垢版 |
2018/08/01(水) 21:22:54.23ID:vZ5iA/aw
>>294
> 元々ある程度のリテラシーのエンジニアに使ってもらうこと前提の話をしてるのに、

だから、それ、人間の話ですよね?

技術の話をしてください
0297login:Penguin
垢版 |
2018/08/01(水) 21:27:17.86ID:vZ5iA/aw
ほんとDockerの話しろっていってるのに、
俺の周りの人間は〜馬鹿ばかりだから〜
人間の話ばっかりw
0298login:Penguin
垢版 |
2018/08/01(水) 22:48:53.21ID:gpg7eCuF
なんでこのスレこんなに荒れてるの
0299login:Penguin
垢版 |
2018/08/02(木) 01:28:49.77ID:NqqEoGeq
全く興味ない第三者だが、いちおう荒れた懲罰としてうんこ置いとくな?

    _人
   (  )
   (へ ノ)
 ヽ( ´ 」`)ノ
  (  `ー  )
【いけめんウンコ】
0300login:Penguin
垢版 |
2018/08/02(木) 06:34:51.81ID:rhKXtEAo
そこで働く人間無視して仕事できる訳ないし、やってるつもりなら大した仕事してない。

勝手なことやるなら本当にインフラも含めて別予算で独自にやってほしい。
えらそうな事言って勝手な事やって、結局尻拭いはインフラ側に押し付ける勝手なアプリエンジニア見ると文句の一つも言いたくなる気持ち分かるでしょ。

インフラエンジニア要らないってのは理想。ただ、その理想を妨げる事が多いのが声がでかいアプリエンジニア。
大概やりたいようにやって自分では運用回らなくなって、別の誰かに運用を押し付けて自分はフェードアウトするってのがお決まりのパターン。
0301login:Penguin
垢版 |
2018/08/02(木) 07:40:01.26ID:a1K3N0Xu
>>300
そういう話じゃねーよ

人を持ち出してきたら、どんな結論でも覆せるんだからここで話す意味ないだろってこと

例えばウェブサーバー運用するのにLinuxが適しているとなっても
うちではLinux使える人がいないので、Linuxはだめなんですってなるだろ
Javaが適していてもうちではJava使える人がいないでJavaだめなんです。
COBOL使ってください。ってなるだろーが。

もはや適しているかどうかの話じゃなくなるんだよ。

「Dockerの適している使い方は○○です」って結論した後
心の中で「でもうちでは技術者のスキルが低くて使えるやついないんだよ。」って泣けばいいだろ
他の人には関係ない話だ
0302login:Penguin
垢版 |
2018/08/02(木) 08:13:38.44ID:a1K3N0Xu
>>300
> インフラエンジニア要らないってのは理想。

そんなこと言ってない。アプリエンジニアがやるべきことはアプリエンジニアがやって
インフラエンジニアがやるべきことはインフラエンジニアがやれってだけ

アプリがなんの言語で使ってるかなんて、アプリエンジニアが知っていればいい情報だろ
言語もそうだしアプリ動かすのにインストールしなきゃいけないライブラリやパッケージを、
アプリエンジニアに聞かないでわかると思うか?

インフラエンジニアにはコンテナのイメージ渡すから、それを動かす環境を作ってくれればいい
中が何で動いているかなんか、知ったこっちゃねーだろ?
それとも勝手にディストリやパッケージを適当に入れた挙げ句、ライブラリのバージョンの違いで
動かなかくて、その責任をとってくれんのか?

どうせこういうことすら思いつかなかったんだろ?
だからお前がアプリケーションが動くサーバー作ったことねーだろってわかるんだよ。
0303login:Penguin
垢版 |
2018/08/03(金) 23:40:03.86ID:1yCRuO5i
数日かけてDocker使って個人用のミニアプリ書いたぜ

内容はサーバーのとある情報を、別のマシンからブラウザで
グラフで見れるようにする一種の監視ツール
zabbix や nagios みたいに本格的な物はいらない。むしろおもすぎて邪魔

先に結論から言うと、このアプリを新しいサーバーで動かすには

docker run -d -p80:80 -vなどのオプション --restart=always コンテナ名

とdockerサーバーが動くマシンで、たった一行実行するだけでデプロイは完了する
(docker hubにイメージ置けるのであれば、本当にこの一行で終わり。
置けないならばプライベートレジストリから取ってくるように少し準備がいるだろう)

これは個人用のアプリで1人でやっているが、もしインフラエンジニアに伝えるとすれば、
このコマンドとどんなオプション(環境変数)があるかを伝えるだけで終わり
あとは必要なサーバーにデプロイしてくれるだろう

もしDockerを使わずにインフラエンジニアがデプロイをしようとしたら大変なことになるだろう。

なぜかって?だってこれだけの情報じゃ、どんなサーバーを構築すればいいか
インフラエンジニアにはわからないでしょ?何をインストールする必要があるのか?
なんの言語が必要でどのパッケージを入れておかないといけないのか?
スクリプトのパスは?どんなコマンドが必要なのか?などなど

docker使えば、さっき書いたdocker run〜のコマンドだけで構築できるというのに。
0305login:Penguin
垢版 |
2018/08/05(日) 13:08:10.87ID:FlnPtVfq
>>304
めちゃくちゃ便利やでw

今(個人的に)作ってるのはアプリじゃないんだけど
とあるサービスを特定の用途向けにカスタマイズしたもの

起動時に自作スクリプトで独自フォーマットの簡易な設定ァイルを解析して
サービス本来の設定ファイルを生成してから起動する仕組みで、通常なら/etc/以下にある
設定ファイルをいじらなきゃならないのが、簡易な設定ファイルを書くだけでよくなる

中身は既存のプログラムの組み合わせだけど、同じサービスを提供する
別のプログラムを作ったかのように使える
0307login:Penguin
垢版 |
2018/08/05(日) 21:35:59.80ID:t4Ako3RB
Docker使いこなせる人ってすごいな(皮肉ではなく)
0308login:Penguin
垢版 |
2018/08/05(日) 21:53:21.43ID:9sU0s1Rh
わざわざdocker使わんでもchrootでいいことにdocker使ってる人が結構いる
0309login:Penguin
垢版 |
2018/08/05(日) 22:01:32.35ID:yAw8KkqM
chrootの親戚のGUIなし仮想アプライアンスに情熱を燃やせる謎
別スレではviの話で盛り上がるし日本人はビルジョイが好きなんだな
0310login:Penguin
垢版 |
2018/08/05(日) 22:05:09.77ID:yAw8KkqM
あーGUIまでいってるのか、なるほど
0311login:Penguin
垢版 |
2018/08/05(日) 23:04:52.65ID:NroY7Fy3
>>308
chroot使うぐらいならDocker使うなー

chroot用のディレクトリを準備するのでさえめんどくさい
debootstrapだっけ、懐かしいな。
/procや/devのマウントとかも必要だし。

同じdebianでもDockerだと最小構成で用意されてるから
ダウンロードの時間からして差があるし
誰かがDockerfileのようなものを公開してくれてるわけでもないし

懐かしくてちょっとググってみたけど、
あんな面倒なことやってたのかって思った
0312login:Penguin
垢版 |
2018/08/05(日) 23:08:47.08ID:NroY7Fy3
>>309
自分だけの仮想アプライアンスを簡単に自作できるからねー
同じものを何度もセットアップしてるなら
それが簡単になるので楽だよ

せっかく頑張って構築したサーバーも
HDDが壊れたとかOSのアップデートでおかしくなったとか
古くなってリプレイスで再インストールとかで
やり直しになってしまうのはダルい

一度Dockerでイメージ作ってると
同じことを何度もやらなくてすむようになるからね
0313login:Penguin
垢版 |
2018/08/07(火) 07:54:03.45ID:shK4WVTS
それだけのことならVMや自作rpmでもあんま変わらん…
0314login:Penguin
垢版 |
2018/08/07(火) 08:50:58.74ID:FmqfeUYE
あんまり変わらないから、何倍も簡単なDockerの方が良いよね
0315login:Penguin
垢版 |
2018/08/07(火) 09:01:08.27ID:FmqfeUYE
まあ一応VMや自作PRMが何故Dockerに太刀打ち出来ないかと言うと、

まずVMは仮想マシンなんだ。だから既存のマシンに導入することが難しい
既存のマシン上で動いても、仮想マシン故にネットワークに新たなマシンが登場するのと一緒だし、
NATで動かすならDockerに近い形状になるがメモリリソースを無駄に消費するし起動が遅い。
Dockerみたいにコマンド実行の速度で起動できない

自作RPMはDockerと真逆の考え方だな。実行環境を含めて依存しないようにしてるのに
頑張って他のパッケージとの依存関係を解決しないといけない
適切な依存関係になるように自作PRMを作る大変な作業が待ってる。
0316login:Penguin
垢版 |
2018/08/07(火) 09:01:35.38ID:FmqfeUYE
自作PRMは可搬性がないからWindowsで動かせないってのもあるな
0317login:Penguin
垢版 |
2018/08/07(火) 09:03:06.65ID:FmqfeUYE
ようするに、
1. 既存の○○と同じことができる
2. かつ既存の○○の問題を解決できる
これがセットになってるのがDockerなわけで

1.の既存の○○でもあんま変わらんと言われても
既存の○○は2.の問題があるでしょって話
0319login:Penguin
垢版 |
2018/08/07(火) 11:13:12.25ID:KYfMTuuE
             ___
            / ノ '' ⌒\  
          / ( ● ) (● )\
ドヤーーーーー / :::::⌒,   ゝ⌒:::::\ ーーーーーーー!!!!
        |      ト==ィ'     |
  _,rーく´\ \,--、  `ー'    /
. ,-く ヽ.\ ヽ Y´ /    ー   ´ノ ` ー-、
 { -! l _」_ノ‐′/\― 、  ,−/_|    ∧
. ヽ ゙ー'´ ヽ  / フ \     /ヽ     /ハ
 `ゝ、  ノ ノ  \   ヽ  / /
     _|\∧∧∧MMMM∧∧∧/|_
     >                  <
. | ヽヽ |   _/_ヽヽ |  ヽ|  |ヽ  ム ヒ | |
. ├─  ̄T ̄/  / /  ̄フ| ̄  | ̄| ̄ 月 ヒ | |
. |.     \  / ノ   / |  / | ノ \ ノ L_い o o
0320login:Penguin
垢版 |
2018/08/07(火) 14:30:15.46ID:kww6lavE
一生懸命に覚えたことをレポートにまとめてるんだよ。
見守ってやろうぜ。
0322login:Penguin
垢版 |
2018/08/07(火) 20:10:59.70ID:QJmmm+eF
自分で書かなくてもMuninとかあるで。
0323login:Penguin
垢版 |
2018/08/07(火) 20:28:26.91ID:KYfMTuuE
>>322
知ってる。昔会社で使ってた。
だけどあれじゃ俺がやりたいことを満たせないんだよ
機能は高機能だけど、あそこまでいらない
0324login:Penguin
垢版 |
2018/08/07(火) 20:39:58.40ID:QJmmm+eF
Qiitaにでも書いとけ
0325login:Penguin
垢版 |
2018/08/07(火) 20:42:05.65ID:KYfMTuuE
いわゆるインフラ屋はDockerを使って
ディストリによってパッケージが用意されてるようなものを
Dockerイメージ化するという発想になりがちに思える

つまりDocker使わなくても、普通にパッケージ入れたり
VM使えばいいだろという発想

違うんだよね。Dockerは独自に開発したアプリのために使う
独自に開発したアプリは、誰かが依存関係を
解決したりしてくれないからね

だからアプリが動く環境も含めてDockerイメージにする
そうすりゃDockerさえ動いていれば、簡単にどこでも動くものが作れる
0326login:Penguin
垢版 |
2018/08/07(火) 20:42:24.72ID:KYfMTuuE
>>324  
             ___
            / ノ '' ⌒\  
          / ( ● ) (● )\
ドヤーーーーー / :::::⌒,   ゝ⌒:::::\ ーーーーーーー!!!!
        |      ト==ィ'     |
  _,rーく´\ \,--、  `ー'    /
. ,-く ヽ.\ ヽ Y´ /    ー   ´ノ ` ー-、
 { -! l _」_ノ‐′/\― 、  ,−/_|    ∧
. ヽ ゙ー'´ ヽ  / フ \     /ヽ     /ハ
 `ゝ、  ノ ノ  \   ヽ  / /
     _|\∧∧∧MMMM∧∧∧/|_
     >                  <
. | ヽヽ |   _/_ヽヽ |  ヽ|  |ヽ  ム ヒ | |
. ├─  ̄T ̄/  / /  ̄フ| ̄  | ̄| ̄ 月 ヒ | |
. |.     \  / ノ   / |  / | ノ \ ノ L_い o o
0327login:Penguin
垢版 |
2018/08/08(水) 01:40:00.74ID:H2RB231p
VMはカーネルやデバイスノードがゲストに独立して用意されているからサンドボックスとして安心できる
これらをホストゲストで共有してるDockerは、ライフラインを共有しているゲストハウスみたいなもの
カーネルぶんのメモリ(敷金礼金)は浮くがinit以降のメモリ(賃料)は当然払わなければならない
起動も10秒以下の差
つまりデスクトップならVM常道
0328login:Penguin
垢版 |
2018/08/08(水) 03:48:30.48ID:tyC3gFls
あぁ、またこれな

> 1. 既存の○○と同じことができる
> 2. かつ既存の○○の問題を解決できる
> これがセットになってるのがDockerなわけで

VMでもDockerでもサンドボックスとして安心できる
その上で、VMよりも軽いのがメリットなわけで
0329login:Penguin
垢版 |
2018/08/08(水) 04:00:13.46ID:tyC3gFls
起動も10秒以下の差とかそれで勝負になると思ってるのか?

Dockerは1秒以下
$ time docker run -it alpine echo ok
ok

real 0m0.924s
user 0m0.046s
sys 0m0.031s


メモリ使用量はこんなもん
$ docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
d68483bb9e21 vibrant_raman 0.00% 868KiB / 30.38GiB 0.00% 5.89kB / 0B 0B / 0B 1

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d68483bb9e21 alpine "sleep 1000" About a minute ago Up About a minute vibrant_raman


ディスク使用量も少ない
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine latest 11cd0b38bc3c 4 weeks ago 4.41MB


マシンリソースを無駄にすること無く、サンドボックスを動かせる
0330login:Penguin
垢版 |
2018/08/08(水) 04:18:39.40ID:tyC3gFls
> CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
> d68483bb9e21 vibrant_raman 0.00% 868KiB / 30.38GiB 0.00% 5.89kB / 0B 0B / 0B 1

ちなみにこれ、メモリリミットが30.38GiBとなってる
GPUメモリに1GB使ってて、つまり32GBのメモリを搭載したマシンなんだ

なんで(個人PCなのに)こんなにあるのかと言うと、
6年ぐらい前にOpenStack使ってプライベートクラウドを作るために
たくさんの仮想マシンを起動できるようにとMAXまで積んだんだ
(ちなみにDockerの登場は5年前の2013年)

仮想マシンだと、最低でも1台で数GBは欲しいでしょ?
VM1台で平均2〜4GB割り当てるとして、約10台分。
プライベートといってもクラウドならこれぐらいほしいよね。

でもDockerが登場してプライベートクラウドの熱も冷めた
(本物のクラウドを使うようにしたのでもはやプライベートで作る気はない)
DockerならVM単位での起動じゃなくて、アプリ単位での起動になるので、
メモリは実際に使用した分しか使わず必要なメモリ量もぐんと減った
用途に対してかなりオーバースペックなPCになってしまったよw
0331login:Penguin
垢版 |
2018/08/08(水) 04:26:57.73ID:tyC3gFls
> カーネルぶんのメモリ(敷金礼金)は浮くがinit以降のメモリ(賃料)は当然払わなければならない
あ、ちなみにこれ間違い

仮想メモリ間でのメモリ共有は一部のVMに搭載されているが(セキュリティのためにデフォルトは無効のようだね)
https://docs.vmware.com/jp/VMware-vSphere/6.5/com.vmware.vsphere.resmgmt.doc/GUID-F9111E35-E197-46EC-8350-77827A5A2DEC.html#GUID-F9111E35-E197-46EC-8350-77827A5A2DEC
基本的に仮想メモリ間でメモリは共有されないし、
当然空きメモリも共有されない

2GBのメモリを割り当てたVMは、その中でどんなに小さいプログラムを
実行しようがメモリは2GB使用する

VM(カーネルメモリ + プロセスメモリ + 空きメモリ) VS Docker(プロセスメモリ)

という比較になる。

Dockerだってカーネルメモリ使用するじゃん、なんで右側に書いてないのか?と
思うかもしれないが、ホストのカーネルを共有してるんだからこれで良い。
VMだって同じようにホストのカーネルメモリ書いてないだろ?
0332login:Penguin
垢版 |
2018/08/08(水) 04:28:44.09ID:tyC3gFls
             ___
            / ノ '' ⌒\  
          / ( ● ) (● )\
ドヤーーーーー / :::::⌒,   ゝ⌒:::::\ ーーーーーーー!!!!
        |      ト==ィ'     |
  _,rーく´\ \,--、  `ー'    /
. ,-く ヽ.\ ヽ Y´ /    ー   ´ノ ` ー-、
 { -! l _」_ノ‐′/\― 、  ,−/_|    ∧
. ヽ ゙ー'´ ヽ  / フ \     /ヽ     /ハ
 `ゝ、  ノ ノ  \   ヽ  / /
     _|\∧∧∧MMMM∧∧∧/|_
     >                  <
. | ヽヽ |   _/_ヽヽ |  ヽ|  |ヽ  ム ヒ | |
. ├─  ̄T ̄/  / /  ̄フ| ̄  | ̄| ̄ 月 ヒ | |
. |.     \  / ノ   / |  / | ノ \ ノ L_い o o
0333login:Penguin
垢版 |
2018/08/08(水) 04:40:02.13ID:tyC3gFls
ま、そもそもVMとDockerは違うもので、両方を組み合わせて使うものなんだけどね

クラウドを使っていればわかるはず。
VMを増やすと金はかかるが、新しいスペックのマシンを
手に入れることで、クラスタの合計性能が増える

Dockerコンテナを増やすだけじゃ、クラスタの合計性能は増えない
Dockerコンテナは一つの(仮想)マシンの中でCPUやメモリを
無駄にすることなく(サンドボックス化された)プロセスを複数起動したり
アプリのデプロイを用意(手元で動いたイメージをそのまま使うとか)にするために使う

目的が違うものなんで、Dockerの代わりにVMを使うとか
VMの代わりにDockerを使うとかいう発想がそもそもズレてる
0334327
垢版 |
2018/08/08(水) 05:36:35.37ID:H2RB231p
>目的が違うものなんで、Dockerの代わりにVMを使うとか
>VMの代わりにDockerを使うとかいう発想がそもそもズレてる

そこだけは同意だな
そこまで理解できたなら賢いじゃないか
0335login:Penguin
垢版 |
2018/08/08(水) 07:17:02.14ID:25daI1mK
序論、本論、結論まで到達?
0336login:Penguin
垢版 |
2018/08/08(水) 10:38:16.92ID:tyC3gFls
>>334
何年も前から理解してるぞw

VMとコンテナをごっちゃにするなって書いたのは、違うスレだったか?

例えば>>76とか書いたの俺だが

> なぜならkubernetesの場合コンテナのオートスケールになるわけだけど
> 起動しているVMの中でコンテナをオートスケールするだけなので
> VMの数もオートスケールしないとコストは下げられないから

VMとコンテナは使い方が明確に違う(ことを理解してなきゃこんなこと書けない)
0337login:Penguin
垢版 |
2018/08/08(水) 10:57:28.63ID:tyC3gFls
物理マシンもVM(仮想マシン)も、俺にとっては同じマシン扱いなんだわ
形あるハードウェアで形作られてるかそうでないかの違い。

そのマシンにアプリをデプロイする時にDockerを使えば、
そのアプリは同じマシンの他の環境の影響を受けないので
簡単にデプロイできる。

Dockerのメリットはアプリの配布と実行環境なんだよ
「アプリ+実行環境」でコンテナ化されるから、
LinuxやMacやWindowsに持っていっても動く。


簡単にまとめるなら、
 マシン(物理 or 仮想)の中 に
 アプリ(パッケージ or Dockerイメージ)をインストール

ってこと。

アプリをサンドボックス化するためにマシンを作るとか重すぎでしょw
まさに牛刀割鶏、鶏をさばくのに大きな牛刀を使うようなもの
0338login:Penguin
垢版 |
2018/08/08(水) 11:01:18.07ID:tyC3gFls
それから「デスクトップ環境」の話
これはアプリか?って問われれば、アプリだと思う人はいないよね
複数のアプリを連携して作られた環境

仮にデスクトップ環境を作るならば、Dockerコンテナはアプリに相当するのだから、
複数のDockerコンテナを連携させるという話になる。
デスクトップ環境を構成する複数のアプリを一つ一つDockerコンテナ化していって
連携させるとか、大変なだけの環境の再発明でしか無い

ここからもわかるように、デスクトップ環境(=複数のアプリ+連携)なので
Dockerコンテナ(=アプリ)と比べるものでないのは言うまでもない話。

デスクトップ環境は誰かが大変な思いをして構成したものを使っていればいい。

物理マシン or 仮想マシン で動いてるデスクトップ環境やらCLIやらsystemdやら。
そこから起動する一つのアプリ、それがDockerコンテナ相当なんだよ
0339login:Penguin
垢版 |
2018/08/08(水) 17:56:23.41ID:8+YiPWG6
GitLab運用してるんだが, CIで使うビルド環境とかは明らかにDockerないしはKubernetesが優秀
一時Docker-Compose on VMでやってたけど使い捨てVMを構築する処理が重くてしょうがなかった(しかも遅い)
スタンバイ状態のビルド環境VMを2つも作るともう限界だが, Kubernetesなら5個くらいPodをスタンバイさせてても余裕だし新規Pod作成も早い(Docker単体なら10コンテナ並走でもいける)
0340login:Penguin
垢版 |
2018/08/08(水) 18:46:47.42ID:Gp7Qfh6x
夏休みだな
お前らが当たり前過ぎて書かないこともこうやって書いてあれば誰かの役に立つのだろう
0341login:Penguin
垢版 |
2018/08/08(水) 23:00:30.67ID:tyC3gFls
>>339
Kubernetesって使用メモリ多くない?1GBぐらい使ってた気がするんだが
だから使わないってわけじゃなく、もうデファクトスタンダードに
なりつつあるから避けようがないと思ってるけど

Docker-Composeは開発者用だと思ってるよ。
ローカルマシンで複数コンテナを組み合わせる時の面倒さを解決するもの

>>340
お前のその書き込みは誰の役にも立たんけどなw
0342login:Penguin
垢版 |
2018/08/08(水) 23:10:50.30ID:9RbiD8jy
ケンカはやめて(><)
0343login:Penguin
垢版 |
2018/08/09(木) 06:19:00.25ID:/JzHzLjB
Docker-composeで使い捨てVMを構築するのが遅いというところがよくわからない。VM(dockerホスト)は一回構築したら終わりで、後はそこにコンテナを作ったり消したりするだけじゃないの?
0344login:Penguin
垢版 |
2018/08/09(木) 13:04:39.32ID:xAQpubuL
>>343
今までの話の流れからすると、CIでテスト実行するたびにVMの作成と破棄をしていたってことでしょ?
>>327がVMでも10秒以下の差しか無いから問題ないみたいなことを言ってるから
(VMの中でDocker-Composeが動いてるのは、この話にあまり関係ない)


当たり前だけどDockerコンテナの起動に比べればVMの起動は遅い
起動の差を10秒以下にするには、VMのイメージを作ってないと不可能
あとできればSSDとかクラウド使うとか。それでもDockerの1秒に比べたら遅い


そして肝心のVMのイメージを作成するのに時間がかかるっていうねw
Dockerの場合はアプリの実行環境が含まれる。だから構築に時間がかかるVMは
色んな種類のアプリのテストに使い回すことができる。

Dockerを使わないなら、アプリを動かすためにVMのイメージに
実行環境を含めないといけない。当然アプリごとにVMのイメージが必要になる。

DockerでもアプリごとにDockerイメージが必要になるのは同じだが
Dockerはキャッシュがあるから、Dockerイメージの作成は短時間でできる。
VMだとキャッシュはないし起動に10秒かかるし、作成したイメージの
サイズもでかいし頻繁にVMイメージの作成なんかやってられないよ
0345login:Penguin
垢版 |
2018/08/09(木) 16:12:56.70ID:+YyDvSZH
今までVPSとかで動かしていたものをコンテナ化してGCE辺りに移そうと思うんだけど
DBの保存や出力したファイルの保存はみんなどうやってるの?
結局マウントできるディスクが必要なんじゃないかってところで今頭を抱えてる
0346login:Penguin
垢版 |
2018/08/09(木) 17:43:56.11ID:UwrKl0TS
>>345
まずアプリサーバーとデータサーバーを分けて考える。
Dockerでやる価値が高いのはアプリ

アプリサーバーには原則としてデータは保存しない
その前提を守っているならば、簡単にスケールできる
(VMインスタンスやDockerコンテナを追加することで性能をあげられる)

という話。


その場合にデータはどうするかと言うと、
データサーバーはアプリサーバーみたいに簡単に
台数を増やしたりできない

一番楽なのは、難しいそれらをクラウドが提供するサービスに置き換えてしまうこと。
つまりGCPであればCloud SQLやCloud Storageを使う
これらは信頼性も性能も(金額次第だが)高くできる。
0347login:Penguin
垢版 |
2018/08/09(木) 17:47:52.88ID:UwrKl0TS
>>345
どうしても自力でやりたいならば、Dockerのボリュームという
機能を通してホスト上に保存するのが一番手っ取り早い

例えばMySQLであれば データディレクトリである
/var/lib/mysql をホスト上のディレクトリにボリュームで
マッピングさせる

MySQL ぐらいだったらシンプルだし事例も多いので簡単なんだが
何処に何を保存するのかよくわからんようなアプリは
それを把握することに時間を奪われるだろう
0348login:Penguin
垢版 |
2018/08/09(木) 17:55:09.12ID:UwrKl0TS
>>345
> 結局マウントできるディスクが必要なんじゃないかってところで今頭を抱えてる

結局マウントできるディスクが〜というのは
初心者がよく考えてしまうことなんだけど、
これは当たり前

なぜなら(物理マシン or 仮想マシン上で動く)Dockerコンテナっていうのは
(物理マシン or 仮想マシン上で動く)アプリと同質のものだから。
単にアプリの実行環境が、コンテナとしてアプリに一体化してるに過ぎない


アプリはデータを何処に保存する?
物理マシン or 仮想マシン上のディスクでしょう?
だからDockerコンテナもそれは同じことなんだよ

Dockerコンテナを使った時データの保存先をどうすれば良いのか悩むのは
Dockerコンテナがアプリと同質のものであることを理解してない証拠
0349login:Penguin
垢版 |
2018/08/13(月) 18:09:32.79ID:v0wq29mQ
最近コンテナってものを知ったんだけど、上の説明だとフラットパックってのとの違いがわからない
スタンダロンなアプリじゃなく、ソフトウェア群の、何かしらのフロントエンドにドッカーが向いてるってこと?
0350login:Penguin
垢版 |
2018/08/13(月) 21:26:12.80ID:nXCS+eUE
コンテナ自体が非常に難しい概念なんだよ
どうもLinuxの世界で発祥したもので、昔からLinuxやってる人でないとわからないらしい
「最近流行りのDockerなるものをやってみたい」というヤツには到底無理(俺含め)
0351login:Penguin
垢版 |
2018/08/13(月) 21:45:54.13ID:xnhwDoUS
Solarisのゾーンがコンテナの先駆けじゃない?
0352login:Penguin
垢版 |
2018/08/13(月) 23:10:29.77ID:XRxrVOUh
FreeBSDのjailとか?
cgroupの概念は含まれてないけどね
0353login:Penguin
垢版 |
2018/08/14(火) 00:05:12.50ID:kAynbxnX
>>350
説明してる奴が「難しいこと理解した俺スゲー」ってのを
自慢げに小難しく語るのが問題なだけ

プロセス分離のためにcloneを拡張して名前空間を追加したよ
cloneだけだと不便だからunshareとsetns追加したよ
cgroupでVMのごとくリソース分配可能にしたよ
コイツラ直接イジるのは面倒だからコンテナエンジン作ったよ

基本この4ステップだけじゃねぇの?





…って言う俺もコンテナのこと全然知らんのだが
0354login:Penguin
垢版 |
2018/08/14(火) 00:55:59.54ID:M/lw6/kx
>>350
技術を理解するのと目的を理解するのをごっちゃにしてるから

Dockerが解決する問題は(主に自分が作った)アプリをいろんな環境で
動かそうとしたら、アプリをぽんとインストールするだけじゃ動かなくて、
そのアプリが依存してるなにかまで環境を整えなきゃならないだろ?
だから発想の転換でアプリ自体に環境を入れてしまえばいいじゃないかってこと。
外部ライブラリを全部アプリに静的リンクするの発展形だよ
まずそこを理解しないといけない


技術だけ理解すると、やれjailがなんだとかcgroupがなんだとか、
そればっかり言って、なんのために作られたのかという目的を見失う。
その結果、同じ技術を使った応用例のVMの代わりにするのが目的だと勘違いする

コンテナという技術を知るのではなくて、どんな問題があって
それを解決するものがDockerなんだって理解するのが先
0355login:Penguin
垢版 |
2018/08/14(火) 01:03:03.69ID:M/lw6/kx
補足だが、
> (主に自分が作った)アプリをいろんな環境で

なんで「自分が作った」と書いているのかというと
他人が作って、ディストロに収録されているものは、
それ動かすための、環境もすでに整えてあるから
それがディストロの大変な仕事なわけで。

だから自分が作ってないものを動かしてるだけの人は
(物理マシン or 仮想マシンの上に)ディスロの環境整えられてる
パッケージ入れて使っても同じじゃんって思ってしまう。
技術は理解していても、そもそもの問題を理解していから
Dockerが必要な理由もわからない
0356login:Penguin
垢版 |
2018/08/14(火) 01:10:25.09ID:M/lw6/kx
>>349
フラットパックってのがよくわからない。
一般的な用語?ググっても見つからないんだが。

> スタンダロンなアプリじゃなく、ソフトウェア群の、何かしらのフロントエンドにドッカーが向いてるってこと?

既存のいろんなものをつく合わせて
スタンドアロンなアプリを作りましょうって話。

何かをやるためにDockerを使うと便利なんじゃなくて、
Dockerは「とある物」を作るための道具だよ

その「とある物」っていうのがスタンドアロンなアプリ
動かしたいアプリが、動かすのにアプリ以外の環境を整えることが
必要なアプリであっても、Dockerを使えばアプリに組み込んで
スタンドアロンなアプリに作り変えることができる

Dockerはスタンドアロンなアプリを「作るもの」
であって「動かす環境」ではないんだよ
そこを根本的に間違ってる人がいる。
0358login:Penguin
垢版 |
2018/08/14(火) 02:29:21.54ID:Ttl7PXT/
カタカナでググったから見つからなかったのかw

Linuxデスクトップ向けアプリケーション仮想化機構「flatpak 0.6.13」リリース
https://mag.osdn.jp/16/10/26/153000

>  Linux向けのアプリケーション仮想化技術「flatpak」開発チームは10月25日、
> 最新版「flatpak 0.6.13」を公開した。プロジェクトのWebサイトより入手できる。ライセンスはLGPL。
>
>  flatpak(旧名称「xdg-app」)は、Cで実装されたLinuxデスクトップアプリケーション向けの
> 仮想化機構。アプリケーションをOS環境とは切り離されたサンドボックス環境内で
> 実行することでセキュリティを高め、またほかのアプリケーションからの干渉を最小限にできる。
> サンドボックス環境の構築にはcgroupsやseccomp、ネームスペース、バインドマウントなどの
> Linuxカーネル技術やOpen Coutainer InitiativeのOCIフォーマットなどを利用しており、
> 単一のアプリケーションパッケージをさまざまなLinuxディストリビューションで動作させることができるという。

Dockerのアイデアをパクってデスクトップアプリ用にした技術だね
技術的にはかなり近いものを使ってるし、OCIフォーマットは
Docker社 vs CoreOS社の標準化争いで生まれたものだし
違いがわからないというのなら、その言うべき相手は
後から登場したflatpakに言うべき言葉だろう
なんでflatpak作ったの?Dockerでいいじゃない?と。
0359login:Penguin
垢版 |
2018/08/14(火) 03:11:38.19ID:Ttl7PXT/
> なんでflatpak作ったの?Dockerでいいじゃない?と。
この質問に自己レスする前に

第513回 新しいパッケージの仕組み,Flatpakを使用する
http://gihyo.jp/admin/serial/01/ubuntu-recipe/0513
> FlatpakとSnapsの最大の違いは,Flatpakはアプリケーション専用で
> あることでしょう。よって,GUIアプリケーションであれば
> Flatpakのほうが快適に使用できるものが多いのですが,実際はケースバイケースです。
本当にGUIアプリ専用だったのか?


Flatpak・Snaps も Docker も「使う側」の視点と「作る側」の視点がある

Flatpak・Snapsはどちらかといえば「使う側」が焦点となっており
こんなパッケージを用意しましたから使ってくださいって感じだろう。
エンドユーザーがデスクトップPCで使うアプリ用

Dockerはどちらかといえば「作る側」がメインなのでアプリのインストールや実行はCLI、
そしてGUIアプリは作れなくはないがメインのターゲットではない。
主に開発用のツールや自社開発のウェブサービスを構築のためによく使われている

Dockerは「作る側」がメインなので何度も言ってるように、アプリエンジニアにこそ必要なもの。
だからパッケージ入れて(ちょっと設定して)使うだけのインフラエンジニアはVMの役割とごっちゃにしやすい

自分専用にカスタマイズしたアプリを作りたい人はDockerを選ぶのでは?
Flatpakでパッケージの作り方を調べてみたが、
Dockerfile書くだけで作れるDockerよりも大変そうに思える

なんでflatpak作ったの?の答えは、エンドユーザーのために作ったパッケージを、
もっと使いやすく提供したいためだろう。
0360login:Penguin
垢版 |
2018/08/14(火) 10:08:37.26ID:M6PcTN6D
別にコンテナの用途限定する必要は無いと思うけどなぁ。便利に使えたらそれでいいし。Dockerを○○に使うなって言うならその代替案も言って欲しいけど言わないし、仮に言えたとしてもそれはDockerで実現した方が簡単というオチになるのが目に見えてるし。
正しさとは都合。正しさを振りかざすのは自己満足を他人に押しつける行為。
0361login:Penguin
垢版 |
2018/08/14(火) 11:51:58.01ID:kAynbxnX
ドッカーのスレだから、ドッカー万歳な人がいてもおかしくないよ
0362login:Penguin
垢版 |
2018/08/14(火) 14:07:10.96ID:ghMKDHT1
>>368
> 別にコンテナの用途限定する必要は無いと思うけどなぁ。

制限なんかしてないよ?

コンテナの用途は、アプリケーションコンテナや
システムコンテナといった使い方がある。

だがここはDockerのスレなんだからDockerの話をするべきで、
Dockerはアプリケーションコンテナとして設計されてるのは事実

だからコンテナを違う用途で使いたいなら、
別のスレに行くのが適切ってだけの話
0363login:Penguin
垢版 |
2018/08/14(火) 14:12:08.48ID:ghMKDHT1
> Dockerを○○に使うなって言うならその代替案も言って欲しいけど言わないし

何に使いたいのか言わないから言いようがない

どうせシステムコンテナなんだろうが、
システムコンテナとして使いたいなら
LXD や OpenVZ を使えばいいだろ?
0366login:Penguin
垢版 |
2018/08/14(火) 14:37:27.72ID:M6PcTN6D
LXDやOpenVZなんて知らんし、もしスレたてるとすれば仮想マシンとしてDockerを使うスレにするべきでしょ?
なんでそんなにDockerを仮想マシンとして使わないように誘導するの?おかしくない?
0367login:Penguin
垢版 |
2018/08/14(火) 14:42:46.76ID:M6PcTN6D
Googleクラウドは仮想化なんか使ってなくて、物理サーバにコンテナ立ち上げてるらしいけど、あなたはGoogleがコンテナ使い方間違ってるからGoogleのインスタンス使うなって言うわけ?
0368login:Penguin
垢版 |
2018/08/14(火) 14:48:15.40ID:M6PcTN6D
Dockerの使い方を縛らないと言いつつサーバ用途には使わせないように誘導するのすごく卑怯だよね。
声がでかくて社内政治だけがうまい奴に似てて、あなたに物凄い嫌悪感を持ったよ。
0369login:Penguin
垢版 |
2018/08/14(火) 15:04:52.25ID:kAynbxnX
https://stackoverflow.com/questions/17989306/what-does-docker-add-to-lxc-tools-the-userspace-lxc-tools

> Versioning. Docker includes git-like capabilities for tracking successive versions of a container, inspecting the diff between versions, committing new versions, rolling back etc.
> The history also includes how a container was assembled and by whom, so you get full traceability from the production server all the way back to the upstream developer.
> Docker also implements incremental uploads and downloads, similar to "git pull", so new versions of a container can be transferred by only sending diffs.

サンドボックスとしてDockerを使うメリットってこれかな?
コンテナ知らん俺でも強力だとわかる
0370login:Penguin
垢版 |
2018/08/14(火) 15:14:48.58ID:kAynbxnX
お前ら暑いからってイライラするなよな…

git likeを謳ってるからDocker hubなんかもあるのな
flatpakのflathubよりは随分開発寄りな印象を受ける…サインインしてないけど

ご興味のある方はどーぞ
https://hub.docker.com/
https://flathub.org/
0371login:Penguin
垢版 |
2018/08/14(火) 18:38:55.14ID:xLHQglRN
>>366
> LXDやOpenVZなんて知らんし、

無知を告白されても、勉強したら?で終わる話なんだが
知らないほうが悪いんですよ
0372login:Penguin
垢版 |
2018/08/14(火) 18:41:22.43ID:xLHQglRN
>>366
> なんでそんなにDockerを仮想マシンとして使わないように誘導するの?おかしくない?

なんで仮想マシンの代わりとしてコンテナ技術を使うものがあるのに
仮想マシンの代わりとして使うことを想定してないDockerを無理やり使うわけ?
その方がおかしいでしょ。
どうせ間違った使い方をして、使いづらいと文句をいうのが目的なんだろう?
■ このスレッドは過去ログ倉庫に格納されています

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