探検


Docker Part3

■ このスレッドは過去ログ倉庫に格納されています
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/
2019/10/27(日) 20:17:17.72ID:fa4qpzOv
スケールしやすいから
2019/10/27(日) 20:48:00.20ID:bZSAAJ4S
小さくて速いのかメリットじゃないって正気?
2019/10/27(日) 21:11:06.05ID:bZSAAJ4S
dockerは軽量なだけでなく、配布の仕組みが標準化されていて
仮想マシンと言うより
どのLinuxでも動くパッケージマネージャーの代わりのように使える

docker pullしてくればすぐに起動して使える
自分のコード追加してdocker pushして再配布も簡単

特定の仮想マシン向け、例えばVirtualBoxにイメージ作ったら
その仮想マシンでしか動かないじゃん

カーネルを含めず
その上で動くソフトウェアだけを確実にどのLinuxにも持っていける仕組みがあれば
という問題をDockerが解決した
2019/10/27(日) 21:37:16.74ID:bwtjYyKj
5Gバイトはダウンロード結構掛かるから
2019/10/27(日) 21:43:40.69ID:WoCgnioW
小さくて早いって言ったって、他への依存度が少ないほうが良いじゃん
と思ってVagrant使ってた。
試しにdocker使ってみて圧倒的な速さにdockerシフト。
まぁLinuxメインの人ってWindows上でも動かそうとか考えないしな。
ライブラリ、デーモン依存のところだけ解決できるコンテナはちょうどいい感じなんだよ。
2019/10/27(日) 22:54:11.36ID:bwtjYyKj
lxdと組み合わせるとかなりいい
2019/10/27(日) 23:28:53.66ID:xLMpHebH
>>45
そのメリットが理解できないのであれば、
それでいいんじゃない?
まぁ、せいぜいがんばってください!
2019/10/27(日) 23:48:04.69ID:gxVXDEx+
>>55
>>51見たいな回答が出来るなら、参考にもなるけど
この書込みじゃ何の役にもたたんな。
まぁ君自身理解できてないのだろうけど。
君が流行で使っても何も恥ずかしくは無いよw

>>48
20台も30台も作る前に普通何か工夫するだろ?

>>51
唯VMにしてOSのバージョンレベルで固めていれば
VM->開発機->検証機->本番機の全ての環境が
全く同一に作れるからね。
Dockerでおかしな作り方したら本番機ではパス違ったとかなるとダルい。
2019/10/27(日) 23:49:09.12ID:gxVXDEx+
>>53
Vagrant使うくらいなら確かにdockerの方が良いね。
2019/10/28(月) 00:05:11.54ID:jxo+K6ql
Dockerあればパッケージマネージャーの代わりになるから
パッケージマネージャー要らないじゃん!って事で
パッケージマネージャーを無くして
/usrとかのパスをリードオンリーにしたのがCoreOS

OSアップデートはOSイメージ丸ごと入れ替えで行うっぽい
2019/10/28(月) 00:06:29.68ID:BSt0sMZd
>>52
5Gなんて今時fullHDの動画ひとつでもそれ位在るだろ?
2019/10/28(月) 00:12:27.31ID:U3p6V+0u
>>56
きみに説明するまでもないからw
2019/10/28(月) 00:16:08.14ID:BSt0sMZd
>>60
分かったから、有意なレスできんなら黙ってろよw
2019/10/28(月) 08:19:13.08ID:U3p6V+0u
>>61
黙らなくてもいいでしょ♡
2019/10/28(月) 08:25:05.76ID:BSt0sMZd
>>62
まあ良いよ、役立たず君。
君の好きなように役に立たないレス返したまえw
2019/10/28(月) 08:41:40.34ID:BSt0sMZd
>>58
こういった書込み見るとDockerてのはOSの仮想化技術じゃなくてアプリケーションの仮想化技術やな。
軽量コンテナとか分かりにくい単語使ってくるから、イメージしづらいわ。
そらOSの仮想化と比べて早いのは当然。
2019/10/28(月) 09:45:32.62ID:JzQKnTd7
>>45
にたようなことを思ってたけど
前スレでdockerを分かりやすく説明してくれた人がいて、VMとは、根本的に違うと理解した
2019/10/28(月) 11:33:06.56ID:BSt0sMZd
>>65
一応読んだけど59〜とかその辺?
それなら知っている(だからアプリの仮想化やなと言っている)
で、それがVMに対してどのようなメリットが在るのかは相変わらず分からん。
(早いとか軽いとかそういった当たり前のメリットではなく、開発でVMを使う事はそれなりに
 意味の在ることであり、それを凌駕するメリットには見えない)
2019/10/28(月) 12:59:04.41ID:ZiJ0R/5r
個人レベルの利用でVMの代わりとして使うメリットなんてほとんどない
2019/10/28(月) 13:05:32.81ID:U7gDn6Np
>>66
確かにWindowsホスト混在の集団での開発環境だとわかる または技術者の習熟レベルの差によってもvmのほうが扱いやすいだろうな

ネットワーク速度と帯域消費とその他資源が無限な場合はvmに理があるだろう
2019/10/28(月) 15:00:03.85ID:KePhh8yu
VagrantBoxはphpとかJavaとかgoとかmysqlとかpostgresql
最初から入ってるの無くね?

Vagrantfileで自分で書く?
面倒くさいし全パッケージのバージョン固定は難しい
イメージの配布も('A`)マンドクセ

AWSはnested virtualizationも無いらしいし
VirtualBoxで作ったら高価なベアメタルインスタンス使うしかなくなるな
2019/10/28(月) 15:01:37.80ID:xtDFuCrv
Docker使ってたらLinuxディストリ
別に何でもよくね?
コンテナさえ動けば良いんだから
好きなの使えば良い
2019/10/29(火) 03:22:38.83ID:Ht/6B8LB
dockerは依存関係調べるのに手っ取り早くていい
Ubuntu minimalをrunさせればviすら入っていないプレーンなかんきょうですぐテストできる。メモリも食わない。アプリケーションのテストサーバとかいいよ。本番環境はまた別だけど。
2019/10/29(火) 09:46:46.36ID:MuHfEjBj
本番でDocker運用するのは何か制限がある?
2019/10/29(火) 15:01:21.60ID:KeakQ8Tm
GoogleがKubernetesでバリバリ使ってるだろう?
2019/10/29(火) 15:13:13.24ID:VN09NAUb
>>71
本番でも、そのままdockerコンテナを運用すればええやん!
2019/10/29(火) 17:53:37.69ID:YHcaDCM9
逆に本番をDockerライクなシステムで運用しないとローカルをDockerで作る意味が無い。
本番がVMだと二度手間になる。
(開発機作るDockerfileを作った後に本番機を手作業で構築するとか)
2019/10/29(火) 21:47:10.18ID:/JmTnPWP
ステートレスなアプリケーションを素早くスケールしたい場合にコンテナが有利、そんだけや
2019/10/29(火) 22:18:22.69ID:YHcaDCM9
>>76
このメリットでDocker使う、と言うのならDockerは大規模サービス特化型では?
ヤフオクだアマゾンだと超大規模なサービス運用したいと思うなら、そら動的にさっさと
スケールしてくれなきゃ困る。
が、それでVM技術全部を置き換えようぜ、と言われると無理が在る

ESXiであれHyper-Vであれ学習コストがほぼゼロのOS仮想化技術を
学習コストが低くは無い(そして汎用的でもない)
Dockerでと言われると、何でそんな必要が在るの?
と言う素朴な疑問が消えない。

スケールアウトは(OSごとスケールされるけど)VMにも在るからね。
2019/10/29(火) 23:12:14.94ID:/JmTnPWP
>>77
そう。
2019/10/30(水) 04:48:02.29ID:bBGMpLnQ
DockerをネタにVM不要論を唱えてる奴はDockerを扱ったことが無いし理解もしてないだろ
2019/10/30(水) 05:11:07.07ID:bJJYyUJX
>>77
逆に小規模でvm運用だとデプロイ(vmイメージのインポート?)にサーバーサービスを選ばないか?
環境構築ツールとかアプリ単位のデプロイはどうやっているの?
2019/10/30(水) 07:15:27.79ID:KYYDqpNF
>>80
デプロイ?
やり方は1物理鯖に1OSしか載らなかった大昔と全く変わらないのでは?
VMをインポートするとかではなくOSの中に入って作業をする。
デプロイ方法は中で動いているWEBアプリによって色々だろ。
FWがDeployer持っているならそれ使うし、もっと小規模なら改修したファイルをコピるだけとか。
設定ファイルのようなものインポートする形ならそうするし。
イントラネットでなくインターネット上のサービスならSCPとか。

VM使ったからといって1物理鯖に1OSをインストールして運用していた時代と手順が変わる事は無い。
そういった意味でもOSの仮想化は学習コストがとても低い。

初期の環境構築も手作業でrpmとかyumとかこれも変わらない。
但し1度作ってしまえば、VM複製して開発機→検証機→本番機に一気にコピる。
だから構築の手間自体は一回きり。

>>76のようなステートレスな鯖が例えば1AP鯖に対してフロントエンドに4Web鯖とか在ってバージョン
アップとか面倒臭いなと思えば1個マスタ作ってそれをVM複製するとか、そういった手段も出来るから
楽にはなった。
(昔は4WEBサーバあったら4回手作業でデプロイしていたので)

これをDockerに置き換えようと思えば、上記の説明を全部やり方変えないといけないから普通の企業
のシステム事業部には、なかなかそのメリットを納得させるのは難しい気がする。

OSの仮想化では無いから、コンテナの中にログインしても何が出来ると言う訳でもないので、その
意味でも面食らうし。
2019/10/30(水) 08:13:06.87ID:vSQkDBfX
>>81
>手作業でrpmとかyumとかこれも変わらない。
但し1度作ってしまえば、VM複製して>開発機→検証機→本番機に一気にコピる。
だから構築の手間自体は一回きり。

環境更新するたびにそれとか原始的過ぎるだろ
環境増えたら更新メンテナンスが手間
記録も残らないし戻すのも面倒くさい
それとも一度作ったら二度と更新しないとでも言うのか
2019/10/30(水) 08:45:13.89ID:R0o4MKxP
サーバーをペットのように可愛がるな、いつでも替えの効く家畜として扱え

AWSにも仮想マシンイメージ(AMI)があるが
必要なソフトウェアは起動してからDockerレジストリからプルすれば
カスタムのイメージは作らなくても良い

サーバーが全くインターネットにアクセス出来ない環境なら
そのプライベートネットワーク内にレジストリのミラーを作成するか
Packerを使って、必要なDockerイメージをプルした状態でAMIを作成

サーバーをペットのように扱ってるとASGも使えないだろうが、サーバーダウンは全て人間の監視を付けて対応する気か…?
2019/10/30(水) 08:52:09.68ID:KYYDqpNF
>>82
>それとも一度作ったら二度と更新しないとでも言うのか

逆に訊きたいけど、じゃあ月イチとかそんな頻度でやるの?
環境更新といっているのがどのレベルなのか(例えばOSのバージョン上げるとか)
と言っているのなら、そんな頻度では当然やらない。
致命的なセキュリティホールでもない限りは経験的には5年に1回とかでは?
それなら別に面倒くさいとかは無いよ。
しかもじゃあ、Dockerならノーコストで出来るのかと言うとそうでもないし。
2019/10/30(水) 08:53:01.65ID:R0o4MKxP
うちでは小規模な案件であれば、コンテナオーケストレーターにECSを利用している
EC2(仮想マシン)やECSのサービス(どんなコンテナを幾つ動かし続けるかの指定、docker-composeのサービスを拡張した感じ)はTerraform、CloudFormationで管理

これらが揃えば
公開するドメインなど、環境によって変えなければいけないものを除き
全く同一のソフトウェア構成で自動で構築できる
2019/10/30(水) 08:53:13.76ID:KYYDqpNF
>>83
>サーバーが全くインターネットにアクセス出来ない環境なら
>そのプライベートネットワーク内にレジストリのミラーを作成するか
>Packerを使って、必要なDockerイメージをプルした状態でAMIを作成

これはどう見ても余計な手間が増えている。
2019/10/30(水) 09:03:08.49ID:R0o4MKxP
>>84
脆弱性なんて5年に一回どころかもっと高頻度で出ると思うが
脆弱性出ないからじゃなくて
一個ずつパッチ当てるの面倒だから更新してないだけだろう?

AWSならAMIを更新してASG内のインスタンスを入れ替えれば良い
更新で出る影響は完全にインフラがコード化されていれば、テスト環境でテスト出来る

コンテナとホストOSは基本的に隔離されているので
依存性による問題が出る事はほぼない
カーネルのバグによる影響は出ないとは言い切れないが、
安定版になる前にベータ版で発見される可能性は高い

コンテナだけの更新であれば
影響範囲が限定されるし
サイズがOSより小さいので
もっと高頻度でも可能
2019/10/30(水) 09:04:01.58ID:KYYDqpNF
>>85
>コンテナオーケストレーターにECSを利用・・・
>>83
>Dockerレジストリからプルすれば・・・

こういうの見ると、日本でDockerが大々的に流行るのは無理と言う気がするね。

>>51 dockerは配布の仕組みが標準化されていて
>>76 Dockerのメリットは、素早くスケール

Dockerはインターネット上の標準化されたレジストリから配布を行いすばやくスケール可能なのがウリと、
が日本じゃ社員50人以下の会社が使うようなサービスはそもそもスケールの必要は無いし、
1万人超の大会社だと、お堅い会社の場合、そもそもクラウド上にアクセスする事自体を嫌うから。
ちょっと前にSalesforce売りに行ったら、ソッコーで「クラウド駄目」とか言われたわ。
大規模な会社じゃないとスケールアウト使う意味ないし、大規模な会社はクラウドを嫌う。
唯一使うとすればヤフオク、グリデナ、メルカリ、ピクシブ、とかインターネット系の大規模サービスやってる所位?
少なくともDockerを100%使い切る会社と言えば上記のようなものしかない。

後はまあ、好奇心旺盛な新興会社が使って自慢するとか、そんな感じ?
2019/10/30(水) 09:15:06.02ID:KYYDqpNF
>>87
そんなのお客さんと自社の状況しだいだろ?
セキュリティにうるさいお客さんなら月1回呼び出させてパッチあてやらされるし、そうでもなければ放置する
自社内のサービスなら売上げ上がっているなら、メンテはやる。
がこの話は「VM複製して>開発機→検証機→本番機に一気にコピる。」とは関係ない。
そもそも俺は、「環境更新するたびにそれ」なんて言ってない。

まあ、なんと言うか、「パッチ当てが楽になるからDocker導入しましょう」
といって「そうですね、そうしましょう!」と言う話になるかどうかは分からない。
2019/10/30(水) 09:20:59.14ID:R0o4MKxP
>>88
サイボウズが1000台規模のKubernetesクラスターを自前で運用してたぞ

後はAWS Outpostみたいなのを自社サーバーで運用とか?

>>86
比較するなら
PackerかDockerかだろ
VMのイメージ作成やデプロイも手動でやっていたのでは話にならん

インターネットなしの環境でKubernetesを運用するとして
Packerを併用する場合でも
Kubernetesのバージョンアップだけ気にしていれば良いから
そこまで手間ではない
ビルドとAMI作成はCIでやる

Dockerイメージの作成もCIでやる
2019/10/30(水) 09:39:49.15ID:KYYDqpNF
>>90
>サイボウズが1000台規模のKubernetesクラスターを自前で運用してたぞ

これもオンプレで動くサイボウズの方じゃなくてクラウドのほうだろ?
クラウドサービスをDockerでクラスタなら分かる、軽量コンテナにうってつけだろうし。

>インターネットなしの環境でKubernetesを運用するとして

Dockerは本当にオンプレで完全に動くの?
それが出来るなら、企業のIT部門の人が勉強する意味は在ると思う。
それでも、そこに上げた名前分みても、やはり学習コストは高いと思うけど。
なんせVMwareESXiとか学習コスト殆どないし。
2019/10/30(水) 15:14:19.04ID:BfA8YI+E
サイボウズはオンプレミスでKubernetesを運用している

1,000台規模のインフラ刷新! Kubernetesを採用したサイボウズが語る「NoOps」な未来 - エンジニアHub|若手Webエンジニアのキャリアを考える!
https://employment.en-japan.com/engineerhub/entry/2019/03/26/103000
2019/10/30(水) 15:25:08.39ID:BfA8YI+E
でも北米のkintoneはAWSらしい

クラウドに行く企業、クラウドをやめる企業、それぞれの事情 - 週刊アスキー
https://weekly.ascii.jp/elem/000/000/418/418894/
2019/10/30(水) 16:50:12.39ID:KYYDqpNF
>>92
ここでいう「オンプレで運用」は>>91でいう「Dockerは本当にオンプレで完全に動くの?」とは
意味が違うだろ?サイボウズが行っているのは単に自社のサービスを自社で運用しているといっているだけ。
91で訊いているのは、インターネットにアクセスせずに(アクセスすると偉い人に怒られるから)DevOpsを全部
導入できるのかと訊いている。見た感じ、頑張れば出来そうだけど。
2019/10/30(水) 20:30:46.03ID:F5UzNQl0
みんな、cndk2019は行くかな?
来月だね
2019/10/31(木) 09:23:30.26ID:kRp2coEV
インターネットアクセス禁止って行っても
Dockerのベースイメージはインターネットから取る必要あるよね

OSSのCIツールを導入するにも
Dockerのベースイメージはインターネットから取得する必要がある
そう考えるとCIサーバー自体にはインターネットアクセスは必要
向こうからのアクセスは無いので、NATゲートウェイ経由で
こちら側からだけアクセス可能にする
レジストリはCIサーバーと本番機のみがアクセス出来るプライベートサブネットに配置
そうすれば本番機にはインターネットアクセスを与えずに済む

Dockerレジストリのミラーを設定して
そこから取得するとしても
レジストリのミラーリングを行うサーバーにはNATゲートウェイ等で
インターネットアクセスが必要

それも駄目だったら逆に何処からソフトウェアを持ち込むんだ
USBメモリで人力ミラーリングか?
2019/10/31(木) 10:03:08.19ID:IvqXe+OC
イメージエクスポートしたらベースイメージも含まれてるのじゃないの?
そしたらそれを持ち込めば済むね
2019/10/31(木) 11:02:49.16ID:AgzkHmg5
>>97
そのやり方は普通にDockerfileを書くだけで可能なの?
そもそもDockerてのは、「ベースイメージの取得にインターネットが必要」
って事自体が保守的なIT部門の理解を得られん気がするね。
ゲストOSのインストールをするのにインターネットがほぼ必須、クラウド上にしか
イメージ置かないって言われたら「なんで?」と思うのが普通だわ。
2019/10/31(木) 11:29:45.88ID:bT1pYe7k
connpassにあるコンテナ系の勉強会行って各現場の導入事例を聞いてみると吉
2019/10/31(木) 11:39:39.13ID:AgzkHmg5
>>99
暇が無い。
結論だけ教えてくれw
2019/10/31(木) 11:47:45.40ID:yEAfK0sf
プライベートレジストリ立ち上がるダケじゃん
2019/10/31(木) 12:19:36.03ID:AgzkHmg5
>>101
それ1つをとっても複数製品があり、やはり学習コストが低くはない
って点がどうしようもないね。
まあ、慣れだけど。
2019/10/31(木) 12:25:09.98ID:IvqXe+OC
初期状態のosでnetwork隔離環境でimageのインポートしたら問題なく環境再現できた
>>98
2019/10/31(木) 13:42:54.77ID:AgzkHmg5
>>103
( ´∀`)bGJ!
2019/10/31(木) 16:34:21.40ID:yEAfK0sf
>>83
>サーバーをペットのように扱ってるとASGも使えないだろうが、サーバーダウンは全て人間の監視を付けて対応する気か…?

今年の8月にAWSの大規模障害あったトキお前んトコは回避できた?
AWSをペットのように扱ってるだけちゃうん?
苦情があっても全てAWSのせいにして対応する気か…?
2019/10/31(木) 17:21:33.38ID:4tcsPNQN
ヨーーーーシヨシヨシヨショシヨショシ
2019/10/31(木) 21:49:12.88ID:O/FSXRKR
私が死んでも代わりはいるもの
2019/10/31(木) 22:33:35.32ID:AgzkHmg5
実は83、本番環境持ってなかったりしてw
2019/10/31(木) 22:47:24.60ID:y7N0mD2n
みんな、マイクロサービスアーキテクチャ導入してますか?
2019/11/01(金) 08:46:03.17ID:JvLjIRFV
マイクロサービスって
2つのマイクロサービス間のデータのやり取りはどうする?
Dockerが解決するのはアプリのデプロイまで

マイクロソフト的には
分離性を高めるため
HTTPリクエストが来た時に別サービスへ同期的に取りに行くのではなく
バックグラウンドで予めデータを同期する方がお勧めらしい
が面倒そう
適当なことやると2つのサービスでデータの不整合が生じる
2019/11/01(金) 10:48:53.56ID:WiXsGXAx
webキャッシュの話?
2019/11/01(金) 11:00:57.46ID:L19v4ru9
実装に関する説明をしているのにカタカナの単語説明ばかりで
具体的にこうしている、というコードが少ないアーキテクチャは駄目フラグ
て気がするけどな。J2EEでトランザクション分離がどうのこうのとか長々と
説明するけど具体的なコードもそれにふさわしくウザくて結局普及はしなかった。
2019/11/01(金) 14:00:32.74ID:b78ok99X
まぁ自分トコさえ便利に使いこなせればいーやってカンジなんじゃねえの
2019/11/02(土) 10:34:59.86ID:yEoeML2L
Amazon ECRのマネジメントコンソール
久しぶりに見ると
・タグのイミュータビリティ
・イメージのスキャン

なる機能が追加されてた

https://dev.classmethod.jp/cloud/aws/ecr-repository-scan/

古いバージョンのソフトウェア使ってて
CVEの脆弱性あったら教えてくれる機能?

あまぞんのブログURLがNGワードで書けない
115login:Penguin
垢版 |
2019/11/09(土) 16:33:22.22ID:xm5wCBj4
「専任エンジニアが2人以上欲しい」:
Kubernetesの自前運用は難しい? はてなの撤退事例

はてなのMackerelチームはKubernetesクラスタを自前で構築して運用していたが、撤退を選択したという。
なぜ、Kubernetesの運用を諦めて撤退を選んだのか。
はてなのMackerelチームでSREを務める今井隼人氏が語った。
https://www.atmarkit.co.jp/ait/articles/1911/08/news009.html
2019/11/09(土) 17:03:17.84ID:r8GCENPg
会員登録(無料) が必要です
2019/11/09(土) 19:54:43.56ID:j2CHsg3O
Kubernetesは試したけど本番環境に使う自信が無いわ
2019/11/09(土) 22:53:39.06ID:v7R6fqHc
>>115
当たり前。
Kubernetesクラスタを自前で運用すると言うのはアマゾンで言えばASG
を自分たちで運用しようってな物じゃないの?
何故そんなことをする必要が在るのかと。

Kubernetesのエコシステムの図一つをとってもツールだらけで
この1つ1つを学習しろと言うのか?学習コスト高すぎで馬鹿かと・・・。
しかもそこまでやっても、汎用的では無いからVMはVMで残さなければならない。。
2019/11/09(土) 23:52:17.48ID:+3c0Ii5M
>>115
わかる。あれ複雑過ぎ
記事読んでないけど、少数の台数で構築してもコントロール不能に陥るだけだと思う。
Kubernetesが生きるのは100台とかで、贅沢なリソースがあって
その中で何台か生きてればいい。他はそのうち生き返るって状況が作れてからからだと思う
台数が少ないと、何台か死んだら絶滅するw
2019/11/10(日) 06:26:58.53ID:KPJdW8/s
結局Dockerは何が魅力なんや?
現段階で本番で使えないのはKubernetes?それともDocker自身?
前にもちょっと書いたけどローカルの開発機をDockerで作っても
本番機で使えないのなら二度手間になるだけだから意味が無い。
>>76見たいな話は勿論、本番環境の事を言ってるんだよな?
2019/11/10(日) 09:05:56.26ID:yayxIbvd
>>120
76はVMに対する「コンテナ」の利点を言ってる

kubernetesもdockerもコンテナを動かせる。両方本番で使える。
2019/11/10(日) 09:33:09.58ID:KPJdW8/s
>>121
そんな事は分かってるよ。両方本番で「使える」ことも分かってるよ。
でその結果>>115で止めたと言ってるんでしょ?使えるけど複雑すぎると。
でそれを読んだ俺の感想はDockerはともかく、それ以外のエコシステム含めると
学習コストも高すぎるし、本番をVMで作ってローカルの開発環境をDockerで作ると
二度手間でしかない、といっている。
で、二度手間に目をつぶってでも、取り組んだほうが良いDockerの魅力は何なのかと。
2019/11/10(日) 09:51:27.54ID:yayxIbvd
>>122
つまり本番=VM、ローカル開発環境=dockerを推してるやつがどこかにいてそのメリットは何かが聞きたいのね

俺は推してない
124login:Penguin
垢版 |
2019/11/10(日) 09:53:10.85ID:+DdRcUGW
でも猫も杓子もK8Sって感じで
後はAWS限定のECSか
Swarmってやつしか無いよね

K8Sは立てるだけならツール使えば出来るが
互換性破壊が多くてアップグレードが壁になる

はてなはテスト環境でアップグレードに失敗して撤退
kubesprayが実装をkubeadmに変えた時期と
担当者の退職・移動が重なったと

でもそれって担当者の退職が一番の原因じゃね?

移行先はEKSを検討しているらしい
ECS、Fargateは既に一部で使っていて
まずECSに移行後、EKSへの移行を目指す手筈
2019/11/10(日) 10:09:27.79ID:VIhv4B2u
>>120
> 結局Dockerは何が魅力なんや?

配布

WindowsのDLL Hellの話知ってるか?
昔、Windowsで大問題になってな

アプリをインストールするときに、一緒にDLLもインストールするんだが
当時はアプリにシステムDLLが含まれていたりして、
インストールするとOSのDLLを書き換えて、他のアプリが動かなくなったりした。

今ではそれが改善されて、アプリはシステムDLLを書き換えない、
必要ならアプリのディレクトリにDLLを入れたり、
.NETなんか複数のバージョンをインストールできて適切なものを使えるようになってる。

Linuxでもそれは同じでな。ディストロのパッケージだけ使ってるなら別に問題ないんだよ。
そのバージョンで動くように頑張ってるのがディストロの仕事だから

でもな、俺ら(開発者)がなにか作る時、ディストロのパッケージのバージョンを
色々考慮しないといけなくなる。ディストロアップデートしたら、そのパッケージで動くか検証したり
パッケージの新しいバージョンを使う時、それが今のディストロでちゃんと動くのか検証しなくちゃいけない。

それはつらいだろ?だからもうアプリに全部含めちゃいましょう。
というのがDockerなんだよ。(互換性が超高くて小さいカーネル以外)全部アプリに含めてるから
あちこちに簡単に移動できたり、バージョンアップできたりするんだよ。

ここまで言えば分かる通り、開発者以外にとっては関係ない道具
ディストロのパッケージ使ってるだけのやつとか、仮想マシンと勘違いしてるやつにはようはないから
2019/11/10(日) 10:10:51.42ID:VIhv4B2u
>>120
> 前にもちょっと書いたけどローカルの開発機をDockerで作っても
> 本番機で使えないのなら二度手間になるだけだから意味が無い。

言葉がおかしい。開発「機」を作るわけ無いだろ?

作るのは開発アプリ。それをいろんな、開発機、テスト機、本番機で
そのまま使うことができる。
2019/11/10(日) 10:17:27.88ID:VIhv4B2u
>>120
> 現段階で本番で使えないのはKubernetes?

Kubernetes。まあ使えないことはないと思うよ。
ただ使うためには労力が多すぎて、発想の転換に迫られる。

数台の本番環境を落ちないようにメンテすると言うより、
システム全体で稼働するように設計しないといけない

個でじゃなくて群で考えてメンテナンスの仕組みを作らないといけない
トラブルが合った時、個々のマシンを観察して情報を判断するのではなく
群からデータを集めてそれらを分析して、トラブルの原因を追跡するとか
個々のマシンをアップデートするんじゃなくて、群の中の一部分を
(半ば自動的に)入れ替わっていくという感じの設計が必要

失敗すると次から次へとマシンが落ちていって制御不能になって
最悪データの損失が発生する。

Googleみたいにすでに大量のマシンが存在して、個々のマシンの観察なんて
やってられないっていうのなら、Kubernetesの出番だけど
そうでない場合は、大変なだけ。
2019/11/10(日) 10:24:02.88ID:xpJeV64E
>>122
VMに対して、Dockerは「共通の部分のリソース(Kernel)は
共通で使ったほうが良くない?VMだとCPU上にほとんど変わらん
Linux Kernel複数動いとるやん!」
という提案にそうだねと思ったから使ってる。

メモリとCPU大量につみゃいいじゃん。て言われりゃ、あぁそうだね。
俺はやだけどね。ってだけだ。

たまに、また新しいもの覚えなきゃいけないんすか・・
とか言われることあるよ。そんなの右翼、左翼の違いと一緒じゃないの?
社内でVM陣営(右派)とDocker陣営(左派)に別れちゃったり。
新しもの好きの奴らのほうがハイパフォーマーが多いので
VM陣営は化石になっちゃうんだけどな。
安定度とかはどうなのよって言われると、そりゃVM陣営(保守派)。
でも、新しもの好きはそういうの気にしない。なんとかなる!とか
思っちゃってる人ばっかだから:p
2019/11/10(日) 10:24:54.41ID:VIhv4B2u
>>124
> でもそれって担当者の退職が一番の原因じゃね?

担当者の退職は避けられない

ってかインフラでは属人性をなくせ、暗黙知を減らせって
やってきただろ?そのための道具だったはずなのに。
属人性は無くなったが、最低限必要な技術レベルと経験が高くなりすぎてしまって
代わりになる人間を見つけるのが難しくなってしまったんだよ

構成が複雑になりすぎて、新しく入ってきた人がシステムを
理解するまで時間がかかる。それって属人性と対して変わらないから。


低い知識で十分だが、やってることはわかっても、それがなんのために必要なのかわからないし
書いてないことが多すぎて謎に包まれてる。

これが

ちゃんと書いてあるしやってることはわかるはずだが、そのためには高い知識が必要で
高い知識がないければ、意図が読み取れず、結局何をやってるのかわからない。

コレに変わっただけ。
2019/11/10(日) 10:25:13.37ID:KPJdW8/s
>>126
いやいや、開発「機」を作るんだろ?先ずお客さんからどのようなサービスを作るのかヒアリングして
要件定義してそれに相応しいOS、パッケージなんかを決めて本番機を念頭に「開発機」を作る。
当然VM。その後に、実際の開発を行い、
開発機の手順なりスクリプトなりをインフラの人に渡して本番機を作ってもらう。
だから開発機の構築は本番機の構築の事前準備になる。これをDockerで作っちゃったら手順も
違うし環境も違うわで、そのノウハウが全く本番機に生かせなくなる。
2019/11/10(日) 10:25:44.77ID:KPJdW8/s
>>125
>色々考慮しないといけなくなる。ディストロアップデートしたら、そのパッケージで動くか検証したり
>パッケージの新しいバージョンを使う時、それが今のディストロでちゃんと動くのか検証しなくちゃいけない。

これは別にDocker使うからやらなくて良いって話にはならないだろ?
2019/11/10(日) 10:27:46.97ID:KPJdW8/s
>>127
>失敗すると次から次へとマシンが落ちていって制御不能になって
>最悪データの損失が発生する。

こんなのVMに対するデメリットでしか無いじゃん。
VM使って在るゲストOSが落ちたから別のゲストOSも使えなくなってEXSi全体が落ちる
(或いはAmazonECS全体が落ちるとか)訊いたことないわ。
2019/11/10(日) 10:31:31.60ID:VIhv4B2u
>>128
VM vs Dockerとなってる時点でやばい
VMとDockerは組み合わせて使うもの。

Dockerコンテナを何個起動したって、マシン台数が
増えることを意味しないからパフォーマンスはあがらないんだよ。

パフォーマンスをあげるには、一台のスペックをあげるか台数を増やすしか無い。
一台のスペックあげるのは当たり前ですぐに限界が来るので
結局台数を増やすことでシステム全体のパフォーマンスをあげるわけだが

そのためには物理マシン数を増やすってのはクラウドで簡単に台数を増減できる時代の今
大変なだけなので却下するとして、じゃあなにか=仮想マシン(VM)でしょ?

結局仮想マシンは使うってことは大前提なはずなんだが?
Dockerを使う理由は仮想マシンと別にあって、

パフォーマンスを上げる=仮想マシンを増やす
増やした仮想マシンに配布しやすくする=Docker
という結論になるはずなんだが?
2019/11/10(日) 10:33:02.94ID:VIhv4B2u
>>130
> いやいや、開発「機」を作るんだろ?

開発「機」を作る事自体を否定してるんじゃなくて、
Dockerを使って開発「機」を作るってのがおかしいと言ってるの

Dockerは機械はどれでも構わないってやつなんだから
機械は機械で別に設計しろ。それはDockerの役割じゃない。
2019/11/10(日) 10:34:18.77ID:VIhv4B2u
>>130
あんたの意見のすべてが「ズレてる」のは
Dockerの役割がわかってないからだよ。
2019/11/10(日) 10:36:14.52ID:VIhv4B2u
なるほどそうか。>>130の話には「開発ソフトウェア」が抜けてるんだわ
Dockerの役割は「開発ソフトウェア」に関わる話なのに
>>130にはその話が抜けてるから、Dockerがでてこない。
(出てきてるように見えるのはDockerの間違った使い方)
2019/11/10(日) 10:37:42.87ID:VIhv4B2u
連投すまんね

>>130の

> その後に、実際の開発を行い、
> 開発機の手順なりスクリプトなりをインフラの人に渡して本番機を作ってもらう。

ここやね。インフラの人に渡すものはコマンド一つ程度でよくなるのがDockerだよ。
2019/11/10(日) 10:37:53.72ID:KPJdW8/s
>>128
いやいや保守派がどうのと言うより費用対効果だろ?
学習コストを上回る効果が得られるなら、当然やる。
めちゃくちゃに忙しいエンジニアが己の持ち時間を削って勉強するんならそれ相当の
見返りを期待するわ。

>メモリとCPU大量につみゃいいじゃん。て言われりゃ、あぁそうだね。

そういうこと。一方でサイボウズの例みたいに1つのサービスのために
1000台のコンピュータが動いていると言うなら、考慮の余地は無いから
鳴るべく軽いコンテナベースに、と言うことにはなるだろうね。

>>129

これは単に分かりやすかった筈のOSの仮想化技術、アプリケーションの仮想化技術を
「コンテナ型」とか分かりにくく言い直しただけ。
別段高い知識でもなんでもない、ワザとか何か知らないけど分かり難くしている。
 
2019/11/10(日) 10:40:35.09ID:VIhv4B2u
>>138
> これは単に分かりやすかった筈のOSの仮想化技術、アプリケーションの仮想化技術を
> 「コンテナ型」とか分かりにくく言い直しただけ。

まだ「個」でしか見えてないw

Kubernetesでは「個」で考えるのではなく「群」を作るのが前提のものだから
難しくなってるって話をしてる。
2019/11/10(日) 10:40:39.49ID:KPJdW8/s
>>136
ん?「実際の開発を行い」と書いているだろ?
フルスタックのエンジニアなんだから、インフラも開発も全部見るのが普通だろ?
というか、君は見ないのか?
2019/11/10(日) 10:41:45.27ID:KPJdW8/s
>>139
すまんね。Dockerの話をしてるのかと思ったよ。
2019/11/10(日) 10:44:55.20ID:VIhv4B2u
「個」をいくつか作っていって、それを組み合わせていけば
そのうち「群」になりますよね?っていうのが従来の発想で、

まず「群」を作りましょう。「個」はその中に生まれていきます。
っていうのがKubernetes。

最初から「大群」になるのがわかってるならKubernetes一択なんだが
「個」をちょこちょこ作っていって「群」まで育てばいいなぁの世界だと
いきなり「群」を作るのは、想定外の話なんだよ。
なんでこの段階からそんなことまで考えなければいけないの?のオンパレードになるから
そういうのをやったことがある人でないとKubernetesは使いこなせない。
2019/11/10(日) 10:47:22.87ID:KPJdW8/s
>>137
この話で行くなら、既にDockerが本番環境でも利用される事を前提にしないと
話が進まない、と言うか導入しようぜ、とならない。

>>123がいつの間にかこんな事言っているけど、ちょっと前までは、>>71みたいに
あくまで開発者の環境という話だったはずだが?
2019/11/10(日) 10:49:08.03ID:VIhv4B2u
>>140
両方見るにしても分けて考えないといけない。
両方見てるだけで、一緒にしてるわけじゃない。

分離して考えて、インフラはインフラのことだけ考えればいい
(利用者などの要件に応じて、どんな規模のインフラを作るか?という話)

そのインフラに、アプリを配布するときに渡す「アプリ開発者が渡す手順書」
(どんなパッケージをインストールするのか?)
っていうの少なくて済みますよっていうのがDocker

インフラ担当はインフラの性能のことだけ考えればいいし、
(アプリ開発者が渡した)アプリを動かす手順書見て
四苦八苦しながらアプリ動かしてみせる!のはインフラの仕事じゃない
2019/11/10(日) 10:51:11.25ID:KPJdW8/s
>>136>>126>>135
スゲー不思議なんだけど、こういうレスが出る奴ってのは
自分達が開発したソフトウェアが本番環境で動作する事を
全く考慮せずに開発してるって事?
そのほうがズレてると思うが?
てか、そんなやり方で環境の差異とかで困った事は無いの?
2019/11/10(日) 10:53:42.80ID:VIhv4B2u
>>143
だからDockerを本番環境で使うんだよw

お前は今どちらの立場で考えてる?
インフラ担当の立場だろう?

お前が気にするのは、インフラの性能と
Dockerコンテナが動くための環境を用意することだけだ


作ったインフラで開発したアプリを動かす、あれやこれやの
パッケージインストール作業の仕事はしなくていい
(↑従来はインフラの仕事だった所)

なぜなら開発アプリをDockerイメージにしておけばコマンド一つとか
設定ファイルにイメージのアドレスを書き込めば終わるから
2019/11/10(日) 10:58:22.55ID:VIhv4B2u
>>145
> 自分達が開発したソフトウェアが本番環境で動作する事を
> 全く考慮せずに開発してるって事?
> てか、そんなやり方で環境の差異とかで困った事は無いの?

困ったことはあるよ? 以前は環境の差異で手元の開発機と
本番環境で微妙にパッケージのバージョンが違ったりして
動かなかったり、動かすために本番環境に手を入れるのが大変だった。

Dockerを導入すると、そういう困ったことが無くなるって話
そこを理解すべきところなのに、Dockerの役割勘違いしてるから
それが解決されるってことがわかってないんだろ?

Dockerを導入した場合、自分達が開発したソフトウェアから見ると
本場環境の違いっていうのは、単にインフラのスペック・能力、インフラの構成が違うだけにしか見えない。
(インフラの構成が違うっていうのは、一台にアプリとデータベースサーバーが
同居してるかというレベルの話で、アプリは普通に最初から分離できるように作るので)
2019/11/10(日) 11:00:05.31ID:VIhv4B2u
ちなみにKubernetesはインフラの構成の一つなのでインフラの話で
Dockerはアプリの配布方法の話なのでアプリ開発の話

KubernetesとDockerは組み合わせて出てきてくるから
同じ層の話だと勘違いする人が多いけど、別だから。
■ このスレッドは過去ログ倉庫に格納されています

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