Docker Part4
■ このスレッドは過去ログ倉庫に格納されています
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/ >Dockerは主にウェブ業界でサービスのデプロイの必須技術になりました >>1 は何も理解してない馬鹿。 すっげー前にDeployerを教えてあげて、それを納得したはずなのに何も理解していない。 マジでお前は、いつ学習が完了するんだよ。 https://mao.5ch.net/test/read.cgi/linux/1552023620/ >>651 何故話をこんなレベルまで戻すのか > すっげー前にDeployerを教えてあげて、それを納得したはずなのに何も理解していない。 手動でデプロイしてんのか? オートスケールどうするんだ? Docker使わないと構築に時間がかかるだろ Dockerはイメージのrun(内部で自動的にpullする)だけで構築が完了する アプリが動く状態として完成された物が手に入る Deployer?運用のことを全くやってないか 数台規模で夜間メンテナンスなんてのを いまどきやってる程度の小さいレベルんだろうな > すっげー前にDeployerを教えてあげて、それを納得したはずなのに何も理解していない。 なんだこれ?妄想世界の住民か? 「すっげー前にDeployerを教えてあげて」 なぜ同じ人だと思ってるのか? 「それを納得したはずなのに」 納得したという妄想だろう 納得させたというレスがあるなら持ってきてみてくれ 妄想世界の住民だろうから、絶対に無理だろう おそらく俺の予想は的中する 絶対に持ってこない buildkitっていうのがあるんだってな 環境変数で指定しなくてもデフォルトで利用できるようにしたほうがメリットないだろうか >>5 設計や動作が大きく変わってるから 長い検証期間を設けてるだけ そのうちデフォルトになるだろうがすぐは無理 俺が知っている事例で言えばマルチステージビルドで 必要ない場合にビルドされなくなることがある 通常は問題がないだろうがビルドされているという 前提があったりすると問題が発生するだろう buildpacksって OSやプログラミング言語のランタイムの更新があった時に 開発者は何もしなくても運用者側だけでアップデート出来るのが長所? しかし、package.json内の依存ライブラリの更新はそれで対応できるのか? 出来ないなら結局Dependabotみたいのは必要そう 微妙に互換性崩れてて OSや言語のバージョン上げたら動かないとかもありそう 運用者なんていない。あるのはシステムだけだ。 開発者が開発し、それを配布するときの面倒なごたごたを システムが勝手ににやるだけだろう 開発者が楽になるためのツールだ いや、Dockerfileを書かなくていいのが最大のbuildpacksの長所か Dockerfileを書かなくていいので、プロジェクト間のコピペを抑止出来る OSイメージやプログラミング言語のランタイム更新だけなら、リビルドしないことも可能らしい CIでのビルドに焦点を当ててるように見えるが、 アプリケーションコードを含んでないイメージでローカル開発も可能なんだろうか? > アプリケーションコードを含んでないイメージで なんだそりゃ? Dockerイメージは(自分で開発している)アプリケーションコードを含むものだろ 自分で開発したイメージを配布・デプロイするためにDockerは使うんだぞ 自分で開発してないイメージはDocker pullして使うものだ 例えばMySQLとかnginxイメージとか ああいうのは、本来はMySQLとかnginxの開発者が 作ってイメージとして提供するもの 実際にはDocker社が提供しているがね >>10 PHPでの開発の時 ローカル開発の時はphpのコードはボリュームマウントして入れるが 本番環境で使う時は予めphpのコードが入ったイメージをCIで作っておいて それをプルしてきて動かす >>10 アマチュアっぽい 開発中も無駄にdocker buildしてそう またキチくん暴れてるのか 頼むからコテハンつけてくれ 同じベースイメージでローカルqgp環境の開発を行い 本番環境ではベース+アプリケーションのコードが入ったイメージを使う ローカルと本番環境との差異が無くなるし サーバーが何台に増えようとも 各サーバーはビルド済みイメージをプルして実行するだけで済む ローカルのphp開発環境だった 12 factor apps的には本番環境のサーバーでビルドするのはご法度 ビルドはCIでやっとけ >>13 なぜ開発環境と本番環境を基本的に同一にしない? Dockerなら、developmentもproductionも同じにできる。 同じにするということはイメージにソースコードを含めるということだな >>15 開発中はDockerを使わない テストで使えば良いのだ 新人「せんぱぁ〜い。バグ報告書どおりにやったのに違うエラーがでるっス!助けてくださいよ〜(´;ω;`)」 べテラン「どれどれ…おいなんでDockerがあるのに使わないんだ!お前のとこだけ依存ツールのバージョンが違うじゃないか!」 新人「テストだけDocker使えばいいと思ったんスよぉ〜(´;ω;`)」 ベテラン「そもそも開発環境作るの手間だろ。なんで手間かけてトラブルの可能性を増やしてんだお前。マゾか?」 新人「いや〜苦行インストールしたほうがなんかやった感あるじゃないッスか😁いひひ」 ベテラン「はぁ…お前今日アサインしたタスク終わるまで帰るなよ」 新人「そんなあああああああ。゚(゚´Д`゚)゚。」 これ半年ぐらい前の出来事 >>23 そういうことを防ぐために例えばRubyでは Gemfileという仕組みがある Dockerを使った所でバージョンの固定なんかできんよ ディストロに入っているライブラリだけを使って開発するんじゃないんだから むしろディストロに入ってないライブラリを使うことが多い Dockerの中でGemfileを使ってバージョンを指定しているのであれば、 同じようにDockerを使わない場合もGemfile使ってバージョン指定をするだけの話 Rubyのバージョンも.ruby-versionでしていする もちろん他の言語でも同様の仕組みがある > ベテラン「そもそも開発環境作るの手間だろ。なんで手間かけてトラブルの可能性を増やしてんだお前。マゾか?」 Dockerは開発環境を作るためのものじゃない 何度もいわれていること 開発環境を作るためのものでもあるし他のためのものでもある 自分の狭い見識だけで道具の目的を決めつけようとすることは愚かだ 環境を作るとかいって仮想マシンの代わりだと思ってるやつの発言はこんなに間抜け コンテナ型仮想化Dockerスレ その2 https://mevius.5ch.net/test/read.cgi/tech/1569542871/416- 正しい使い方を知らないやつが開発環境とか言うんじゃねーよ >>28 VSCode Remote Containersという拡張機能がVSCodeにある Microsoftは間違っていたとでも言うのかwwwwwwww https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers The Remote - Containers extension lets you use a Docker container as a full-featured development environment. Whether you deploy to containers or not, containers make a great development environment because you can: * Develop with a consistent, easily reproducible toolchain on the same operating system you deploy to. * Quickly swap between different, isolated development environments and safely make updates without worrying about impacting your local machine. * Make it easy for new team members / contributors to get up and running in a consistent development environment. * Try out new technologies or clone a copy of a code base without impacting your local setup. 仮想マシンはDockerと同じっていう別なキチガイと Dockerは開発環境に使えないってキチガイの夢の共演 両方とも寝言は寝て言えっつーのw そんなの言ってるのお前だけだから 実装〜単体まではローカル端末上のDockerにコード置いたディレクトリマウントして使って、内結以降はイメージビルドして商用相当の開発環境にデプロイしてテスト、そのイメージをリポジトリにあげといて商用からはそれpullするだけって使い方が普通じゃないの? > 実装〜単体まではローカル端末上のDockerにコード置いたディレクトリマウントして使って、 デバッグどうするの? デバッグ用のパッケージを入れるの? そうすると本番環境とは厳密には違う状態になるよね? どっちみち開発では便利さのために本番環境とは違う環境になるんだから Docker使わずに開発しても同じことじゃない? できるだけ寄せていくだけだ Alpineで動かすならAlpineで開発したい でも支給マシンはubuntu、windows、mac、、、 開発環境を汚したくないんですよ dockerの特性上、1つのプロジェクトで様々な言語、言語バージョン、ミドルウェア、ツール、サービス、それらに依存するパッケージ、OSレベルの設定、、、 とまあとにかく多くのものに依存してしまう そして開発者が従事するプロジェクトは1つじゃない 開発マシンにこれらを直接インストールして管理するのは大変だ dockerならソースをpullしてコマンド打つだけ 別のプロジェクトが干渉する可能性も極めて低くなる アマチュアさんみたいにAPPとDBのシンプル構成、別プロジェクトは無し みたいな状況なら直接インストールでもいいかもしれんがね >>35 開発はディストリ依存にするべきじゃないよ 変更しづらくなる >>36 > 開発環境を汚したくないんですよ 汚す必要ないのでは? > dockerの特性上、1つのプロジェクトで Dockerの性質のものは一つもないね > 開発マシンにこれらを直接インストールして管理するのは大変だ 全然大変じゃないよ。 そのためにrbenvなどの仕組みが普及してる アプリを動かす環境は特定のディレクトリ以下にすべて入る もう随分と前から一つのマシン上に 複数の環境を同居させる方法がかくりつされてるんだがな >>37 クロスプラットフォームで動かす予定のないものをクロスプラットフォームで開発する予算は君が出すのかね? >>38 rbenvのようなちゃちな仕組みではいずれ限界が来る 君のところは構成がシンプルなのでなんとかなっているのだろうね >>40 クロスプラットフォーム?何を言ってるの? どちらも同じLinuxなんだが > rbenvのようなちゃちな仕組みではいずれ限界が来る ああ、知らないのか 無知はかわいそう >>42 Linuxにも様々なディストリがあることを知らないと晒してしまったね >>43 しょぼい構成の案件に従事してる人は気楽そうでいいね Vagrantで十分って老害かと思ったら その手の構成管理ツールも使えない老害が現れたのか mysqlとかnginxとかmailcatcherとかminioとかは? 全部手作業でセットアップかよ? CIはどうする? 老害だからCI知らないのか QA環境作らないの? ローカル環境で動かしたら即本番? そんな訳あるまい 1つイメージを利用して、名前の違う2つの内容同じコンテナを実行したら メモリは2倍消費されますか? >>53 それは同じプロセスを2つ起動したらメモリは 2倍消費されますか?と言ってるのと同じ Dockerの話とは関係ない >>53 2倍になるよ ただLinuxにはKSMという仕組みがある それで消費を削減できる そうなんですね 今はnginxとapacheでリバースプロキシでマルチサイトを構築してるんですが dockerのほうがPC移行したときにすぐ構築できるので楽だと思ったんですよね apacheってオワコンじゃないの? PHP動かす用ならnginxとphp-fpmの方が良い メモリーの少ないサーバーで動かしたいのなら ますますnginxの方がよい 速いしメモリー消費が少ない nginxをフロントに置いてPHPはapacheで動かすのがいいらしいっすよ リバースプロキシていうみたいです うちは本番環境がAWS ECSだからELBをリバースプロキシとして使ってる nginx+php-fpmはその背後に配置 ECSはランダムなポート番号を自動的に選択して ELBのターゲットグループにタスクを登録してくれる 新しいバージョンをデプロイする時も徐々に新しいバージョンに流す通信を増やして切り替えてくれる いきなりブチッ!て切るようなことはしない パスやドメインに応じたルーティングも可能 ELBじゃなくてnginxでも対応出来るが nginx単体でちゃんと高可用性でやるのはたぶんむり ELBの方が金が掛かるが便利 Docker Hubがコンテナイメージの保存期間に加えてPull回数にも上限を設定すると発表 https://gigazine.net/news/20200826-docker-hub-update-policy/ 容量に関わらず100回固定? 複数IPを使うヘビーユーザーが出てきて 結局一般ユーザーが割りを食うだけになりそう docker-compose.ymlで十分だから今の所イメージを保存する必要がこない >>62 100回ってびっくりしたわ 6時間あたり100回か それに「Pull回数の制限はイメージのPullを行う側が利用する」と書いてある イメージごとじゃないな どうやって判断してるんだろう? > 匿名ユーザーの場合はIPアドレスをもとに制限されるとのこと。 書いてあったw そんなケチるほど金ないのか マイクロソフトに買い取って貰えばいいのに pullしようとしたけどすでに最新だった場合ってどうなるんだろうか? pullチェック時点でカウントされるのか それとも実際にpullした場合でカウントされるのか 大企業とかではキャッシュサーバーが必要になるかもしれんな >>69 というか、自前でレジストリ作れってことだよ。 Circle CIとかGitHub ActionsとかのSaaSは 仮想マシンは同じIPを再利用する事ある? 同じユーザー扱いになってCIが急に失敗するようになりそう レジストリのミラー作るのって なんか難しそう >>70 レジストリをメンテするぐらいなら金払うよ たった月5ドルだろ? >>71 別のユーザーによるpullでCIがこける可能性があるんだよな でもそれはCIサービス側が対応する問題になるだろう その対応の内容には安定したpullがしたければ 金払えっていうのも含まれるけどw ちなみにオープンソースでツール公開してるんだけど、この間から おそらく誰かがCIに組み込んだようでGitHubのGit Clone数が跳ね上がった その数が大体1日500〜600cloneで、ユニーククローン数が300〜400clone つまりGitHub側から見れば1日300〜400人が来て2回pullしてるように見えてる このデータから一概に言えるわけじゃないけど、同じIPアドレスを使われる可能性は低いと思う CI実行するたびにクラウドの仮想マシン作り直してるだろうし、クラウドの仮想マシンは 固定にしない限り作り直せば変わるわけで、問題が発生することは殆どないと考えてる >>68 Docker社はずっと大赤字だろうけど、GitHub のようにプラットフォームとして成長していればいずれエンプラで黒字化するだろうという目論見だったのが、 KubeやECS等にエコシステムを乗っ取られエンプラ事業が大失敗に終わったことで完全に収益化の望みが断たれた Docker Hubはプラットフォームといえども所詮はいくらでも替えのきくストレージに過ぎず、タダ乗りベンダー連中との間の差別化要因も乏しいためGitHubのような赤字を余裕で帳消しにするレベルの大型買収にも期待できない もう焼畑しかないというわけだ ふーん Docker終わったな これからはpodmanが勝つるか Dockerがエンプラで黒字なんて無理だろ。 そもそも本番機で使えるエコシステムがECSであれEKSであれ他社の製品だし。 しかも本命は不在だし。 問題がはっきりしているのに何でこの分野でDocker社は何も提供しないの? 個人的にはECSであれEKSであれ下で動くインスタンス(VM)がサービスの前面に 出てきている時点でDockerは本番機には使いたくない。 VM管理とコンテナ管理の二度手間以外の何物でもないからね。 アマゾンはよく理解してる様でAWS Fargateでインスタンス隠しているけど、普及しているかどうかは知らない。 Docker社とも関係ない 何を言ってんだ ホスト管理がいやだからクラウドのコンテナサービを使うんだろうが dockerを使わないと逆にインスタンス管理が大変になると思うが >>77 https://vmware-juku.jp/whatsvm/containers-benefits-why-kubernetes/2/ >Kubernetesは外部のOSSと連携することによってNATを経由することなく >別のホストのコンテナ同士の通信を実現しています。 >OSSを利用する場合のいくつか選択肢がありますが、 >flannelを採用した場合はオーバーレイによるカプセリングを行うことで、 >従来の仮想マシンのようにIPアドレスを割り当てることが出来るようになります。 こういう単語が出ている時点でホストの管理もしなければならないのは明かだろ。 AWS Fargateで「ホスト」と言う単語が一切なくなるのなら、標準になるかもしれないけど そうなるとコンテナランタイムがdockerである必要もない。 dockerを採用するとhost machineの管理が単純化されるので全体としての管理が楽になるということですね >>80 > こういう単語が出ている時点でホストの管理もしなければならないのは明かだろ。 どういう理屈? 1. Kubernetesは別ホストと通信できます 2. しかもホストを管理しなくていいです こういう話だよね? どこからホストを管理しなければならないなんて話が出てきたの? >>82 いやいや意味が分からない。 ホストの管理をしなくていい→「ホスト」と言う単語は出てこない。 でなければならないって話だが。 何でDockerだとホストの管理をする必要が無いと思うの? >>84 それはDockerじゃなくても同じだねw。 最初からそう言ってる いったいどっからホストの管理が必要なんて話になったんだ? いやもう日本語通じない通じないw このトピずーとそうだけどw >>77 ホスト管理がいやだからクラウドのコンテナサービを使う >>78 インスタンス管理が大変 >>84 クラウドだからホストは管理不要w←Now! >>83 お前がホストって言葉を知らんだけじゃね?w わかりやすくパソコンにしようか?w 息子がやってくれるからパソコンの管理はしなくていい パソコンの管理をしなくていいが、パソコンという単語はでてくる。 例えば「パソコンを使う」「パソコンの電源を入れる」とかね 「(ホストの)管理しない」という話と「(ホストという)単語が出てこない」には まったく繋がりがない ホストの管理をしなくても、ホストという単語は出てくる >>83 > 何でDockerだとホストの管理をする必要が無いと思うの? Kubernetesだからホストの管理をする必要がないって話だろ 話をすり替えんなって Kubernetesはノードを意識した細かい制御ができすぎてな ホストに強く依存した変なオーバーエンジニアリングをやりだす問題児が必ず出てくる ECSより遥かにホストを意識してるわ >>88 そんなレベルの話をするなよ初心者くんw 君の言う「パソコン」=物理サーバは 完全に抽象化されててこのスレ内では全くでないだろw Dockerの中で「ホスト」と言っているのはDockerが動く基盤であってそれが物理サーバであるかVMであるかは問わない。 非常に多くの場合はVMであり、それは「インスタンス」と言う名前で出ている。 つまりこの文脈ではホスト=インスタンスって事 で何でk8sだからホスト管理しなくて良いの? https://knowledge.sakura.ad.jp/3681/ 例えば、上記の構成で本番機を作ったとして、192.168.0.50が死んだらどうするの? 「ホスト管理しなくていい」と言っているのは生存管理すら必要ないと言っているんだよね? >>92 > 例えば、上記の構成で本番機を作ったとして、192.168.0.50が死んだらどうするの? ああ、おまえ、GKEとかEKSというサービスを知らんのかw 上記の構成を作って"管理"するのはクラウドサービス側なんで ”お前がやらなければいけないと思ってること”を全部クラウドサービス側がやってくれるんだよ >>93 いやマジ君の言っている(言わんとする事)の意味がつかめないんだがw 君の説明はどうでも良いよ。君の行動を話してくれ。 192.168.0.50が死んだとしよう、君はどうする? お前らよくこんなニッチなものでいつまでも言い争いできるな 素直に感心するわ >>94 サーバーの管理って何のことかわかってる? サーバーが死んだら新しいインスタンス起動して自動的に再起動やろ やらなくていいのはサーバーの管理だってわかってる? FargateってEBSはマウント出来ないよな データベースとかはFargateで動かせないね EFSとか言うネットワークファイルシステムはマウント出来るが 複数マシンで同期を取るために速度は遅い コンテナに確保するリソースは0.25vCPU、0.5GB未満は選択出来ないので これ未満の能力しかいらない場合は EC2に詰め込んだほうが安い Fargate自体が同等のEC2と比べると少し高い Fargateはサーバーレスと言っても 管理の手間が少ないだけでサーバーは存在するので セキュリティパッチを当てるためにサービスの再起動が必要な場合はある イメージのマージ機能はいつになったらサポートされんだ devcontainer作るときいちいちインストール方法調べてDockerfile書くの不便なんだが インストール方法? 自分で開発したアプリのインストール方法もわからんのか? そりゃチームの人が作ったら他人だろうけどそういう話じゃないだろw ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.4 2024/05/19 Walang Kapalit ★ | Donguri System Team 5ちゃんねる