元スレ
1 :login:Penguin:2020/08/17(月) 00:19:36.93 ID:PKLBL3Xf.net
Linuxが持つコンテナ技術を使った、仮想マシン必要ないアプリケーション仮想化技術で
アプリケーションのデプロイが用意になります
Docker(アプリ仮想化)は仮想マシンと併用して使うことで最も効果を発揮し
開発・テストで使ったDockerイメージと全く同じものを本番環境で使えます
さらにWindowsとmacOSでも同じDockerイメージが動きます。
(Linuxは仮想マシンが不要ですが、WindowsとmacOSは仮想マシン技術を併用して実現しています。)
Dockerイメージ(Dockerfile)はアプリケーション開発者が作成します
動かすのに必要なもの全てがDockerイメージに含まれるので
インフラ担当者はそれを動かすだけ、本来のインフラの作業に集中できるようになります
Dockerは主にウェブ業界でサービスのデプロイの必須技術になりました
情報共有しましょう
http://www.docker.io/
前スレ
Docker Part3
https://mao.5ch.net/test/read.cgi/linux/1552023620/
注意 同じコンテナ技術を使うが異なるアプローチで仮想マシンの
代替を目指しているのがLXC。目的が全く異なるので注意
LXC(Linux Containers)
https://mao.5ch.net/test/read.cgi/linux/1330826939/
42 :login:Penguin:2020/08/20(木) 12:13:55.61 ID:/cAAGkAU.net
クロスプラットフォーム?何を言ってるの?
どちらも同じLinuxなんだが
4 :login:Penguin:2020/08/17(月) 09:50:32 ID:nMpEUDb7.net
> すっげー前にDeployerを教えてあげて、それを納得したはずなのに何も理解していない。
なんだこれ?妄想世界の住民か?
「すっげー前にDeployerを教えてあげて」
なぜ同じ人だと思ってるのか?
「それを納得したはずなのに」
納得したという妄想だろう
納得させたというレスがあるなら持ってきてみてくれ
妄想世界の住民だろうから、絶対に無理だろう
おそらく俺の予想は的中する
絶対に持ってこない
13 :login:Penguin:2020/08/18(火) 12:46:32 ID:vrhRiUKv.net
36 :login:Penguin:2020/08/20(木) 11:56:48.78 ID:clJ3eFcE.net
開発環境を汚したくないんですよ
dockerの特性上、1つのプロジェクトで様々な言語、言語バージョン、ミドルウェア、ツール、サービス、それらに依存するパッケージ、OSレベルの設定、、、
とまあとにかく多くのものに依存してしまう
そして開発者が従事するプロジェクトは1つじゃない
開発マシンにこれらを直接インストールして管理するのは大変だ
dockerならソースをpullしてコマンド打つだけ
別のプロジェクトが干渉する可能性も極めて低くなる
アマチュアさんみたいにAPPとDBのシンプル構成、別プロジェクトは無し
みたいな状況なら直接インストールでもいいかもしれんがね
9 :login:Penguin:2020/08/18(火) 12:17:59 ID:CHI/Brij.net
いや、Dockerfileを書かなくていいのが最大のbuildpacksの長所か
Dockerfileを書かなくていいので、プロジェクト間のコピペを抑止出来る
OSイメージやプログラミング言語のランタイム更新だけなら、リビルドしないことも可能らしい
CIでのビルドに焦点を当ててるように見えるが、
アプリケーションコードを含んでないイメージでローカル開発も可能なんだろうか?
24 :login:Penguin:2020/08/18(火) 21:54:11 ID:OHt1kNFE.net
40 :login:Penguin:2020/08/20(木) 12:10:33.54 ID:CAF7VxqO.net
クロスプラットフォームで動かす予定のないものをクロスプラットフォームで開発する予算は君が出すのかね?
19 :login:Penguin:2020/08/18(火) 13:19:35.69 ID:jnSGFkqj.net
なぜ開発環境と本番環境を基本的に同一にしない?
Dockerなら、developmentもproductionも同じにできる。
6 :login:Penguin:2020/08/18(火) 05:36:30.13 ID:gGD2VCkm.net
設計や動作が大きく変わってるから
長い検証期間を設けてるだけ
そのうちデフォルトになるだろうがすぐは無理
俺が知っている事例で言えばマルチステージビルドで
必要ない場合にビルドされなくなることがある
通常は問題がないだろうがビルドされているという
前提があったりすると問題が発生するだろう
32 :login:Penguin:2020/08/19(水) 20:46:39.72 ID:2bqX/eA6.net
実装〜単体まではローカル端末上のDockerにコード置いたディレクトリマウントして使って、内結以降はイメージビルドして商用相当の開発環境にデプロイしてテスト、そのイメージをリポジトリにあげといて商用からはそれpullするだけって使い方が普通じゃないの?
16 :login:Penguin:2020/08/18(火) 12:51:02 ID:5RCX1vBv.net
またキチくん暴れてるのか
頼むからコテハンつけてくれ
3 :login:Penguin:2020/08/17(月) 07:42:54.73 ID:7e1FicdI.net
> すっげー前にDeployerを教えてあげて、それを納得したはずなのに何も理解していない。
手動でデプロイしてんのか?
オートスケールどうするんだ?
Docker使わないと構築に時間がかかるだろ
Dockerはイメージのrun(内部で自動的にpullする)だけで構築が完了する
アプリが動く状態として完成された物が手に入る
Deployer?運用のことを全くやってないか
数台規模で夜間メンテナンスなんてのを
いまどきやってる程度の小さいレベルんだろうな
26 :login:Penguin:2020/08/18(火) 22:43:53 ID:vrhRiUKv.net
> ベテラン「そもそも開発環境作るの手間だろ。なんで手間かけてトラブルの可能性を増やしてんだお前。マゾか?」
Dockerは開発環境を作るためのものじゃない
何度もいわれていること
22 :login:Penguin:2020/08/18(火) 17:50:23.81 ID:aQjsMjCJ.net
20 :login:Penguin:2020/08/18(火) 13:23:22.29 ID:vrhRiUKv.net
同じにするということはイメージにソースコードを含めるということだな
2 :login:Penguin:2020/08/17(月) 04:20:29 ID:6a0svHoE.net
28 :login:Penguin:2020/08/18(火) 23:27:35.07 ID:vrhRiUKv.net
50 :login:Penguin:2020/08/20(木) 20:22:48.31 ID:ehWIm4Gs.net
QA環境作らないの?
ローカル環境で動かしたら即本番?
そんな訳あるまい
15 :login:Penguin:2020/08/18(火) 12:49:21 ID:6tCAoz+3.net
>>10
アマチュアっぽい
開発中も無駄にdocker buildしてそう
12 :login:Penguin:2020/08/18(火) 12:41:10 ID:CHI/Brij.net
>>10
PHPでの開発の時
ローカル開発の時はphpのコードはボリュームマウントして入れるが
本番環境で使う時は予めphpのコードが入ったイメージをCIで作っておいて
それをプルしてきて動かす
37 :login:Penguin:2020/08/20(木) 11:57:00.03 ID:/cAAGkAU.net
開発はディストリ依存にするべきじゃないよ
変更しづらくなる
51 :login:Penguin:2020/08/20(木) 21:16:16.18 ID:4+rYKSi1.net
25 :login:Penguin:2020/08/18(火) 22:35:26 ID:vrhRiUKv.net
>>23
そういうことを防ぐために例えばRubyでは
Gemfileという仕組みがある
Dockerを使った所でバージョンの固定なんかできんよ
ディストロに入っているライブラリだけを使って開発するんじゃないんだから
むしろディストロに入ってないライブラリを使うことが多い
Dockerの中でGemfileを使ってバージョンを指定しているのであれば、
同じようにDockerを使わない場合もGemfile使ってバージョン指定をするだけの話
Rubyのバージョンも.ruby-versionでしていする
もちろん他の言語でも同様の仕組みがある
47 :login:Penguin:2020/08/20(木) 14:28:45.01 ID:In43Z6cJ.net
Vagrantで十分って老害かと思ったら
その手の構成管理ツールも使えない老害が現れたのか
mysqlとかnginxとかmailcatcherとかminioとかは?
全部手作業でセットアップかよ?
CIはどうする?
老害だからCI知らないのか
39 :login:Penguin:2020/08/20(木) 12:00:02.45 ID:/cAAGkAU.net
もう随分と前から一つのマシン上に
複数の環境を同居させる方法がかくりつされてるんだがな
52 :login:Penguin:2020/08/20(木) 22:03:22 ID:411ZBuPm.net
31 :login:Penguin:2020/08/19(水) 08:56:10 ID:io50YOm5.net
7 :login:Penguin:2020/08/18(火) 12:05:16 ID:CHI/Brij.net
buildpacksって
OSやプログラミング言語のランタイムの更新があった時に
開発者は何もしなくても運用者側だけでアップデート出来るのが長所?
しかし、package.json内の依存ライブラリの更新はそれで対応できるのか?
出来ないなら結局Dependabotみたいのは必要そう
微妙に互換性崩れてて
OSや言語のバージョン上げたら動かないとかもありそう
23 :login:Penguin:2020/08/18(火) 19:28:38.84 ID:dsb1JtiX.net
新人「せんぱぁ〜い。バグ報告書どおりにやったのに違うエラーがでるっス!助けてくださいよ〜(´;ω;`)」
べテラン「どれどれ…おいなんでDockerがあるのに使わないんだ!お前のとこだけ依存ツールのバージョンが違うじゃないか!」
新人「テストだけDocker使えばいいと思ったんスよぉ〜(´;ω;`)」
ベテラン「そもそも開発環境作るの手間だろ。なんで手間かけてトラブルの可能性を増やしてんだお前。マゾか?」
新人「いや〜苦行インストールしたほうがなんかやった感あるじゃないッスか😁いひひ」
ベテラン「はぁ…お前今日アサインしたタスク終わるまで帰るなよ」
新人「そんなあああああああ。゚(゚´Д`゚)゚。」
これ半年ぐらい前の出来事
8 :login:Penguin:2020/08/18(火) 12:14:36 ID:vrhRiUKv.net
運用者なんていない。あるのはシステムだけだ。
開発者が開発し、それを配布するときの面倒なごたごたを
システムが勝手ににやるだけだろう
開発者が楽になるためのツールだ
27 :login:Penguin:2020/08/18(火) 23:10:08.52 ID:aAEc1TPV.net
開発環境を作るためのものでもあるし他のためのものでもある
自分の狭い見識だけで道具の目的を決めつけようとすることは愚かだ
30 :login:Penguin:2020/08/19(水) 08:04:37.15 ID:xs6pIZGX.net
仮想マシンはDockerと同じっていう別なキチガイと
Dockerは開発環境に使えないってキチガイの夢の共演
両方とも寝言は寝て言えっつーのw
そんなの言ってるのお前だけだから
21 :login:Penguin:2020/08/18(火) 13:24:53.94 ID:vrhRiUKv.net
開発中はDockerを使わない
テストで使えば良いのだ
41 :login:Penguin:2020/08/20(木) 12:11:30.98 ID:CAF7VxqO.net
rbenvのようなちゃちな仕組みではいずれ限界が来る
君のところは構成がシンプルなのでなんとかなっているのだろうね
49 :login:Penguin:2020/08/20(木) 17:52:07.20 ID:TlcrtJz0.net
35 :login:Penguin:2020/08/20(木) 11:46:53 ID:clJ3eFcE.net
できるだけ寄せていくだけだ
Alpineで動かすならAlpineで開発したい
でも支給マシンはubuntu、windows、mac、、、
5 :login:Penguin:2020/08/18(火) 01:03:22 ID:OHt1kNFE.net
buildkitっていうのがあるんだってな
環境変数で指定しなくてもデフォルトで利用できるようにしたほうがメリットないだろうか
14 :login:Penguin:2020/08/18(火) 12:47:33 ID:CHI/Brij.net
18 :login:Penguin:2020/08/18(火) 12:58:14 ID:CHI/Brij.net
ローカルのphp開発環境だった
12 factor apps的には本番環境のサーバーでビルドするのはご法度
ビルドはCIでやっとけ
11 :login:Penguin:2020/08/18(火) 12:37:05 ID:vrhRiUKv.net
自分で開発してないイメージはDocker pullして使うものだ
例えばMySQLとかnginxイメージとか
ああいうのは、本来はMySQLとかnginxの開発者が
作ってイメージとして提供するもの
実際にはDocker社が提供しているがね
34 :login:Penguin:2020/08/20(木) 09:25:23.96 ID:M933wn+5.net
> 実装〜単体まではローカル端末上のDockerにコード置いたディレクトリマウントして使って、
デバッグどうするの?
デバッグ用のパッケージを入れるの?
そうすると本番環境とは厳密には違う状態になるよね?
どっちみち開発では便利さのために本番環境とは違う環境になるんだから
Docker使わずに開発しても同じことじゃない?
54 :login:Penguin:2020/08/20(木) 23:18:45.42 ID:/cAAGkAU.net
それは同じプロセスを2つ起動したらメモリは
2倍消費されますか?と言ってるのと同じ
Dockerの話とは関係ない
48 :login:Penguin:2020/08/20(木) 14:30:10.53 ID:9sifYD3t.net
46 :login:Penguin:2020/08/20(木) 12:36:23 ID:CAF7VxqO.net
45 :login:Penguin:2020/08/20(木) 12:23:04 ID:52tAvffs.net
44 :login:Penguin:2020/08/20(木) 12:20:29 ID:CAF7VxqO.net
>>42
Linuxにも様々なディストリがあることを知らないと晒してしまったね
>>43
しょぼい構成の案件に従事してる人は気楽そうでいいね
53 :login:Penguin:2020/08/20(木) 22:39:24.82 ID:AIgOOxMJ.net
1つイメージを利用して、名前の違う2つの内容同じコンテナを実行したら
メモリは2倍消費されますか?
43 :login:Penguin:2020/08/20(木) 12:14:13.75 ID:/cAAGkAU.net
> rbenvのようなちゃちな仕組みではいずれ限界が来る
ああ、知らないのか
無知はかわいそう
17 :login:Penguin:2020/08/18(火) 12:57:12 ID:CHI/Brij.net
同じベースイメージでローカルqgp環境の開発を行い
本番環境ではベース+アプリケーションのコードが入ったイメージを使う
ローカルと本番環境との差異が無くなるし
サーバーが何台に増えようとも
各サーバーはビルド済みイメージをプルして実行するだけで済む
10 :login:Penguin:2020/08/18(火) 12:35:39 ID:vrhRiUKv.net
> アプリケーションコードを含んでないイメージで
なんだそりゃ?
Dockerイメージは(自分で開発している)アプリケーションコードを含むものだろ
自分で開発したイメージを配布・デプロイするためにDockerは使うんだぞ
レスを投稿する(名前省略可)