DockerはLinuxが持つコンテナ技術を使ったアプリケーション仮想化技術です。
アプリケーションを動かすために必要な各種ライブラリ等を一つのDockerイメージに
まとめることで、さまざまな環境へのデプロイが容易になります。
例えばWindowsやmacOSを使って開発・テストしたDockerイメージを
そのままクラウド上のLinuxの本番環境で使うことができます。
クラウド上の環境が仮想マシンであるため、Dockerは仮想マシンと併用して使うことが多いですが
仮想マシン技術とは無関係の技術です。実際Linux環境において仮想マシンは必須ではありません。
WindowsとmacOSでは仮想マシンを使いますが、これはOSがLinuxではないからです。
Dockerは主にアプリケーションを動かすために設計されているのでデータを保存するのには適していません。
データはDockerイメージの外部、ボリュームを使ってホスト環境に保存するかネットワーク通信で外部サーバーに保存します。
またDockerコンテナは一つのサービスを実行し、複数のサービスが必要な場合はdocker-composeやk8sなどを使って連携させます。
Dockerを仮想マシンの代替として、コンテナ内で複数のサービスを起動しようとすると困難が待ち受けています。
それはDockerの設計方針とあっていないからです。
Dockerイメージ(Dockerfile)はアプリケーション開発者が作成します
動かすのに必要なもの全てがDockerイメージに含まれるので
インフラ担当者はそれを動かすだけ、本来のインフラの作業に集中できるようになります
Dockerは主にウェブ業界でサービスのデプロイの必須技術になりました
情報共有しましょう
http://www.docker.io/
前スレ Docker Part4
https://mao.5ch.net/test/read.cgi/linux/1597591176/
注意 Dockerを仮想マシンの代替として使いたいと考えてる人は、DockerではなくLXCを使いましょう
LXC(Linux Containers)
https://mao.5ch.net/test/read.cgi/linux/1330826939/
Docker Part5
■ このスレッドは過去ログ倉庫に格納されています
2020/12/02(水) 19:13:07.36ID:y3Zdr8oB
2021/01/17(日) 05:42:17.89ID:XuFuvYAj
いつも、Docker をsupervisord とか、
仮想マシンみたいに使おうとする香具師が来て、1日で100レス以上進む。
同じ香具師だろ
1つの関心事につき、コンテナは1つ。
Docker Compose は本番では使えない
そもそもポートフォワーディング方式だと、スケールできないし。
既にポート80番を使っていたら、
8080番とか、ポートを変えないといけないから、ユーザーがアクセスできない
Kubernetes みたいに、cgroup, namespace が無いと運用できない
仮想マシンみたいに使おうとする香具師が来て、1日で100レス以上進む。
同じ香具師だろ
1つの関心事につき、コンテナは1つ。
Docker Compose は本番では使えない
そもそもポートフォワーディング方式だと、スケールできないし。
既にポート80番を使っていたら、
8080番とか、ポートを変えないといけないから、ユーザーがアクセスできない
Kubernetes みたいに、cgroup, namespace が無いと運用できない
2021/01/17(日) 08:17:47.03ID:/DQZFtWw
2021/01/17(日) 10:37:06.28ID:iT7NyvUt
本番swarmでdocker compose使うよ
2021/01/17(日) 20:30:25.56ID:bZXSAVtd
docker desktopからdocker-compose.ymlで書いたものを使ってコンテナ起動する方法を教えてください
351login:Penguin
2021/01/17(日) 20:42:43.49ID:fvYQBEb5 docker-compose up
352login:Penguin
2021/01/19(火) 20:44:52.35ID:G8DOf2K2 nixでDockerfile書かずにDockerイメージビルドしてみた
イメージは作成出来たが、bashの履歴やタブ補完が使えない
なんか設定したら使えるのか?
bash-completion入れてみたが、効果無かった
Dockerfileと組み合わせて使うか、普通にDockerfile使う方が楽かも
イメージは作成出来たが、bashの履歴やタブ補完が使えない
なんか設定したら使えるのか?
bash-completion入れてみたが、効果無かった
Dockerfileと組み合わせて使うか、普通にDockerfile使う方が楽かも
2021/01/19(火) 22:55:16.38ID:4qB/okoY
2021/01/20(水) 01:38:52.84ID:huiLDeTC
>>353
devcontainerも知らんの?
devcontainerも知らんの?
2021/01/20(水) 01:45:13.25ID:eMKfZ4zK
アンチパターンの名前がどうかしたのか?
2021/01/20(水) 01:53:13.57ID:huiLDeTC
アンチパターン?
2021/01/20(水) 06:14:40.34ID:0DdAhH3S
358347
2021/01/20(水) 06:40:15.88ID:SSSAU54j 環境依存するものをコンテナに入れていくと、
その環境では便利だけど、可搬性が無くなる
コンテナを別の環境へ持っていくと、環境依存のために動かなくなるので、
別の環境用への環境構築が必要となり、Docker を使う意味が無くなる
>>347
に書いた、
Dockerに、supervisord などを入れて、
仮想マシンみたいに使おうとする香具師と同じ
WSL2, Ubuntu などで直接構築しているのと同じになってしまう。
Dockerを使う意味がない
その環境では便利だけど、可搬性が無くなる
コンテナを別の環境へ持っていくと、環境依存のために動かなくなるので、
別の環境用への環境構築が必要となり、Docker を使う意味が無くなる
>>347
に書いた、
Dockerに、supervisord などを入れて、
仮想マシンみたいに使おうとする香具師と同じ
WSL2, Ubuntu などで直接構築しているのと同じになってしまう。
Dockerを使う意味がない
359login:Penguin
2021/01/20(水) 07:47:48.53ID:dF9xmUsG サーバーのメンテナンス作業のために
Dockerイメージに仕込んだスクリプトを実行するとか
開発中にbashに入ってデバッグはするだろう
シェル内でTabと上下キーすら使えない
地味に不便
Tabキーやカーソルキーを打つと空白や謎の文字が入力される
>>353
alpine, debianとかはコマンド履歴はちゃんと動くぞ
履歴はコンテナ削除すると失われるけど
Dockerイメージに仕込んだスクリプトを実行するとか
開発中にbashに入ってデバッグはするだろう
シェル内でTabと上下キーすら使えない
地味に不便
Tabキーやカーソルキーを打つと空白や謎の文字が入力される
>>353
alpine, debianとかはコマンド履歴はちゃんと動くぞ
履歴はコンテナ削除すると失われるけど
2021/01/20(水) 08:05:45.91ID:W+xpcSS1
コマンド履歴用などの機能があるシェルが入ってないだけでしょ。入れるだけ。軽量目指すとサンドボックスに近くなって作業性は低下する。
2021/01/20(水) 08:52:54.73ID:huiLDeTC
devcontainerも知らない冬獅郎がイキってたんか
2021/01/20(水) 10:51:37.69ID:SSSAU54j
VSCode の拡張機能で出来ないの?
Remote(WSL, Docker, SSH) とか
Remote(WSL, Docker, SSH) とか
363login:Penguin
2021/01/20(水) 11:09:54.36ID:dF9xmUsG2021/01/20(水) 11:31:00.12ID:eMKfZ4zK
>>359
> Dockerイメージに仕込んだスクリプトを実行するとか
そういうのはね、maintenance.sh とかいう名前で
次のような内容のスクリプトを作って
#!/bin/sh
docker run -it maintenance:1.0 script.sh "$@"
$ maintenance.sh list
とかやって実行すれば良いんだよ
管理者に配布するのはこのスクリプトだけ
内部で勝手ににdockerイメージ引っ張ってきて実行してくれる
> Dockerイメージに仕込んだスクリプトを実行するとか
そういうのはね、maintenance.sh とかいう名前で
次のような内容のスクリプトを作って
#!/bin/sh
docker run -it maintenance:1.0 script.sh "$@"
$ maintenance.sh list
とかやって実行すれば良いんだよ
管理者に配布するのはこのスクリプトだけ
内部で勝手ににdockerイメージ引っ張ってきて実行してくれる
365login:Penguin
2021/01/20(水) 11:47:58.41ID:dF9xmUsG 軽量イメージで有名なalpineも最初からインタラクティブシェルが入ってるぞ
サイズ小さくするためとか何とか言って
そこまで拘りだしたらきり無いだろ
サイズ小さくするためとか何とか言って
そこまで拘りだしたらきり無いだろ
2021/01/20(水) 11:51:20.78ID:W+xpcSS1
セキュリティリスク最小化のために、サイズに依らず極限まで削るという考えがあるので文句言っても仕方ないね
367login:Penguin
2021/01/20(水) 12:00:12.87ID:dF9xmUsG セキュリティ的にはアプリをGoか何かでシングルバイナリで作って
本番用イメージはshすら入れないのがさいつよじゃね?
イメージにシェル入れるなら、インタラクティブ版でよかね
本番用イメージはshすら入れないのがさいつよじゃね?
イメージにシェル入れるなら、インタラクティブ版でよかね
368login:Penguin
2021/01/20(水) 12:23:13.39ID:dF9xmUsG シェルスクリプトのインタープリターはどうしても要るって場合、
タブ補完と履歴機能は削った方がセキュアに・・・なるかな?
多少複雑さは減るのでその分セキュアにはなるかもしれないが、微妙
タブ補完と履歴機能は削った方がセキュアに・・・なるかな?
多少複雑さは減るのでその分セキュアにはなるかもしれないが、微妙
2021/01/20(水) 14:10:01.28ID:MdirW2N5
devcontainerにはお気に入りの鉄板ツールは全部ぶっこむに決まってんだろ
2021/01/20(水) 20:15:27.86ID:0DdAhH3S
nixは利便性を二の次にして、最軽量コンテナ作ってドヤ顔したいだけなんでしょ。
2021/01/20(水) 20:28:49.94ID:W+xpcSS1
nixは書くのが難しいイメージだがどうなんだろう。謎の表記法だ
2021/01/20(水) 21:28:58.42ID:etHsYhIK
関数型いいね
373login:Penguin
2021/01/21(木) 08:20:11.51ID:E7zvWTdU テキトーにnix-buildでイメージ作ったらalpineよりでかくなった
なんでだろう
なんでだろう
374login:Penguin
2021/01/21(木) 09:12:22.45ID:E7zvWTdU glibcとtzdataがでかいな
31M 33idnvrkvfgd5lsx2pwgwwi955adl6sk-glibc-2.31
1.6M czc3c1apx55s37qx4vadqhn3fhikchxi-libunistring-0.9.10
552K ifnmhjrvk3f0hbz3f25s3izlb9yk8x0f-iana-etc-20200729
100K r2wvgnr54vmwnjvzyqdixv8xbn362jgh-mailcap-2.1.48
4.8M w1g27pgslf28nh1py1szj7lk4xksdhqq-tzdata-2020c
276K xim9l8hym4iga6d4azam4m0k0p1nw2rm-libidn2-2.3.0
31M 33idnvrkvfgd5lsx2pwgwwi955adl6sk-glibc-2.31
1.6M czc3c1apx55s37qx4vadqhn3fhikchxi-libunistring-0.9.10
552K ifnmhjrvk3f0hbz3f25s3izlb9yk8x0f-iana-etc-20200729
100K r2wvgnr54vmwnjvzyqdixv8xbn362jgh-mailcap-2.1.48
4.8M w1g27pgslf28nh1py1szj7lk4xksdhqq-tzdata-2020c
276K xim9l8hym4iga6d4azam4m0k0p1nw2rm-libidn2-2.3.0
375login:Penguin
2021/01/21(木) 10:06:41.84ID:E7zvWTdU musl版のパッケージもあるが、ソースからビルドが多くてとても時間が掛かる
テストまで実行してる
一向に終わる気配がないので中止した
テストまで実行してる
一向に終わる気配がないので中止した
2021/01/21(木) 11:13:23.98ID:q3ZBVRCY
alpineでもtzdataは設定だけしてパッケージは消すな
2021/01/21(木) 18:00:13.33ID:2L6M1psr
2021/01/21(木) 18:03:34.93ID:2L6M1psr
>>367
シングルバイナリで外部コマンドは全く使用しない
ライブラリは全く使用しない
それってDockerで動かす意味有るの?
だってそのシングルバイナリ以外はなにもないんでしょ?
カーネルの機能だけあれば動くなら、
Dockerの外で動かせばいいじゃないw
外部に依存しているものを動かしたいという前提があるから
Dockerを使うのであって、その前提を無視するなら意味がない
シングルバイナリで外部コマンドは全く使用しない
ライブラリは全く使用しない
それってDockerで動かす意味有るの?
だってそのシングルバイナリ以外はなにもないんでしょ?
カーネルの機能だけあれば動くなら、
Dockerの外で動かせばいいじゃないw
外部に依存しているものを動かしたいという前提があるから
Dockerを使うのであって、その前提を無視するなら意味がない
379login:Penguin
2021/01/21(木) 18:36:01.89ID:E7zvWTdU2021/01/21(木) 18:48:25.81ID:B7BVM9Yk
>>378
オーケストレーターがシングルバイナリに対応してるならコンテナは要らんよ
オーケストレーターがシングルバイナリに対応してるならコンテナは要らんよ
381login:Penguin
2021/01/21(木) 18:54:10.09ID:E7zvWTdU ローカルでCLIツール動かすだけならバイナリを直接配布でもよい
Webサーバーとか動かすならコンテナオーケストレーターの機能は便利
Webサーバーとか動かすならコンテナオーケストレーターの機能は便利
2021/01/21(木) 22:46:18.99ID:2L6M1psr
>>380
コンテナ使うならシングルバイナリなんかいらんよw
シングルバイナリだと修正したときに全部ビルドし直しだろ?
それってDockerイメージ作り直しと同じことしてるだけだからね
シングルバイナリビルドし直しOKなら
Dockerイメージビルドし直しもOKなはずだ
コンテナ使うならシングルバイナリなんかいらんよw
シングルバイナリだと修正したときに全部ビルドし直しだろ?
それってDockerイメージ作り直しと同じことしてるだけだからね
シングルバイナリビルドし直しOKなら
Dockerイメージビルドし直しもOKなはずだ
2021/01/21(木) 22:47:47.57ID:2L6M1psr
2021/01/21(木) 22:50:20.24ID:2L6M1psr
2021/01/22(金) 01:40:05.86ID:MJHncGOI
HashiCorpのサービスはどれもこれもシングルバイナリだ
たしかにあそこまで行くとDocker要らんわ
たしかにあそこまで行くとDocker要らんわ
2021/01/22(金) 10:00:45.96ID:T81U45xE
だからDockerは(シングルバイナリとかを)使うためじゃなくて
開発者が自分で開発するときに使うもの
シングルバイナリを作るのが難しい場合もたくさんある
スクリプト言語なんかはほぼ全てそれ
開発者のためのもの
開発者が自分で開発するときに使うもの
シングルバイナリを作るのが難しい場合もたくさんある
スクリプト言語なんかはほぼ全てそれ
開発者のためのもの
387login:Penguin
2021/01/22(金) 10:54:50.10ID:mPC90pRk 大は小を兼ねるってことで
DroneCIはDockerコンテナ内での実行しかできない
割り切った設計になってる
コンテナさえ対応しとけばいろんな言語向けのツールを個別に作らなくて済むからな
DroneCIはDockerコンテナ内での実行しかできない
割り切った設計になってる
コンテナさえ対応しとけばいろんな言語向けのツールを個別に作らなくて済むからな
388login:Penguin
2021/01/22(金) 19:40:12.58ID:gTtohUlb alpineはパッケージのバージョンを固定する方法がないから
どうしてもalpineベースのDockerイメージをビルドする時は前回より新しいバージョンがインストールされる可能性がある
The problem with Docker and Alpine’s package pinning
https://medium.com/@stschindler/the-problem-with-docker-and-alpines-package-pinning-18346593e891
単にパッケージのバージョンを指定すると、そのうちパッケージがリポジトリから消えてビルド出来なくなる
古いバージョンのリポジトリを使うなら可能だが、マイナーバージョンのアップデートはされるだろう
特定のパッケージだけ最新メジャーバージョンにしたいから
複数のリポジトリを使い分けするぜ!みたいな使い方は
一応可能らしいが、
公式にはサポートされてない
どうしてもalpineベースのDockerイメージをビルドする時は前回より新しいバージョンがインストールされる可能性がある
The problem with Docker and Alpine’s package pinning
https://medium.com/@stschindler/the-problem-with-docker-and-alpines-package-pinning-18346593e891
単にパッケージのバージョンを指定すると、そのうちパッケージがリポジトリから消えてビルド出来なくなる
古いバージョンのリポジトリを使うなら可能だが、マイナーバージョンのアップデートはされるだろう
特定のパッケージだけ最新メジャーバージョンにしたいから
複数のリポジトリを使い分けするぜ!みたいな使い方は
一応可能らしいが、
公式にはサポートされてない
2021/01/22(金) 19:47:20.60ID:MJHncGOI
もっと気軽にDinDできればいいんだが
2021/01/22(金) 21:02:59.02ID:XsvVSgn6
>>388
古いリポジトリがアーカイブされている必要もあるし、
結局、Debian、CentOS(8以前)とか、硬派なバージョン管理をしているdistroを使うしかないと思う。
そうでないと、ABI互換されへんしな。
古いリポジトリがアーカイブされている必要もあるし、
結局、Debian、CentOS(8以前)とか、硬派なバージョン管理をしているdistroを使うしかないと思う。
そうでないと、ABI互換されへんしな。
2021/01/23(土) 03:09:15.57ID:qmn8QEZZ
392login:Penguin
2021/01/23(土) 10:16:51.97ID:L1o04Qzm k3dはdocker in dockerのReal world example
中で起動するのはdockerじゃなくてcontainerdだけど
docker in dockerと同じパターン
コンテナの中でk3sやcontainerdを動かす
中で起動するのはdockerじゃなくてcontainerdだけど
docker in dockerと同じパターン
コンテナの中でk3sやcontainerdを動かす
2021/01/23(土) 11:37:57.64ID:qmn8QEZZ
ん?だからk3dに相当するようななものを作ってるの?って話だよ
そういうのは例外的なシステムだよね
そういうのは例外的なシステムだよね
394login:Penguin
2021/01/23(土) 11:44:26.49ID:L1o04Qzm >>389はCIで欲しいんじゃね?
知らんけど
知らんけど
2021/01/23(土) 11:57:06.70ID:qmn8QEZZ
だからTravisCIのようなCIフレームワークを開発してる
会社だったらほしいというのはわかるけど
そういうのは例外的だって話
会社だったらほしいというのはわかるけど
そういうのは例外的だって話
2021/01/23(土) 12:03:22.58ID:pBA41e7z
>>394
主にCI、開発コンテナだな
あとたまにバックエンドでコマンドラインを多用するサービスなんかもあって、そこでもDinDを使いたくなる
Dockerfileで静的にインストールすると、コマンドラインのバージョンが固定されちまう
が、DinDだったらコマンドラインのバージョンを実行時にダイナミックに変更できる
DinDならオフィシャルのイメージを使えるってのもいいね
自前でパッケージインストールすると最適化がどうしても甘くなる
主にCI、開発コンテナだな
あとたまにバックエンドでコマンドラインを多用するサービスなんかもあって、そこでもDinDを使いたくなる
Dockerfileで静的にインストールすると、コマンドラインのバージョンが固定されちまう
が、DinDだったらコマンドラインのバージョンを実行時にダイナミックに変更できる
DinDならオフィシャルのイメージを使えるってのもいいね
自前でパッケージインストールすると最適化がどうしても甘くなる
2021/01/23(土) 12:25:52.54ID:qJ35GPj0
すみません
初歩的な質問で申し訳ないのですが、
今でもWindows10 ProでDockerを使うと、Oracle Virtual Boxは使用不可になりますか?
1年前にDockerを導入したところVirtual Boxが起動しなくなってしまいまして
昨年末にHomeでもDockerが使えるようになったとのことで、ついでにそこら辺も解消されていないのかなと思い・・・。
初歩的な質問で申し訳ないのですが、
今でもWindows10 ProでDockerを使うと、Oracle Virtual Boxは使用不可になりますか?
1年前にDockerを導入したところVirtual Boxが起動しなくなってしまいまして
昨年末にHomeでもDockerが使えるようになったとのことで、ついでにそこら辺も解消されていないのかなと思い・・・。
2021/01/23(土) 12:29:50.78ID:iwzoJDPq
できるマシンとできないマシンがあるので試してから買ったほうがいい
2021/01/23(土) 12:37:07.86ID:qJ35GPj0
>>398
ノートのCPUはRyzen 3700Uでして、当時調べた記憶ですと出来ない方のCPUだった様な・・・
DokcerをアンインスコしてHyperVをオフにしてもダメだったんですよね
ありがとうございます
ノートのCPUはRyzen 3700Uでして、当時調べた記憶ですと出来ない方のCPUだった様な・・・
DokcerをアンインスコしてHyperVをオフにしてもダメだったんですよね
ありがとうございます
400login:Penguin
2021/01/23(土) 12:48:05.70ID:L1o04Qzm Hyper-VとVirtualbox等の別のハイパーバイザーは共存不可
同時には使えない
最近のバージョンのVirtualBoxはHyper-Vに対応してるけど
まだ実験段階らしいのでおすすめしない
Vagrant経由でVirtualbox使ってるならHyper-Vを直接利用に切り替える手もある
同時には使えない
最近のバージョンのVirtualBoxはHyper-Vに対応してるけど
まだ実験段階らしいのでおすすめしない
Vagrant経由でVirtualbox使ってるならHyper-Vを直接利用に切り替える手もある
2021/01/23(土) 13:24:45.94ID:/f7HUFMf
Mac、LinuxならDockerとVirtualBoxが共存できるよ
開発者なら今すぐMac、Linuxに移行しよう
開発者なら今すぐMac、Linuxに移行しよう
2021/01/23(土) 15:42:35.24ID:qM5mhLKt
>>397 こういうのはVirtualBoxに適当なLinuxいれてその上でDocker使うことと何が違うの?
Win10->VirtualBox+Linux->Dockerと
Win10->WSL2->Dockerで使うのは、結局同じなんじゃないの?
Win10->VirtualBox+Linux->Dockerと
Win10->WSL2->Dockerで使うのは、結局同じなんじゃないの?
2021/01/23(土) 16:49:01.46ID:qmn8QEZZ
>>396
> Dockerfileで静的にインストールすると、コマンドラインのバージョンが固定されちまうが
それは、シングルバイナリにすると、ライブラリのバージョンが固定化されてしまい
アップデートする時に、すべてバイナリを作り直しになるという話と何が違うの?
つまりコマンドラインのバージョンを変えたいなら、Dockerイメージを作り直せばいいだけじゃない
> Dockerfileで静的にインストールすると、コマンドラインのバージョンが固定されちまうが
それは、シングルバイナリにすると、ライブラリのバージョンが固定化されてしまい
アップデートする時に、すべてバイナリを作り直しになるという話と何が違うの?
つまりコマンドラインのバージョンを変えたいなら、Dockerイメージを作り直せばいいだけじゃない
2021/01/23(土) 16:52:02.37ID:qmn8QEZZ
2021/01/23(土) 16:58:45.75ID:TELIs3ia
2021/01/23(土) 17:25:17.38ID:qmn8QEZZ
Windowsを捨てられるならとっくにそうしてる
今はLinuxだけが動けばいい世の中ではない
今はLinuxだけが動けばいい世の中ではない
2021/01/23(土) 18:35:08.71ID:pBA41e7z
2021/01/23(土) 18:39:23.99ID:shVfejGa
使いやすさで言うとLinux母艦がベスト
Windows母艦使わなきゃならん場合はLinux仮想マシンが良い
でも唯一の弱点があって重いこと
それだけにために使いにくい公式のdocker for winを使う
Windows母艦使わなきゃならん場合はLinux仮想マシンが良い
でも唯一の弱点があって重いこと
それだけにために使いにくい公式のdocker for winを使う
2021/01/23(土) 20:20:18.54ID:qmn8QEZZ
>>407
シングルバイナリの話で言えば、
OSやライブラリ毎にバイナリを作りたくないって話?
何が問題なのかさっぱりわからいんだけど?
やりたいことじゃなくて、問題になってることを書いたら?
素人が考えた問題の解決方法が、そもそも間違ってるってのはよくある話
こういうの英語でなんて言うんだっけな?
シングルバイナリの話で言えば、
OSやライブラリ毎にバイナリを作りたくないって話?
何が問題なのかさっぱりわからいんだけど?
やりたいことじゃなくて、問題になってることを書いたら?
素人が考えた問題の解決方法が、そもそも間違ってるってのはよくある話
こういうの英語でなんて言うんだっけな?
2021/01/23(土) 20:22:29.49ID:qmn8QEZZ
例えば>>407は「動的に変えたい」は間違った解決策である可能性が高い
「いちいち組み合わせごとにビルドしてらんない」ならば
組み合わせごとにビルドできるようにするのが
本当に解決すべきことで、その手段は他にあるだろうって話
「いちいち組み合わせごとにビルドしてらんない」ならば
組み合わせごとにビルドできるようにするのが
本当に解決すべきことで、その手段は他にあるだろうって話
2021/01/23(土) 23:21:32.21ID:pBA41e7z
おいおいどんだけ巨大なimage作る気だよ
2021/01/23(土) 23:28:21.63ID:pBA41e7z
例えば
Javaバージョンを10種類
Python 10種類
Ruby 10種類
の任意の組み合わせをサポートするとしよう
組み合わせごとにimage作ってたら1000回のビルドが必要
しかも静的なのでバージョン切り替えるのにコンテナ再起動が必要
アプリケーションユーザーがバージョンを選ぶことができない
DinD無しで動的に切り替え可能にするにはimageに30のパッケージを詰め込まなきゃならん
アプリケーションユーザーがバージョンを選べるようになったがimageが重すぎて駄目だ
DinDなら簡単だろ?
Javaバージョンを10種類
Python 10種類
Ruby 10種類
の任意の組み合わせをサポートするとしよう
組み合わせごとにimage作ってたら1000回のビルドが必要
しかも静的なのでバージョン切り替えるのにコンテナ再起動が必要
アプリケーションユーザーがバージョンを選ぶことができない
DinD無しで動的に切り替え可能にするにはimageに30のパッケージを詰め込まなきゃならん
アプリケーションユーザーがバージョンを選べるようになったがimageが重すぎて駄目だ
DinDなら簡単だろ?
2021/01/24(日) 01:04:39.71ID:7pSGFgQW
dockerインストールしてdocker image使えば動く
それが大きい
組み合わせとか無駄な労力
それが大きい
組み合わせとか無駄な労力
2021/01/24(日) 01:32:49.86ID:zknkl/jN
そうじゃない
組み合わせで無駄な労力をかけなくていいようにDinDなんだよ
DinDじゃなきゃ組み合わせ爆発で大変な目に合う
組み合わせで無駄な労力をかけなくていいようにDinDなんだよ
DinDじゃなきゃ組み合わせ爆発で大変な目に合う
2021/01/24(日) 05:44:03.19ID:ghBgWKiE
CircleCI の、Win/Mac/Linux 環境でのマトリックスビルド
2021/01/24(日) 06:43:13.57ID:M0zj61YH
2021/01/24(日) 06:45:22.77ID:M0zj61YH
あ、もしかしてイメージのビルドって
JavaやPythonやRubyのソースコードから
ビルドするって勘違いしてるのか?
Dockerイメージのビルドって単にファイルをコピーするだけだぞ
お前の言うファイルの入れ替えと何も変わらん
JavaやPythonやRubyのソースコードから
ビルドするって勘違いしてるのか?
Dockerイメージのビルドって単にファイルをコピーするだけだぞ
お前の言うファイルの入れ替えと何も変わらん
418login:Penguin
2021/01/24(日) 09:23:55.77ID:5dJlz7Oi2021/01/24(日) 10:09:33.55ID:zknkl/jN
>>416
違う
違う
2021/01/24(日) 10:09:41.71ID:zknkl/jN
>>417
変わる
変わる
421login:Penguin
2021/01/24(日) 10:10:01.50ID:D5AZ3z2z nixもalpine同様パッケージバージョンそれぞれで固定は出来ないが、
過去の特定時点でのリポジトリを使う事や
不安定版と安定版を組み合わせる事は出来るみたい
Dockerイメージのビルド機能はDockerデーモンは要らないが、
イメージに対して追加でコマンドを実行する(runAsRoot)にはKVMが必要
Nested Virtualization非対応のWSL2とかGitHub Actionsでは使えないのでハードル高い
各パッケージのインストールにはkvm不要なのに
runAsRootを使わずにDockerfileでコマンド実行すればkvm無しでも良いけど
それちょっとめんどい
nixだけで完結させたいね
過去の特定時点でのリポジトリを使う事や
不安定版と安定版を組み合わせる事は出来るみたい
Dockerイメージのビルド機能はDockerデーモンは要らないが、
イメージに対して追加でコマンドを実行する(runAsRoot)にはKVMが必要
Nested Virtualization非対応のWSL2とかGitHub Actionsでは使えないのでハードル高い
各パッケージのインストールにはkvm不要なのに
runAsRootを使わずにDockerfileでコマンド実行すればkvm無しでも良いけど
それちょっとめんどい
nixだけで完結させたいね
2021/01/24(日) 11:44:53.66ID:M0zj61YH
423login:Penguin
2021/01/24(日) 12:11:38.84ID:lUIISiii2021/01/24(日) 12:29:05.10ID:em6DyPtH
dockerには様々な使い方ができてそれが便利なんだが
どうも「僕の考えた正しい使い方」以外に強烈な拒否反応を示す輩がここに住み着いてるみたいだね
こいつのせいでいつも荒れる
どうも「僕の考えた正しい使い方」以外に強烈な拒否反応を示す輩がここに住み着いてるみたいだね
こいつのせいでいつも荒れる
2021/01/24(日) 18:40:26.34ID:M0zj61YH
>>423
アホなのか?ビルドしても問題ない場合の話なんか誰もしてねーよ
ちゃんと読んでみろ、1000回のビルドに困ってるやつが
「ビルドしててアホ、俺はDinDを使ってる」って言ってんだろ
そして、1000回のビルドの組合せ爆発を行わせないために
ファイルを入れ替えて、1000回のテストをやるって
言ってるんだぜ?どっちみち組合せ爆発してるじゃねーかwww
アホなのか?ビルドしても問題ない場合の話なんか誰もしてねーよ
ちゃんと読んでみろ、1000回のビルドに困ってるやつが
「ビルドしててアホ、俺はDinDを使ってる」って言ってんだろ
そして、1000回のビルドの組合せ爆発を行わせないために
ファイルを入れ替えて、1000回のテストをやるって
言ってるんだぜ?どっちみち組合せ爆発してるじゃねーかwww
2021/01/24(日) 19:29:59.47ID:zknkl/jN
組合わせビルドだと1000の追加容量
全部のせだと30の追加容量
DinDなら追加容量ほぼなし最適化もテストも各種イメージ提供元がやってくれてる
全部のせだと30の追加容量
DinDなら追加容量ほぼなし最適化もテストも各種イメージ提供元がやってくれてる
2021/01/24(日) 19:39:44.69ID:M0zj61YH
ほらな?馬鹿だったやろ?
レイヤーを共通で使うってわかってないんだよ
レイヤーを共通で使うってわかってないんだよ
2021/01/24(日) 20:38:36.41ID:em6DyPtH
>>427
組み合わせだからレイヤー使っても減らんぞ?
組み合わせだからレイヤー使っても減らんぞ?
2021/01/25(月) 00:16:11.92ID:4U2REjHr
どんなに組み合わせがあろうと、OSのレイヤーは
全部共通だってまだ気づいてないのかな?w
全部共通だってまだ気づいてないのかな?w
2021/01/25(月) 00:18:40.17ID:mUuiFIpJ
スベってるよきみ
2021/01/25(月) 12:13:30.69ID:vwTpfMH/
DockerコンテナじゃなくてMacに直接ツールをインスコしたいんだが
バージョン含めて統一は難しいな
asdfは一見バージョン切り替えに便利そうに見えるが、
とうも一部プラグインのインスコは自動ではないようだ
brew使ってインストールとか手動でさせたらむずいし、バージョンの組み合わせによっては失敗するかも
nixはインストール自動化は出来るが
関数型言語で書く必要があるのが何だかなあ
Mac上で直接やるの諦めて
開発用のパッケージが入ったDockerイメージを配った方が良いかも
IDEとの連携はVSCodeのRemote Container拡張機能とかでする感じで・・・この拡張機能まだプレビューだけと
バージョン含めて統一は難しいな
asdfは一見バージョン切り替えに便利そうに見えるが、
とうも一部プラグインのインスコは自動ではないようだ
brew使ってインストールとか手動でさせたらむずいし、バージョンの組み合わせによっては失敗するかも
nixはインストール自動化は出来るが
関数型言語で書く必要があるのが何だかなあ
Mac上で直接やるの諦めて
開発用のパッケージが入ったDockerイメージを配った方が良いかも
IDEとの連携はVSCodeのRemote Container拡張機能とかでする感じで・・・この拡張機能まだプレビューだけと
432login:Penguin
2021/01/25(月) 12:34:44.77ID:UrQIjnTy2021/01/25(月) 12:49:51.56ID:PDbAdQWp
2021/01/25(月) 12:56:22.23ID:5aG/RVkH
asdf とか、日本人が作った、バージョンマネージャーのanyenv は、
主に、Ruby, Node.js などの言語のバージョンを指定するだけ
アプリ・フレームワーク内での、依存モジュールを指定するには、
RubyのBundler, Node.jsのnpm/yarn などを使う
例えば、Ruby on Rails なら、まず、Ruby 2.6 で、Rails 6 などを先に決めてから、
それに合った依存モジュールとして、
サーバー側はRubyのBundler, GUI側はJavaScriptのYarnで決めていく
主に、Ruby, Node.js などの言語のバージョンを指定するだけ
アプリ・フレームワーク内での、依存モジュールを指定するには、
RubyのBundler, Node.jsのnpm/yarn などを使う
例えば、Ruby on Rails なら、まず、Ruby 2.6 で、Rails 6 などを先に決めてから、
それに合った依存モジュールとして、
サーバー側はRubyのBundler, GUI側はJavaScriptのYarnで決めていく
2021/01/25(月) 13:17:07.04ID:L2NMho+v
Dockerで複数のイメージを作っても
同じ内容は共通化されるんですよ
だからファイルサイズは増えません
バイナリを入れ替えるとかいう変なやり方と
使用する容量はほぼ変わりません
同じ内容は共通化されるんですよ
だからファイルサイズは増えません
バイナリを入れ替えるとかいう変なやり方と
使用する容量はほぼ変わりません
2021/01/25(月) 14:49:42.07ID:1bwGrDuX
内容が同じなら共通化されるわけじゃない
Dockerfileのコマンドが同一かどうかだろ
パッケージをA,Bの順で入れるのとB,Aの順で入れるのでは結果イメージが同一でも別物
Dockerfileのコマンドが同一かどうかだろ
パッケージをA,Bの順で入れるのとB,Aの順で入れるのでは結果イメージが同一でも別物
2021/01/25(月) 15:31:33.77ID:nCtpepmL
>>436
マルチステージビルドとかしらんの?
一つのDockerfileに
FROM as java-x.y.x
…
FROM as ruby-x.y.x
…
FROM as python-x.y.x
…
とか書いてあれば、別のDockerfileに同じことが書いてある時に共通化されるんだよ
そしてそのDockerfileの下に
FROM …
COPY --from=java-x.y.z /opt/java /opt/java
COPY --from=ruby-x.y.z /opt/ruby /opt/ruby
COPY --from=python-x.y.z /opt/python /opt/python
と書いてあれば、単にファイルをコピーするだけ
ファイルコピーなんだからDinD(笑)とかで
ファイル差し替えとかいうのとやってることは何も変わらん
ベースとなるイメージは共通で使って
実際に動かすイメージだけビルド→終わったら破棄すれば容量食わないし
元となるイメージは削除せずに使い回すのだからビルドの時間もかからん
マルチステージビルドとかしらんの?
一つのDockerfileに
FROM as java-x.y.x
…
FROM as ruby-x.y.x
…
FROM as python-x.y.x
…
とか書いてあれば、別のDockerfileに同じことが書いてある時に共通化されるんだよ
そしてそのDockerfileの下に
FROM …
COPY --from=java-x.y.z /opt/java /opt/java
COPY --from=ruby-x.y.z /opt/ruby /opt/ruby
COPY --from=python-x.y.z /opt/python /opt/python
と書いてあれば、単にファイルをコピーするだけ
ファイルコピーなんだからDinD(笑)とかで
ファイル差し替えとかいうのとやってることは何も変わらん
ベースとなるイメージは共通で使って
実際に動かすイメージだけビルド→終わったら破棄すれば容量食わないし
元となるイメージは削除せずに使い回すのだからビルドの時間もかからん
2021/01/25(月) 15:37:04.20ID:CdDAXNrB
マルチステージの動作確認ってどうしてるの?
2021/01/25(月) 15:45:33.93ID:mUuiFIpJ
>>437
それ結局1000容量必要じゃんw
それ結局1000容量必要じゃんw
2021/01/25(月) 15:55:37.46ID:nCtpepmL
2021/01/25(月) 15:56:03.34ID:nCtpepmL
>>438
他のやり方と何が違うと思ってんの?
他のやり方と何が違うと思ってんの?
442login:Penguin
2021/01/25(月) 15:57:16.29ID:nNV9lGQp nodeをdocker runして複数のバージョンのnodeで自作ライブラリをテストするとする
ソースコードのディレクトリをボリュームマウントして
npm ciでライブラリをインスコして
npm run test
これの繰り返しで良くね?
CIが普通にLinux仮想マシン使えるやつならDinDにはならん
Docker内でしかコマンド実行できないCIだとして
そのCIに複数のイメージで同じコマンドを実行する機能とか無いか?
ソースコードのディレクトリをボリュームマウントして
npm ciでライブラリをインスコして
npm run test
これの繰り返しで良くね?
CIが普通にLinux仮想マシン使えるやつならDinDにはならん
Docker内でしかコマンド実行できないCIだとして
そのCIに複数のイメージで同じコマンドを実行する機能とか無いか?
2021/01/25(月) 16:24:11.77ID:CdDAXNrB
2021/01/25(月) 16:25:51.95ID:nCtpepmL
>>443
そんな内容で他人に通じるとでも思ってんの?
そんな内容で他人に通じるとでも思ってんの?
2021/01/25(月) 18:34:33.69ID:zCNrI+rm
↑単にnodenv,pyenv,rbenv入れて切り替えれば良いだけじゃね?
マスターは全部(30全部のせ)インストールして。
jdkだけ無いから、dockerfile内でJDK_HOME変数いじる。
マスターは全部(30全部のせ)インストールして。
jdkだけ無いから、dockerfile内でJDK_HOME変数いじる。
2021/01/25(月) 18:59:55.13ID:R9sUsxwm
なんかしらんがどうしてもDinD使いたいんだろうさw
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- タイムズカー、個人情報最大660万件流出 氏名、住所、生年月日、電話番号、メアド、運転免許情報、学生証などの画像 [おっさん友の会★]
- 【サッカー】日本に敗れたベネズエラ監督 PK獲得が一転PK献上の判定に不満爆発「私たちへのリスペクトを欠いていた」 [ゴアマガラ★]
- 【🇯🇵】日の丸を傷つけたら処罰「国旗損壊罪」に日弁連が即時廃止求める「表現の自由そのものが失われかねない」 [少考さん★]
- 【サッカー】ベネズエラ代表DFがジャッジに怒り、監督も指摘したシーンをSNSで共有「ホスト国を勝たせるために仕組まれた親善試合だ」 [ニーニーφ★]
- 中野2億円時計窃盗事件のチリ人2人再逮捕 日本狙った理由「刑罰軽い」 [少考さん★]
- 【米中】トランプ氏、「中国側へ武器売却」を提案 対台湾懸念で 米大使明かす ★4 [煮卵★]
- 小泉進次郎防衛相「核兵器の保有を議論したい」 堂々世界の敵宣言をしてしまう [709039863]
- 抱いて抱いて抱いて🩷んなりーた(・o・🍬)🏰
- 山尾志桜里「高市さんを批判する左の方々は、アメリカに媚びるなと言いながら中国は怒らせるなと言う」 [834922174]
- 【高市悲報】総理大臣「敵国条項外せ!」防衛大臣「核武装させろ!」 [616817505]
- 王毅外相 高市の台湾有事答弁を是正させろと岩屋議員に抗議 [931948549]
- 【女子枠】東京大学の大学学長、得票数1位(1107票)の男じゃなく2位(553票)の女性が選出されてしまうwwwwwwwwwwww [839150984]