探検


Docker Part2©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/09/28(木) 14:00:45.18ID:/4TtIqGt
LXCを使った軽量仮想環境。
これからの動向が気になるところ。
情報共有しましょう。

http://www.docker.io/

前スレ
Docker
http://mao.2ch.net/test/read.cgi/linux/1374861492/
2018/07/29(日) 23:37:55.72ID:PCsU6lV8
コンテナでsshd起動してsshでアクセスするなとかいうのも基本としてあるってのは聞いたことある。
けどそんなの関係ねぇ。
実際エンジニアに開発環境としてコンテナ提供するのにsshでアクセスできないって不便でしかない。
2018/07/29(日) 23:54:22.87ID:PCsU6lV8
ちなみにシステムコンテナってSolarisのzoneみたいなものかな。Linuxだと何かあるのだろうか。
2018/07/30(月) 01:20:21.45ID:QZl1Bega
>>236
コンテナの中にあるファイルはコンテナ削除すると消えるでしょ?永続化しない。
残っていてほしいファイルはボリュームでコンテナの外にだすわけだから
そのファイルの編集はコンテナの外でやれば良いわけ
中にvimを入れておくのは開発中とかの一時的にしかやらんよ

っていうか使いづらいでしょ? あんたvimの設定とかしてないの?
デフォルト設定で使いづらいからカスタマイズするのが常識だけど
コンテナの中にあるのはなんの設定もされてないvimじゃん
2018/07/30(月) 01:23:38.82ID:QZl1Bega
>>237
関係ないとか言ってないで、自分の解釈が大きくずれているって考えたほうが良いよ
ちょっと間違いレベルじゃなくて、方向性が大きくずれている
変な使い方をしているから、使いづらく感じるんだよ
2018/07/30(月) 06:34:10.24ID:jEBEwRTJ
>>239
残ってほしい開発後のプログラムがあるならgitでpushしとけば良くない?

設定あんまりシナイ派だけど、仮にするとしても、それこそvimrcとかgitでpushしてるものをcloneで持ってくれば設定なんて一撃で終わらない?それじゃあダメな理由とかある?
2018/07/30(月) 06:40:38.62ID:jEBEwRTJ
>>240
解釈がどうじゃなくて、実際便利に使えるかどうかが問題なんだけど。
どんなに正しくても実際に使い難ければ正しくてもやらない。
もちろんセキュリティーや影響は考慮するけど、その辺問題なければ基本がどうとか関係ない。

PMBOKとかAgileとか、基本に忠実にそのままやったら余計効率が悪くなって使えたもんじゃないでしょ。教科書守れば良いって思考は実用的な効率を犠牲にする。
2018/07/30(月) 06:42:13.68ID:QZl1Bega
>>241
gitは作業中断時に一時保存するための道具じゃないし、
設定しないなんて使いづらいだけだし、
いちいちcloneするとか面倒くさいことこの上ないし、

ホストでやれば普通にできることを、いちいちやらないといけないのか?
間違ってる方向に進むとこれから、あれやこれが使いにくいって愚痴るだけだぞ
すでに愚痴ってそうだがw その原因はすべて間違った使い方にある
変な癖が付く前に矯正したほうがいい
2018/07/30(月) 06:43:07.14ID:QZl1Bega
>>242
> 解釈がどうじゃなくて、実際便利に使えるかどうかが問題なんだけど。

便利に使うための手段を、お前がみんな捨ててるから、
(俺は不便な中で生活してるから)不便に思わないんだって言ってるだけじゃん
2018/07/30(月) 06:44:51.91ID:QZl1Bega
>>242
> PMBOKとかAgileとか、基本に忠実にそのままやったら余計効率が悪くなって使えたもんじゃないでしょ。教科書守れば良いって思考は実用的な効率を犠牲にする。

お前のその考え方だと、間違った解釈をして間違ったやり方をやって
余計効率が悪くなった。PMBOKとかAgileはクソって言ってるようにしか見えないね

まず教科書守ってやろう。いまお前は教科書通りのことを守らずに使いづらいと言ってる
2018/07/30(月) 06:48:28.40ID:jEBEwRTJ
>>243
一時保存なんて利用用途で言った覚えはないけど、仮にそうだとしても何で一時保存でgit使ったらダメなの?

あなたって基本に従うってことに束縛されて思考が限定されてる気がする。自分だけでそういう方針で進めるのは勝手だけど、人にやり方強制しだすと嫌われるから考え改めた方が良いよ。
新卒ならまだ良いけど。
2018/07/30(月) 06:51:41.70ID:jEBEwRTJ
>>244
よくわからんけど、君の言ってるようにアプリケーションコンテナの中のファイルは編集するなって事を守ると何が便利なの?物凄く不便じゃない?

ローカルなホストにファイルを永続化させるよりgitにpushする方が安心感あると思わない?
2018/07/30(月) 06:52:59.21ID:QZl1Bega
>>246
gitはバージョン管理するための道具であって、
バージョン管理しないならタダの保存に過ぎないから

それにgit使うなら、コミットする時に、メールアドレスと名前の設定がいるだろ?
gitでpushするならssh鍵が必要だろ?
rootでやるわけないから、自分のhomeディレクトリがいるだろ
お前本当にコンテナの中でgitでpushとかしてるんか?
してねーだろ。使いづらいもんな

お前はまだ初心者で、どうせgitもオープンソースものをcloneするぐらいのことしか
したこと無いんだろ。基礎ができてないんだからまず教科書通りにやれと
2018/07/30(月) 06:54:15.51ID:jEBEwRTJ
PMに教科書通りのやり方を強制されて疲弊してる現場を見てきたから経験談として話してるだけ。
教科書通りやって現場がうまくまわってるならそうすればいいよ。
というか、むしろ教科書なぞってうまくいってる現場があるならそれ勉強会とかで話してほしい。見に行くので。
2018/07/30(月) 06:55:30.13ID:QZl1Bega
>>247
> よくわからんけど、君の言ってるようにアプリケーションコンテナの中のファイルは編集するなって事を守ると何が便利なの?物凄く不便じゃない?
ホストに置いたファイルを編集すればいいだけだろ。
それがコンテナの中にボリュームを通して見えてるんだから
コンテナの中に入って編集する必要がない。
コンテナの中の環境を整える必要もない

もっと便利なものが俺には見えてるんだが、
お前のやり方は何が便利なの?

できるといってるだけで便利なんてお前は一言も言ってないよね?
お前のやり方が俺は不便だと言ってる。反論は?
できる、やったらだめなの?は不便であることの反論にはならない
2018/07/30(月) 06:55:41.00ID:jEBEwRTJ
ということで、あなたのやり方を変えさせるつもりもないし、自分のやり方を変えるつもりもありません。
以上終わり。
2018/07/30(月) 06:57:17.09ID:QZl1Bega
>>247
> ローカルなホストにファイルを永続化させるよりgitにpushする方が安心感あると思わない?

ホストにあればgitにpushしたいと思ったタイミングでpushできるんだが

コンテナ消すと中で編集したファイルが消える。不便だからgit入れて忘れずにpushしなきゃって
コンテナのファイルを直接編集すると不便だと言ってなかったか?w
2018/07/30(月) 06:58:17.45ID:QZl1Bega
>>251
俺はやり方をお前に押し付けてるんじゃなくて、

正しいやり方にしないとお前が困るという事実を言ってるだけ
お前はその事実に反論してない。困るのは自分だけだから
良いじゃないかって逃げてるだけだ。
2018/07/30(月) 07:00:14.56ID:QZl1Bega
>>249
そのPMが教科書通りにやってないだけだよw
教科書通りにやることが簡単だと思ってはいけない

教科書に反論するときは、教科書の場合と何が違っているかまで
理解してからじゃないといけない。

教科書になってるぐらいだから基本的には正しいんだよ。
それが当てはまらない理由を見つけない限り、教科書に反論してはいけない。
当てはまらない理由がわからないのは、理解してないってことになるんだから。
2018/07/30(月) 07:08:27.71ID:QZl1Bega
ほんとね。反論の一つでもできればまだいいんだが、
回避策はあるというだけじゃ、その方が良いってことにはならないんだよ。
全部回避策を入れないとやっていけないってことになってるんだから、

優れた方法っていうのは、回避策を使わずとも自然な形で実現できる
いちいち回避策を考えなきゃやってられないってのは、
やり方が間違ってる証拠でしか無いんだよ


余談だが、アメリカではツールをただ導入するのではなく、そのツールが
想定している使い方を学習して、やり方をツールにあわせるから効率的になるらしい。

日本だとツールを導入して、自分のやり方にカスタマイズさせる。
やり方を変えようとしないから生産性も変わらないし、
ツールのカスタマイズにコストも掛かるとのこと。それと同じだ
2018/07/30(月) 09:12:18.18ID:2DtBR6Mw
アプリケーションコンテナはyum, aptのパッケージ相当だと思ってるなぁ
基本的に使い捨てて常にクリーンなコンテナに出来るのがいいし, だからこそkubernetesとかで高い自己修復性を持てる
2018/07/30(月) 09:22:21.96ID:IG0rWwn1
すると、Vimのような手動カスタマイズほぼ必須のアプリは
コンテナ化には適さないのか
docker searchしてもVimが出てこないのが不思議だったがそういうことか
2018/07/30(月) 09:55:24.40ID:2DtBR6Mw
そのカスタマイズ部分を, プラグインならホストからマップするか別コンテナで, 設定ファイルはホストからマウントする必要があるだろう
2018/07/30(月) 16:34:35.00ID:QZl1Bega
>>257
手動カスタマイズの有無じゃないな。
プログラム本体がコンテナに隔離されているので、
コンテナの外に自由にアクセスするものは適さない

もちろんプログラム本体がコンテナに隔離されているおかげで
コンテナの外がどうなっていようがいろんな環境に持っていける

コンテナと外部との通信は基本的にネットワーク通信で行うか
ボリュームとしてマウントしたディレクトリ経由で行う

ボリュームとしてマウントするから、コンテナの外がどのような
OSやディレクトリ構造であっても、コンテナの中からは同じよう見える
コンテナの外がどうなっていても中からは同じように見える。
Dockerの "仮想化" というのはこういう意味
(ハードウェアをソフトウェアで仮想的に作り出すという意味じゃない)

もちろん不可能ではないが面倒なだけ
2018/07/30(月) 19:40:21.56ID:vC8FJAc3
これいわゆるイキリstaticおじさんが駄々こねて屁理屈連投してるいつもの案件じゃなくて
もしかして今回に限っては、Docker業界的にも、回避策やカスタマイズの工夫するくらいなら
コンテナはそぐわないからツールの使い方としてもやめてねって方向性にいつの間にか大勢が傾いてるのか
2018/07/30(月) 19:45:58.92ID:QZl1Bega
エクセルで小説書くなってだけの話
2018/07/31(火) 19:28:27.70ID:9kOFb8Cb
docker-tramp.el 便利だー。この機能使うためだけにemacs使いになっても良いと
思うくらい。コンテナにvimやsshdインストールする必要がありません。
2018/07/31(火) 20:23:57.73ID:GXqvrTdQ
いまWSL使ってDockerを使っているんですが、atomでホストに置いたファイルを修正して
それをイメージに反映させたいのですが、修正するたびにビルドするのが面倒です。

なのでボリュームを使ってホストのディレクトリをコンテナ内に共有しようと思っています。
Linuxではうまく動いているのですが、WSLだとうまく動かないのですが、
何が問題だと考えられますか?
2018/07/31(火) 20:24:57.09ID:GXqvrTdQ
と、書き込んでからひらめきました。
WSLで使ってるのはWindows上のDockerなので
パスの指定をC:\〜でやらないといけないきがします。
2018/07/31(火) 20:28:45.59ID:C0KTXAUF
ビンゴでした!
 

こんな感じでホストのディレクトリがコンテナから見えました。
これでWindowsのatomを使って簡単に編集できそうです。

スレ汚し申し訳ありません
2018/07/31(火) 20:30:02.34ID:C0KTXAUF
↑なぜかコマンドを書き込んだらエラーになったので怪しそうな所を大文字で書きます。

docker run -p80:80 -v"$(wslpath -wa www):/var/www" -d httpd
2018/07/31(火) 20:33:08.23ID:PupCkl8+
>>262
もとからvimもsshdも入れたりなんかしてないよ。
入れるもんでもないしね。

docker-tramp.elも別にいらないかな。
ファイルを修正したいならボリュームにすればいいだけだし、
sshdはdocker execを使えばいいので、
2018/07/31(火) 20:50:25.97ID:PXAb2zrY
>>267
定位置にあるconfファイル等を色々いじってテストしたい時はどうしているの?
2018/07/31(火) 20:52:18.71ID:WDZkbP+f
>>267
コンテナ提供するアプリエンジニアにdocker exec使えって言うの?
2018/07/31(火) 20:54:37.84ID:WDZkbP+f
大した負荷のかからないコンテナをサーバーって言ってアプリエンジニアに提供するときある。ポート番号ちょっと変わってるサーバだと思って使ってくれてるよ。
本人はdockerだのコンテナだのを使ってる事に気づいてない。
2018/07/31(火) 21:27:30.82ID:PupCkl8+
>>268
だからボリューム使えばいいじゃない?

$ docker run -it debian cat /etc/debian_version
9.5

# ホスト上のファイルにすげかえ
$ docker run -it -v/etc/hosts:/etc/debian_version debian cat /etc/debian_version
127.0.0.1 localhost


>>269
普通に使ってるからなぁ。
アプリエンジニアがDockerfileを書かないで誰が書くというの?
アプリを動かすのに何が必要かを知ってるのはアプリエンジニアだけなんだが。

build, run, exec などを使って正しく動くコンテナのイメージを作るまでがアプリエンジニアの仕事で
コンテナを動かす環境を作って指定されたイメージを起動するのがインフラエンジニアの仕事

>>270
アプリエンジニアがDockerイメージを作ってないのはおかしい。
アプリを作ってる人でないと、アプリを動かすのに必要なものは知らないんだから
「手元のマシンだと動きました」「ライブラリのバージョンが違ってるんですねー」
これをなくすためにDockerがあるというのに。仕事の分担が間違ってる。
2018/08/01(水) 05:48:16.53ID:rxe3lfEn
動くコンテナのイメージ作るのがアプリエンジニアの仕事なら、結局必要なミドルをアプリエンジニアが入れる事になってそれこそインフラエンジニアの作った本番環境と差異が出てしまうと思うのですが。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

どうせこういうことすら思いつかなかったんだろ?
だからお前がアプリケーションが動くサーバー作ったことねーだろってわかるんだよ。
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〜のコマンドだけで構築できるというのに。
2018/08/05(日) 08:47:03.44ID:t1pjwXO7
すごいドヤ顔w
305login:Penguin
垢版 |
2018/08/05(日) 13:08:10.87ID:FlnPtVfq
>>304
めちゃくちゃ便利やでw

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

VMでもDockerでもサンドボックスとして安心できる
その上で、VMよりも軽いのがメリットなわけで
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


マシンリソースを無駄にすること無く、サンドボックスを動かせる
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
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だって同じようにホストのカーネルメモリ書いてないだろ?
2018/08/08(水) 04:28:44.09ID:tyC3gFls
             ___
            / ノ '' ⌒\  
          / ( ● ) (● )\
ドヤーーーーー / :::::⌒,   ゝ⌒:::::\ ーーーーーーー!!!!
        |      ト==ィ'     |
  _,rーく´\ \,--、  `ー'    /
. ,-く ヽ.\ ヽ Y´ /    ー   ´ノ ` ー-、
 { -! l _」_ノ‐′/\― 、  ,−/_|    ∧
. ヽ ゙ー'´ ヽ  / フ \     /ヽ     /ハ
 `ゝ、  ノ ノ  \   ヽ  / /
     _|\∧∧∧MMMM∧∧∧/|_
     >                  <
. | ヽヽ |   _/_ヽヽ |  ヽ|  |ヽ  ム ヒ | |
. ├─  ̄T ̄/  / /  ̄フ| ̄  | ̄| ̄ 月 ヒ | |
. |.     \  / ノ   / |  / | ノ \ ノ L_い o o
2018/08/08(水) 04:40:02.13ID:tyC3gFls
ま、そもそもVMとDockerは違うもので、両方を組み合わせて使うものなんだけどね

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

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

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

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

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

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

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

VMとコンテナは使い方が明確に違う(ことを理解してなきゃこんなこと書けない)
■ このスレッドは過去ログ倉庫に格納されています

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