トップページ > プログラム > 2015年06月16日 > rhusAjzF

書き込み順位&時間帯一覧

1 位/189 ID中時間01234567891011121314151617181920212223Total
書き込み数00000000000020000300101411



使用した名前一覧書き込んだスレッド一覧
ID:tnRZvA/G
デフォルトの名無しさん
【JavaScript】スクリプト バトルロワイヤル50【php,py,pl,rb】 [転載禁止]©2ch.net
Gitをより良くするための運用ガイドライン作成スレ [転載禁止]©2ch.net

書き込みレス一覧

【JavaScript】スクリプト バトルロワイヤル50【php,py,pl,rb】 [転載禁止]©2ch.net
315 :ID:tnRZvA/G[sage]:2015/06/16(火) 12:49:53.28 ID:rhusAjzF
>>313が勘違いされそうだから、少し訂正

「(一台の物理 or 仮想マシン上で)アプリをそのまま動かす」のに比べて
「(一台の物理 or 仮想マシン上で)Dockerコンテナでくるんで動かす」と、
どういうメリットがあるのか?

この質問の答、いるかな?

Dockerを仮想マシン技術と勘違いしている人は多いけど、
この質問の答はDockerを知っているならわかると思うけど。
【JavaScript】スクリプト バトルロワイヤル50【php,py,pl,rb】 [転載禁止]©2ch.net
316 :デフォルトの名無しさん[sage]:2015/06/16(火) 12:57:53.86 ID:rhusAjzF
ごめん。正直に言おう。

説明したくてウズウズしてるw

でもレスあるまで我慢する。( ・`ω・´)
【JavaScript】スクリプト バトルロワイヤル50【php,py,pl,rb】 [転載禁止]©2ch.net
331 :デフォルトの名無しさん[sage]:2015/06/16(火) 17:17:09.17 ID:rhusAjzF
>>317
そういうこと。

このスレだと、rbenv やその他のenv系ツールやbundlerなどで、OSに複数のrubyや
rubyライブラリをインストールして、ディレクトリごとに切り替えるって言うのをやってると思う。
つまりアプリごとにそのアプリが必要とする実行環境を変えたいということ。

Dockerのコンテナはイメージ的には、アプリのライブラリを同梱しているようなもの。
Windowsで言えば、アプリのディレクトリに全てのシステムDLL入れておくこと近い

benvやbundlerだとruby関連は切り替えられてもglibcなどのOSのライブラリは切り替えられない
Dockerを使うとカーネル以外の全てをアプリの一部として取り込める。

LinuxだとCentOSやUbuntuというのはカーネルは細かいバージョンの違いがあるだけで
ほとんどがカーネル以外なので、アプリの一部としてディストリを含めることが可能になる

アプリにディストリを同梱するわけだから、その分ディスク容量は食うけどね。
【JavaScript】スクリプト バトルロワイヤル50【php,py,pl,rb】 [転載禁止]©2ch.net
332 :デフォルトの名無しさん[sage]:2015/06/16(火) 17:20:22.49 ID:rhusAjzF
>>318
通常アプリを簡単にインストールするにはパッケージからインストールするのが楽
だけどこれにしてもインストールした後設定しないといけない。
Dockerを使えば、全てもしくは殆どを設定済みにしてインストールさせられる。

CLIコマンドをDockerコンテナとして配布すれば、インストールするには○○ライブラリが必要です
とか書く必要もなくなる。実際そういう使い方をしている例も存在する。
(まあ起動コマンドがdocker経由になって複雑になるからラッパースクリプトが必要になるけど)

でもDockerコンテナで配布するのに一番適してるのは、サーバー系アプリ。
ウェブサーバー(+ウェブアプリ)とかデータベースサーバーとか。

単純化して考えるとアプリは起動して、適当なポート番号で待ち受けして、適当な場所にデータを永続化できればいい。
仮にアプリが対応しているポート番号が固定で、読み書きするディレクトリが固定であっても
Dockerにポートフォワーディングさせたりボリューム機能を使うことで、
好きなポート、好きなディレクトリにデータを保存させることができる。

つまりアプリが動くのに必要とするもの全てをまとめて
さくっと起動できるようにするのがDockerコンテナなんだよ。

Vagrantは仮想マシンを作るもので、Dockerはアプリを
コンポーネント化したものだって言った意味がわかっただろ?
使い方がぜんぜん違うのよ。
Gitをより良くするための運用ガイドライン作成スレ [転載禁止]©2ch.net
107 :デフォルトの名無しさん[sage]:2015/06/16(火) 17:28:49.04 ID:rhusAjzF
>>105
github前提でもなんでもなくて、一般的な話だよ。
理由もそこに書いてあるとおり。

どうやら俺が説明すると、それは変なやり方だって思い込んでるのか
いちいち調べもせずに絡んできてるようだから、他人が説明した理由を紹介することにする

http://keijinsonyaban.blogspot.jp/2010/10/successful-git-branching-model.html
> --no-ff フラグは、たとえマージがfast-forwardで実行できるとしても、
> 新しいコミットオブジェクトを作成する。これは、履歴にフィーチャーブランチが
> 存在したという情報を失うのを避けるのと、機能の追加に使った全ての
> コミットをひとまとめにしておける。比べてみよう:

> 右の場合、ある機能を実装したコミットオブジェクトをGitの履歴から見つけられない
> ――あなたは全てのコミットログメッセージを手動で見なければならなくなるだろう。
> 機能の全て(例えば、一連のコミット)を revert しなきゃいけないなら、右の状況では
> 本当に頭を痛くさせる。だがもし --no-ff フラグを使用したなら、簡単に終わるのだ。
>
> 確かに、これだとより多くの(空の)コミットオブジェクトを作成するはめになるが、
> そこから得られるものはコストよりずっと大きい。
Gitをより良くするための運用ガイドライン作成スレ [転載禁止]©2ch.net
111 :デフォルトの名無しさん[sage]:2015/06/16(火) 20:02:32.79 ID:rhusAjzF
>>108
> これは、git flowモデル前提だね

どこに書いてるのさw

「git flowモデル前提と知っている」ということなら
「git flowモデル以外では違うと知っている」はず。

ならば、違うフローでは、--no-ffをつけていないということを
具体例を上げて示すべきでは?
【JavaScript】スクリプト バトルロワイヤル50【php,py,pl,rb】 [転載禁止]©2ch.net
339 :デフォルトの名無しさん[sage]:2015/06/16(火) 22:58:46.20 ID:rhusAjzF
>>336
> 基本的にライブマイグレーションできないのでクリティカルな用途に使えないし、
なんでそこでライブマイグレーションが出てくるのかわからん。

Dockerコンテナ = アプリ

ここまでだいじょうぶだよね?

MySQLはライブマイグレーション出来ない。
nginxはライブマイグレーション出来ない

そう言ってるのと同じことなんだけど。
【JavaScript】スクリプト バトルロワイヤル50【php,py,pl,rb】 [転載禁止]©2ch.net
340 :デフォルトの名無しさん[sage]:2015/06/16(火) 23:03:05.86 ID:rhusAjzF
Dockerは「アプリ」にライブラリなどを含めて、
「アプリ+α」にするだけなので、

仮想マシンのライブマイグレーションが
その上で動く「アプリ」を別にマシンに移動できるというのなら
当然「アプリ+α」だって移動できる。

Dockerを仮想マシンとして考えてるから、
そういDockerコンテナ(=アプリ)に
ライブマイグレーション機能が必要だとか考えてしまう。

繰り返すけど、Dockerで作り出すものは単なるアプリなんだよ。
【JavaScript】スクリプト バトルロワイヤル50【php,py,pl,rb】 [転載禁止]©2ch.net
341 :デフォルトの名無しさん[sage]:2015/06/16(火) 23:08:36.00 ID:rhusAjzF
>>336
> ネットワーク対応と状態保存への対応がクソだから、
> 特定の設定がいるサービスに向かない、ネットワーク越しの設定も向かない
> 設定に環境変数の入ったスクリプトを用意する必要があるので
> シェルや外部アプリで管理する事になる

そりゃ、Dockerで作ったものも、単なるアプリなんだから
設定いるに決まってるだろw
その設定を楽にするツールは当然あるがね。

> 特定ディレクトリへのローカルデータ保存や、
> 外部へのファイル保存を考えていないので、
それは明らかに間違い。起動時に-vで指定した場所(ディレクトリ)に保存できる。

> 普通はdbは外に置く羽目になる
外っていうのが意味不明だけど、通常ウェブアプリは外部のデータベースを使う。
Dockerで包んだとしても、ウェブアプリはウェブアプリなので外部の
データベースを使うことに変わりはない。"アプリなので"

もちろんウェブアプリとデータベースを一つにまとめることも可能。
Windows用の家計ソフトとか簡易データベースを内蔵していたがあれと同じ考え。
「アプリ+α」にデータベースサーバーをまとめることも可能で
保存先をホスト上のディレクトリにすることも可能。
【JavaScript】スクリプト バトルロワイヤル50【php,py,pl,rb】 [転載禁止]©2ch.net
342 :デフォルトの名無しさん[sage]:2015/06/16(火) 23:26:53.28 ID:rhusAjzF
別に俺は大げさな宣伝文句なんぞいっとらん。
仮想マシンを置き換えるとも思ってない。

だって、全く別のものなんだから。

Dockerが置き換えるのはアプリとそのデプロイ方法

CentOSに最新バージョンのWordPressをインストールして動かすまでの
手順を考えて見ればわかる。各OSに合わせて必要なモジュールを入れて設定をする。

それがDockerを使うと一度そのイメージをつくるだけでCentOSであっても
Ubuntuであっても同じように動かせる。イメージを作るためのDockerfileという
ファイルがあるから、どんな設定をしたのか明らかだし、カスタマイズするのも簡単

つまりディストリが備えるパッケージ管理システムを使わずに
アプリのインストールが可能になるんだよ。

仮想マシンを置き換える話なんか俺はしとらん。
【JavaScript】スクリプト バトルロワイヤル50【php,py,pl,rb】 [転載禁止]©2ch.net
343 :デフォルトの名無しさん[sage]:2015/06/16(火) 23:34:37.43 ID:rhusAjzF
>>341
面白い突っ込みどころを見落としていたw

> ネットワーク越しの設定も向かない

これって、DockerコンテナにSSHで接続とかいう発想してるだろ?w
仮想マシンの変わりだと思ってる証拠だよ。

Dockerコンテナ=アプリ

例えば、Dockerコンテナとして、MySQLを作ったとする。
必要なライブラリやユーザーランドを含めた。

「MySQL+α」というアプリを作ったとする。
ネットワーク越しの設定がしたいというのは、
「MySQL+SSH+α」というアプリを作ろうとしているってことだ

「MySQLの管理機能にSSHで接続したら便利じゃね?
MySQLにSSH管理機能追加しようぜ!」という発想。

そんなキメラみたいなアプリを作ろうと考えるなよw

「MySQL+α」アプリをネットワーク越しで設定なんかしないんだよ。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。