探検


Docker Part5

■ このスレッドは過去ログ倉庫に格納されています
2020/12/02(水) 19:13:07.36ID:y3Zdr8oB
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/
2021/01/17(日) 08:17:47.03ID:/DQZFtWw
>>341
> GitLabを、使いてえんだよ
ただのユーザーですか?
ここは開発者のスレです。

使うだけならDockerでもパッケージでもなんでもいいだろが
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使う方が楽かも
2021/01/19(火) 22:55:16.38ID:4qB/okoY
まさかDockerの中でbashの履歴やタブ補完がほしいとか思ってるのか?
デバッグ用は別として、Dockerコンテナの中で作業するものじゃないぞ
>>1をちゃんと読め
2021/01/20(水) 01:38:52.84ID:huiLDeTC
>>353
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
docker原理主義者は・・・まあ馬鹿だから分からんわな。
ウチの職場でもこんなツールあるんだぜと、紹介はあったな。

https://youtu.be/Uvf2FVS1F8k
358347
垢版 |
2021/01/20(水) 06:40:15.88ID:SSSAU54j
環境依存するものをコンテナに入れていくと、
その環境では便利だけど、可搬性が無くなる

コンテナを別の環境へ持っていくと、環境依存のために動かなくなるので、
別の環境用への環境構築が必要となり、Docker を使う意味が無くなる

>>347
に書いた、
Dockerに、supervisord などを入れて、
仮想マシンみたいに使おうとする香具師と同じ

WSL2, Ubuntu などで直接構築しているのと同じになってしまう。
Dockerを使う意味がない
359login:Penguin
垢版 |
2021/01/20(水) 07:47:48.53ID:dF9xmUsG
サーバーのメンテナンス作業のために
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) とか
363login:Penguin
垢版 |
2021/01/20(水) 11:09:54.36ID:dF9xmUsG
>>360
bashじゃなくてbashInteractiveを入れる必要があったようだ

nixはパッケージが別になってるようだ
ややこしいね
2021/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イメージ引っ張ってきて実行してくれる
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すら入れないのがさいつよじゃね?

イメージにシェル入れるなら、インタラクティブ版でよかね
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
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
>>365
alpineに入ってるのはbusybox ashだね。
インタラクティブな機能がまったくないシェルなんてないだろ?
インタラクティブシェルが入ってるからなんだっていうんだ?
2021/01/21(木) 18:03:34.93ID:2L6M1psr
>>367
シングルバイナリで外部コマンドは全く使用しない
ライブラリは全く使用しない

それってDockerで動かす意味有るの?
だってそのシングルバイナリ以外はなにもないんでしょ?
カーネルの機能だけあれば動くなら、
Dockerの外で動かせばいいじゃないw

外部に依存しているものを動かしたいという前提があるから
Dockerを使うのであって、その前提を無視するなら意味がない
379login:Penguin
垢版 |
2021/01/21(木) 18:36:01.89ID:E7zvWTdU
>>378
コンテナオーケストレーター使うなら
意味あると思う
何言語で書かれていようが
同じ方法で環境変数の設定やら監視やらローリングアップデートができる
Goも例外ではない

>>377
nixはbashとbashInteractiveに分かれてる
Interactiveなしの方はインタラクティブシェルに普通はある機能が省略されてて
シェルのインタラクティブモードに入っても
タブで補完できないし
上を押すとASCIIコードがそのまま出る
2021/01/21(木) 18:48:25.81ID:B7BVM9Yk
>>378
オーケストレーターがシングルバイナリに対応してるならコンテナは要らんよ
381login:Penguin
垢版 |
2021/01/21(木) 18:54:10.09ID:E7zvWTdU
ローカルでCLIツール動かすだけならバイナリを直接配布でもよい

Webサーバーとか動かすならコンテナオーケストレーターの機能は便利
2021/01/21(木) 22:46:18.99ID:2L6M1psr
>>380
コンテナ使うならシングルバイナリなんかいらんよw

シングルバイナリだと修正したときに全部ビルドし直しだろ?
それってDockerイメージ作り直しと同じことしてるだけだからね

シングルバイナリビルドし直しOKなら
Dockerイメージビルドし直しもOKなはずだ
2021/01/21(木) 22:47:47.57ID:2L6M1psr
>>381
中間は?Ruby(Rails)のように1バイナリを
作るわけじゃないけど起動するのは1アプリ
2021/01/21(木) 22:50:20.24ID:2L6M1psr
>>379
> Interactiveなしの方はインタラクティブシェルに普通はある機能が省略されてて

それはモードの違いであってバイナリは同じ
2021/01/22(金) 01:40:05.86ID:MJHncGOI
HashiCorpのサービスはどれもこれもシングルバイナリだ
たしかにあそこまで行くとDocker要らんわ
2021/01/22(金) 10:00:45.96ID:T81U45xE
だからDockerは(シングルバイナリとかを)使うためじゃなくて
開発者が自分で開発するときに使うもの

シングルバイナリを作るのが難しい場合もたくさんある
スクリプト言語なんかはほぼ全てそれ

開発者のためのもの
387login:Penguin
垢版 |
2021/01/22(金) 10:54:50.10ID:mPC90pRk
大は小を兼ねるってことで
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

単にパッケージのバージョンを指定すると、そのうちパッケージがリポジトリから消えてビルド出来なくなる

古いバージョンのリポジトリを使うなら可能だが、マイナーバージョンのアップデートはされるだろう

特定のパッケージだけ最新メジャーバージョンにしたいから
複数のリポジトリを使い分けするぜ!みたいな使い方は
一応可能らしいが、
公式にはサポートされてない
2021/01/22(金) 19:47:20.60ID:MJHncGOI
もっと気軽にDinDできればいいんだが
2021/01/22(金) 21:02:59.02ID:XsvVSgn6
>>388
古いリポジトリがアーカイブされている必要もあるし、
結局、Debian、CentOS(8以前)とか、硬派なバージョン管理をしているdistroを使うしかないと思う。
そうでないと、ABI互換されへんしな。
2021/01/23(土) 03:09:15.57ID:qmn8QEZZ
>>389
気軽にできないってことは使い方が間違っているということだよ
何に使ってるのさ?仮想マシンを使えば?
392login:Penguin
垢版 |
2021/01/23(土) 10:16:51.97ID:L1o04Qzm
k3dはdocker in dockerのReal world example
中で起動するのは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ならオフィシャルのイメージを使えるってのもいいね
自前でパッケージインストールすると最適化がどうしても甘くなる
2021/01/23(土) 12:25:52.54ID:qJ35GPj0
すみません
初歩的な質問で申し訳ないのですが、
今でも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をオフにしてもダメだったんですよね
ありがとうございます
400login:Penguin
垢版 |
2021/01/23(土) 12:48:05.70ID:L1o04Qzm
Hyper-VとVirtualbox等の別のハイパーバイザーは共存不可
同時には使えない

最近のバージョンのVirtualBoxはHyper-Vに対応してるけど
まだ実験段階らしいのでおすすめしない

Vagrant経由でVirtualbox使ってるならHyper-Vを直接利用に切り替える手もある
2021/01/23(土) 13:24:45.94ID:/f7HUFMf
Mac、LinuxならDockerとVirtualBoxが共存できるよ
開発者なら今すぐMac、Linuxに移行しよう
2021/01/23(土) 15:42:35.24ID:qM5mhLKt
>>397 こういうのはVirtualBoxに適当なLinuxいれてその上でDocker使うことと何が違うの?
Win10->VirtualBox+Linux->Dockerと
Win10->WSL2->Dockerで使うのは、結局同じなんじゃないの?
2021/01/23(土) 16:49:01.46ID:qmn8QEZZ
>>396
> Dockerfileで静的にインストールすると、コマンドラインのバージョンが固定されちまうが

それは、シングルバイナリにすると、ライブラリのバージョンが固定化されてしまい
アップデートする時に、すべてバイナリを作り直しになるという話と何が違うの?

つまりコマンドラインのバージョンを変えたいなら、Dockerイメージを作り直せばいいだけじゃない
2021/01/23(土) 16:52:02.37ID:qmn8QEZZ
>>402
>>397 こういうのはVirtualBoxに適当なLinuxいれてその上でDocker使うことと何が違うの?

Docker公式サポート版か、独自ビルド版かの違いのようなもの

公式のWindows版はWindowsで使いやすいように開発されているが
Linux版を使うのであれば、Windowsで使いやすくするために
Dockerがやってる部分を自分で開発しなければいけない
2021/01/23(土) 16:58:45.75ID:TELIs3ia
>>402
hypervisorも変わるし、結局同じじゃない

とりあえず、Windowsを捨てるこっちゃな
2021/01/23(土) 17:25:17.38ID:qmn8QEZZ
Windowsを捨てられるならとっくにそうしてる
今はLinuxだけが動けばいい世の中ではない
2021/01/23(土) 18:35:08.71ID:pBA41e7z
>>403
動的に変えたいんだよ
いちいち組み合わせごとにビルドしてらんない
2021/01/23(土) 18:39:23.99ID:shVfejGa
使いやすさで言うとLinux母艦がベスト
Windows母艦使わなきゃならん場合はLinux仮想マシンが良い
でも唯一の弱点があって重いこと
それだけにために使いにくい公式のdocker for winを使う
2021/01/23(土) 20:20:18.54ID:qmn8QEZZ
>>407
シングルバイナリの話で言えば、
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なら簡単だろ?
2021/01/24(日) 01:04:39.71ID:7pSGFgQW
dockerインストールしてdocker image使えば動く
それが大きい
組み合わせとか無駄な労力
2021/01/24(日) 01:32:49.86ID:zknkl/jN
そうじゃない
組み合わせで無駄な労力をかけなくていいようにDinDなんだよ
DinDじゃなきゃ組み合わせ爆発で大変な目に合う
2021/01/24(日) 05:44:03.19ID:ghBgWKiE
CircleCI の、Win/Mac/Linux 環境でのマトリックスビルド
2021/01/24(日) 06:43:13.57ID:M0zj61YH
>>412
> 組み合わせごとにimage作ってたら1000回のビルドが必要

1000回のビルド vs 1000回の入れ替え
だろ?

何も違いがないんだが
2021/01/24(日) 06:45:22.77ID:M0zj61YH
あ、もしかしてイメージのビルドって
JavaやPythonやRubyのソースコードから
ビルドするって勘違いしてるのか?

Dockerイメージのビルドって単にファイルをコピーするだけだぞ
お前の言うファイルの入れ替えと何も変わらん
418login:Penguin
垢版 |
2021/01/24(日) 09:23:55.77ID:5dJlz7Oi
>>417
Dockerエアプかよ
ビルドする事はあるだろ

https://github.com/aws/amazon-eks-pod-identity-webhook/blob/ed8c41fcc820e2ec84ec2a7faff879eab4db65d3/Dockerfile#L5
2021/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だけで完結させたいね
2021/01/24(日) 11:44:53.66ID:M0zj61YH
>>418
ビルドする「事がある」なら、ビルドしないような
Dockerfileにするのが本当の解決方法
423login:Penguin
垢版 |
2021/01/24(日) 12:11:38.84ID:lUIISiii
>>422
Amazonはgoのbuildしててアホってこと?
おまえAmazonより賢いの?
2021/01/24(日) 12:29:05.10ID:em6DyPtH
dockerには様々な使い方ができてそれが便利なんだが
どうも「僕の考えた正しい使い方」以外に強烈な拒否反応を示す輩がここに住み着いてるみたいだね
こいつのせいでいつも荒れる
2021/01/24(日) 18:40:26.34ID:M0zj61YH
>>423
アホなのか?ビルドしても問題ない場合の話なんか誰もしてねーよ
ちゃんと読んでみろ、1000回のビルドに困ってるやつが
「ビルドしててアホ、俺はDinDを使ってる」って言ってんだろ

そして、1000回のビルドの組合せ爆発を行わせないために
ファイルを入れ替えて、1000回のテストをやるって
言ってるんだぜ?どっちみち組合せ爆発してるじゃねーかwww
2021/01/24(日) 19:29:59.47ID:zknkl/jN
組合わせビルドだと1000の追加容量
全部のせだと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
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拡張機能とかでする感じで・・・この拡張機能まだプレビューだけと
432login:Penguin
垢版 |
2021/01/25(月) 12:34:44.77ID:UrQIjnTy
>>431
無断転載禁止

プログラマの雑談部屋 ★128
https://medaka.5ch.net/test/read.cgi/prog/1610960220/655
2021/01/25(月) 12:49:51.56ID:PDbAdQWp
>>431
これは本当に必要か?手段が目的化していないか?
と自分に問うクセを付けたほうがいいよ
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で決めていく
2021/01/25(月) 13:17:07.04ID:L2NMho+v
Dockerで複数のイメージを作っても
同じ内容は共通化されるんですよ
だからファイルサイズは増えません

バイナリを入れ替えるとかいう変なやり方と
使用する容量はほぼ変わりません
2021/01/25(月) 14:49:42.07ID:1bwGrDuX
内容が同じなら共通化されるわけじゃない
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(笑)とかで
ファイル差し替えとかいうのとやってることは何も変わらん

ベースとなるイメージは共通で使って
実際に動かすイメージだけビルド→終わったら破棄すれば容量食わないし
元となるイメージは削除せずに使い回すのだからビルドの時間もかからん
2021/01/25(月) 15:37:04.20ID:CdDAXNrB
マルチステージの動作確認ってどうしてるの?
2021/01/25(月) 15:45:33.93ID:mUuiFIpJ
>>437
それ結局1000容量必要じゃんw
2021/01/25(月) 15:55:37.46ID:nCtpepmL
>>439
使うたびに消すのだからいらない

それ言ったら、DinDだって1000容量必要なわけで
イメージ毎にファイル差し替え=コピーしてるでしょw
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に複数のイメージで同じコマンドを実行する機能とか無いか?
2021/01/25(月) 16:24:11.77ID:CdDAXNrB
>>441
必要なディレクトリが分からないケースがあるので困ってる。後はパスをどうやって通すのか。

本とかあれば教えて
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変数いじる。
2021/01/25(月) 18:59:55.13ID:R9sUsxwm
なんかしらんがどうしてもDinD使いたいんだろうさw
2021/01/25(月) 20:14:01.29ID:RyTuSemV
>>440
実行するたびにビルドすんの?もうめちゃくちゃだな
DinDなら30の容量で済むのに組み合わせの事前ビルドだと1000必要
DinDだと実行するまで容量を食わない
2021/01/25(月) 20:15:41.98ID:iGDBOFL2
>>445
依存パッケージのバージョン競合が不安になるな
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況