探検


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/16(土) 15:06:42.89ID:Q9Gxtc5G
>>320
大した手間じゃないよ

一流は自分達の、多少の手間を惜しんで、ユーザーの負担を、増やそうとはしない
二流は自分達が、ほんの少し楽したいからって、ユーザーに手間をオシツケテル

GitLabは超一流だ
だから、シングルコンテナを選んだ
そのほうが、ユーザーが、楽だからだ
2021/01/16(土) 15:08:16.52ID:Q9Gxtc5G
>>321
世界に公開するイメージなら、どの環境でも、簡単な手順で、動いたほうがいいに、決まってる
324login:Penguin
垢版 |
2021/01/16(土) 15:09:08.10ID:kbdLhinp
>>322
そんな物誰も求めてないから真似しないんだと思うよ。
2021/01/16(土) 16:14:05.11ID:xgde4k3r
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock my-awesome-app docker-compose up
326login:Penguin
垢版 |
2021/01/16(土) 17:46:05.64ID:A/RioSjd
docker.sockをさらけ出すとあぶない
2021/01/16(土) 20:08:19.27ID:agw/Ae5n
>>226でDockerてのは設計としては1コンテナ1プロセスを推奨してますよ、普通は>>308みたいにymlとdocker-compose
で構築してくださいね、でもまあ>>277見たいなケースで複数プロセス動かしたい時は>>288みたいな仕組みは用意して
ますから使ってくださいね、このケースの成功例はGitLabがありますよ。
唯>>296の様なリスクも在りますので気をつけてくださいね。

と、たったこれだけの話なのに一流だ二流だDockerfileもyamlも書かずに使ってるだけだから分かってないと、兎に角
相手をDisらなければDocker原理主義者の皆さんの会話でしたw
2021/01/16(土) 20:29:43.69ID:xviAIVIh
暇だから適当なこと言ってからかって遊んでるだけだぞ
2021/01/16(土) 20:48:18.87ID:hpTtRYug
GitLabは例外でしかないだろ
GitLabのDockerfileみてみろ、めちゃくちゃ大変なことしてるぞ

あれはそこまで頑張ってでも1コンテナにしたほうが
利用者にとっては便利だから、工数かけてやっただけで
作る側にとっては大変だってことの証明になってる
330login:Penguin
垢版 |
2021/01/16(土) 21:13:25.79ID:niX7PYZl
GitLabはDockerが推奨する「普通の」やり方で作った非公式イメージが前からあった
あのやり方に疑問を抱く者は少なくなかった

公式helmチャートも出来たようだ
helmでそんな巨大イメージにする必要ないので
普通のやり方で作られてる
2021/01/16(土) 21:17:03.29ID:g9x2r+gF
> あのやり方に疑問を抱く者は少なくなかった

それは使う側から見た話だろ?
作る側はどれだけ大変か、Dockerfileを見ればわかる
2021/01/16(土) 21:20:07.53ID:Vaze8PjO
オーケストレーション前提じゃオペレーターも大変だ
オペレーターはレゴブロック遊びに付き合うほど暇じゃない
333login:Penguin
垢版 |
2021/01/16(土) 21:25:17.11ID:wiSCvGlT
https://github.com/sameersbn/docker-gitlab
GitLab使うならこっちでよくね?
2021/01/16(土) 21:29:15.94ID:OQ3EdIh9
readmeなっが
お手軽な公式版、使うわ
2021/01/16(土) 21:31:40.06ID:g9x2r+gF
な?「使うわ」という使う側の立場でしか見てないんだよ
作る側の大変さの話をしてるのにな
336login:Penguin
垢版 |
2021/01/16(土) 21:34:13.07ID:2WB90esU
バカの一つ覚えのように一つのコンテナなら手軽に試せるしか言わねえし
何言っても無駄だろ
337login:Penguin
垢版 |
2021/01/16(土) 21:36:40.06ID:TWWzREgo
>>334
https://github.com/sameersbn/docker-gitlab#quick-start
338login:Penguin
垢版 |
2021/01/16(土) 21:40:03.44ID:pzrp2Yop
redisとpostgresを何らかの手段で起動し
シークレットの暗号化に使う文字列を3つ作れば良い
たったこれだけ
これ以上簡単になりようがない

それを>>332はできないと言って
先程から大騒ぎしている
2021/01/16(土) 21:43:35.78ID:g9x2r+gF
GitLabはウェブサービスも運営してるが
そのGitLabがそのDockerfileを使ってると思うのか?って話だよな

スケールさせるためには、アプリとデータベースを分離させるのは当たり前だし
Dockerを使うっていうのは、そういうウェブサービスも運営するときの
システムを作るために有るのだから、そういうときにどういう構成にしますか?の
話でサービス毎にコンテナを分けるのは当たり前

作る側の視点がかけてる
これはDockerコンテナを動かすだけの
インフラ屋にありがち
340login:Penguin
垢版 |
2021/01/16(土) 21:47:08.37ID:LbH2M5zo
ごった煮イメージが本番運用に堪えないって点に異論は無いらしい
2021/01/16(土) 22:02:21.78ID:jF/4b5o1
>>338
めんどくせー
ポスグレでも、Redisでも、シークレットでもねえ
GitLabを、使いてえんだよ
なんだよこの、野球してえのに、サッカーボールでリフティングの練習しろ、みたいな要求は
2021/01/16(土) 22:03:34.26ID:d+XwEvch
コンテナひとまとめが効率的おじさんは放置推奨。
2021/01/16(土) 22:03:42.74ID:jF/4b5o1
>>339
殆どのユーザーは、有料Gitlabサービス運営なんかせんだろ
オンプレで、テキトーに、運用したいだけ
2021/01/16(土) 22:12:43.53ID:jF/4b5o1
なーんか、噛み合わねえんだよな

昼休憩にラーメン食いたいなぁ、って思ったら、まあ、カップ麺が手軽でいいわな
そうじゃなきゃ、チョイと割高だけど、ラーメン屋にでも行くかぁ、ってそういう話をしてんだよ

それなのにお前らは、
麺はどこそこの業者から原材料を仕入れて、手打ちが至高だの
チャーシューは、最高級の肉を使い、じっくりコトコト煮込んだものが、究極だ
スープはどーしろ、野菜はあーしろ
よし、一週間まってくれ
最高のラーメンを、食わせてやりますよ!
とまあ、こんな感じ
おいおい、昼休み、とっくに終わってる、つーの!
2021/01/16(土) 22:20:02.74ID:K7Q8mRub
dockerがどこから収益得てるのか考えたら
単なる1ユーザーがdocker使えるわ〜とかに
なるわけない
配布と奴隷を効率的に使うためにある
2021/01/17(日) 01:00:01.28ID:N6lWNkjM
二択で話をしたって言い争いにしかならねーぞ
2021/01/17(日) 05:42:17.89ID:XuFuvYAj
いつも、Docker をsupervisord とか、
仮想マシンみたいに使おうとする香具師が来て、1日で100レス以上進む。
同じ香具師だろ

1つの関心事につき、コンテナは1つ。
Docker Compose は本番では使えない

そもそもポートフォワーディング方式だと、スケールできないし。
既にポート80番を使っていたら、
8080番とか、ポートを変えないといけないから、ユーザーがアクセスできない

Kubernetes みたいに、cgroup, namespace が無いと運用できない
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だけで完結させたいね
■ このスレッドは過去ログ倉庫に格納されています

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