回答編集履歴

2

そもそも回答してなかったので、答えを記載

2016/05/06 02:13

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -1,3 +1,25 @@
1
+ 超長くなってしまいましたので結論から先に述べます。
2
+
3
+
4
+
5
+ やってる事はどちらも同じ事で大差ありません。
6
+
7
+ VirtualBOXにDocker入りのマシンを立てて、それに指示を出してるだけです。
8
+
9
+
10
+
11
+ 後者は後述の通り、ホストOS内でDockerコマンドを打ち込むと、設定済のVirtualBOX内に渡されよしなに処理されるという塩梅です。
12
+
13
+ 横着するなら後者が良いでしょうけど、Dockerの厳密な動作を要求するのであれば自分でVagrantで環境を立てて、
14
+
15
+ SSHで中に入ってDockerコマンドを打ち込む前者の方が良いと思います。
16
+
17
+
18
+
19
+ ---
20
+
21
+
22
+
1
23
  > MacOSだけでやればいいような気もします
2
24
 
3
25
 

1

DockerのWindows版、MacOS版が出たので全面的に回答を見直し

2016/05/06 02:13

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -2,9 +2,17 @@
2
2
 
3
3
 
4
4
 
5
- それが出来るなら苦労しないんですよ!!!
5
+ それが出来るならだれも苦労しないんですよ!!!
6
6
 
7
+
8
+
9
+ 何故かというと、DockerはLinuxのみで使用されている技術が含まれており、
10
+
11
+ 他のOSの(Windows、MacOS)では動かす事が出来ないのです。
12
+
13
+
14
+
7
- 一部[Wikipediaの記事](https://ja.wikipedia.org/wiki/Docker)から抜粋
15
+ 以下、[Wikipediaの記事](https://ja.wikipedia.org/wiki/Docker)から抜粋していきます
8
16
 
9
17
 
10
18
 
@@ -12,15 +20,41 @@
12
20
 
13
21
 
14
22
 
15
- Linuxのみで動作する技術を使っているからなのです
23
+ 速度を出す為の工夫的な意味で、現状Linuxでしか動作しません
16
24
 
17
25
 
18
26
 
19
- なので、みんなわざわざVirtualBOXかなんかでLinuxマシンを立ち上げてDockerを動かしている訳です。
27
+ ---
20
28
 
21
- (boot2docker改めdocker-machineとか、VirtualBOXで立ち上げたマシンをラッピングしてあたかもローカルにDockerコマンドを再現したかのように見せているだけ)
22
29
 
30
+
31
+ > MacOSにDockerクライアントをインストールし、そこにOSやらミドルウェアやらぶち込んでいく
32
+
33
+
34
+
35
+ これはdocker-machineの事を指しているのだと思います。
36
+
37
+
38
+
39
+ docker-machine(旧名:boot2docker)というMacOSでDockerコマンドを使えるTOOLが存在します。
40
+
41
+ その実体はVirtualBOXをラッピングしたものなので、Vagrantで立ち上げたマシン内でDockerコマンドを叩くのとほぼ同等の事をしています。
42
+
43
+
44
+
45
+ なので質問内容の1と2はほぼ同じアプローチなのです。
46
+
47
+ VirtualBOXのフォルダ共有機能が標準使われており、これは(便利ではあるものの)低速ですし、パーミッションのやり取りが難しく結構不具合が出ます。
48
+
49
+
50
+
23
- 動作が軽いというDockerの持ってるメリットの半分程度が消し飛んでます。
51
+ しかし、どちらもDockerの持メリットの内、動作軽いというかなり大きなメリットが消し飛んでっています。
52
+
53
+ ネイティブのWindowsやMacOSで使えればよいのですが…
54
+
55
+
56
+
57
+ ---
24
58
 
25
59
 
26
60
 
@@ -28,28 +62,74 @@
28
62
 
29
63
 
30
64
 
31
- でも、WindowsやMacOSも様々な仮想環境用の機能が備わっているので、
65
+ WindowsやMacOSも様々な仮想環境用の機能が備わっているので、Windows/MacOS版のDockerも開発されているようです。
32
66
 
33
- それ利用したWindows/MacOS版のDockerも開発されているようです。
67
+ 先日クローズβだかやっており、βテストのメールアドレスに登録ましが何も音沙汰が…5/5に来ました!
34
-
35
- 先日クローズβだかをやってたと思います。
36
68
 
37
69
 
38
70
 
39
- > むしろ本番環境(が例えばAmazon-linuxであれば)と同じEC2上(もしくはVagrantでAmazon-linuxを立ち上げた上)にDockerを動かして色々Image入れてコテナたほうが厳密なのではないかと思えます
71
+ [https://beta.docker.com/](https://beta.docker.com/)で登録するとアプリのURLとトークIDもらて使えます
72
+
73
+ ※あくまでβなので動作しない可能性もあります。
40
74
 
41
75
 
42
76
 
43
- Dockerは上記のLinuxのみという制約がある代わりに、
77
+ ---
44
-
45
- ほとんどオーバーヘッドがなく仮想環境を動かすハイテクな技術が使われています。
46
78
 
47
79
 
48
80
 
49
- を有効活用て、Apacheに専念する仮想環境のイメージ、MySQLに専念する仮想環境のイメージ作って、
81
+ > むしろ本番環境(が例えばAmazon-linuxであば)と同じEC2上(もくはVagrantでAmazon-linux立ち上げた上)
50
82
 
51
- ローカル環境と本番環境で適用すれば差異は出ませんよね?
52
83
 
53
- Vagrant+VirtualBOXでも本番環境に入れて動かす事は出来ますが、オーバーヘッドが凄まじく現実的では無かった為結局Vagrantは本番環境では使われていないのです。
54
84
 
85
+ それも解決策の一つです。
86
+
87
+ でも、それDockerでやる意味ある?
88
+
89
+ (Dockerをゴリゴリ触っている人には環境の依存関係がさっぱりする等のメリットは見いだせます)
90
+
91
+
92
+
93
+ 何故ならば、EC2で立ち上げた環境でテストして、スナップショットからマシンパワーのある環境を複製してそれを本番環境とすれば良いからです。
94
+
95
+ サーバーの状態はDockerfileで記述出来ますが、Vagrantfileでのプロビジョニングを徹底すれば同じ事ですしね。
96
+
97
+
98
+
99
+ Dockerを使う場合、ベンダーロックインを避けるという裏の目的もあります。
100
+
101
+
102
+
103
+ ---
104
+
105
+
106
+
55
- (まぁ、本番環境もローカル環境も同じVagrant-AWSみたいなの立ち上げて運用すれば、そもそもDockerすら必要ありません。Ansibleなんのプロビジョニングツールもありますね…Docker方が効率いと思ますが)
107
+ > 本番環境同じインスタンスでDockerを動かして色々Image入れてコンテナを作ったほうが厳密なと思ます
108
+
109
+
110
+
111
+ 同じスナップショットから生成した仮想マシン…という条件ならば、
112
+
113
+ どの環境で動かしても基本的には全く同じ動作するはずです。
114
+
115
+
116
+
117
+ なので極端な例を挙げると、
118
+
119
+ 本番環境にVagrant+VirtualBOX入れて、Apache専用マシンや、MySQLマシンを動かせばいいんですよ。
120
+
121
+ ※ただしオーバーヘッドがひどいので実際にやると上司に頭はたかれますけど
122
+
123
+
124
+
125
+ DockerはVagrant+VirtualBOXと同じただの仮想環境です。
126
+
127
+ DockerのimageはVagrantのboxとほぼ同等、
128
+
129
+ DockerのcontainerはVagrantのmachineとほぼ同等。
130
+
131
+
132
+
133
+ Linuxでしか使えない素晴らしい技術をふんだんに使って、
134
+
135
+ オーバーヘッドのコストをほぼ0まで押さえ込んでいる程度の違いしかありません。