探検


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/03/09(火) 21:08:24.63ID:AXua7b80
遣わない理由はコスト
776運用情報臨時板でワッチョイ導入議論中
垢版 |
2021/03/09(火) 21:52:46.48ID:thtVz5nz
なんのコストか言わない時点で
適当なこと言ってるってわかるやろ?
777運用情報臨時板でワッチョイ導入議論中
垢版 |
2021/03/09(火) 21:58:47.21ID:O4UynfwL
ここのスレで批判してるやつは GKE も ECS もそんな単語すら聞いたことないレベルしか居ないぞ
2021/03/09(火) 22:07:08.10ID:aIUI+/Sm
>>776
クラウド
779運用情報臨時板でワッチョイ導入議論中
垢版 |
2021/03/09(火) 22:10:12.58ID:thtVz5nz
>>778
クラウドで使う場合、無料でオープンソースの
Dockerを使うと、どこにコストがかかるんですか?

Dockerを使うのと使わない場合の
違いを言ってください
2021/03/09(火) 22:22:50.72ID:aIUI+/Sm
>>779
無料のマネージドk8sあるなら教えて
781運用情報臨時板でワッチョイ導入議論中
垢版 |
2021/03/09(火) 22:25:03.95ID:xOuTaRGb
流石Docker原理主義者だなぁ・・・
無料でオープンソースのDocker以外のことは何も知らないww

・・・とツッコミを期待するネタだよね?
意味不明だけど面白いよ!
782運用情報臨時板でワッチョイ導入議論中
垢版 |
2021/03/09(火) 22:25:30.91ID:thtVz5nz
>>780
マネージドk8s と同じことをDockerを使わないで
どうやってやるんですか、まず話はそこからな
お前のターン、早くレスしやがれ
2021/03/09(火) 22:45:33.16ID:aIUI+/Sm
あー、いつものやつか
784運用情報臨時板でワッチョイ導入議論中
垢版 |
2021/03/10(水) 02:53:44.87ID:dmKl+QZO
>>780
答えられない、知らないなら、適当なこと言うんじゃなかったな
Dockerは単にアプリをデプロイしやすくするためのもので

マネージドk8sを使わない、単体の仮想マシンでも使えるって
気づいて逃げたか?w
2021/03/10(水) 09:34:02.86ID:O0EPXOHE
ワッチョイまだかな
786運用情報臨時板でワッチョイ導入議論中
垢版 |
2021/03/10(水) 09:42:24.04ID:vS2MWwBS
いらんだろ。
レス見てあれ?変な事言ってるな?と思ったら大体同一人物だろ。
2021/03/10(水) 09:49:47.06ID:ivn403GC
原理主義者はせいぜい2人くらいか
2021/03/10(水) 10:19:24.18ID:TzedVAf5
>>786
その同一人物をあぼーんするのに便利だから導入しようって流れでしょ?
このスレでことあるごとに粘着してくるいつもの奴とか消したらスッキリするよ
789運用情報臨時板でワッチョイ導入議論中
垢版 |
2021/03/10(水) 10:34:04.97ID:vS2MWwBS
いや。別にいらんな。
馬鹿を見抜くのもエンジニアのスキルだろ。
Linuxスレにワッチョイ有無の議論なんか必要ないというのも同じ理屈。
2021/03/10(水) 10:44:17.44ID:uMYHMW6J
>>788
ワッチョイは回線つなぎ変えたら変わるけど
どうやってあぼーんするの?
それっぽいレスを見かけるたびにNG登録していくの?
2021/03/10(水) 10:45:22.08ID:uMYHMW6J
Docker使ったらマネージドk8sを使わないといけないって
思ってるやつってアホなのかな?
2021/03/10(水) 10:47:44.24ID:Q8+Vst7D
>>789
目に入るだけで邪魔だからあぼーんは有効だよ

>>790
変えられると言ってもある程度パターンあるからね
2021/03/10(水) 11:54:13.17ID:uMYHMW6J
ワッチョイはIPアドレスとユーザーエージェントから出してるから
回線つなぎ替えるたびに変えられるよ
2021/03/10(水) 11:58:48.69ID:wDA4Uuzi
運用するならマネージドK8S必須かな
開発環境は好きにすればいい
795運用情報臨時板でワッチョイ導入議論中
垢版 |
2021/03/10(水) 12:04:03.57ID:uMYHMW6J
マネージドK8S必須だとして、それをDockerを使わないでやる場合
どうやるのか?そっちの方がコストかかるだろって話なんだが
結局逃げたもんなw

クラウドでマネージドK8S必須、つまりクラスタ構成で
Dockerよりも金がかからない方法があるなら言ってみろって

例えその方法を出した所で、その方法+DockerならマネージドK8S使わないから
サーバーへのデプロイが楽になる分、コストは下がりますねという反論が控えてるわけだがw
2021/03/10(水) 12:06:36.57ID:yB05zoUe
podman
797運用情報臨時板でワッチョイ導入議論中
垢版 |
2021/03/10(水) 12:38:00.49ID:vS2MWwBS
会話の滑りっぷりがひどすぎw
2021/03/10(水) 12:42:43.63ID:01iiLQ7f
Docker を NG ワードにしたらすっきりした
2021/03/10(水) 13:09:29.27ID:Eu5Q0iPT
podman 2 〜Dr. ワイリーの謎〜
800運用情報臨時板でワッチョイ導入議論中
垢版 |
2021/03/10(水) 14:08:20.73ID:uMYHMW6J
これの話だってわかってないやつがいるのか?

> 771 名前:運用情報臨時板でワッチョイ導入議論中[sage] 投稿日:2021/03/09(火) 20:14:53.28 ID:Ui3x5dki
> ホスト管理がめんどくさい
> ボリューム管理がめんどくさい
> セキュリティ対策がめんどくさい
801運用情報臨時板でワッチョイ導入議論中
垢版 |
2021/03/10(水) 14:25:33.99ID:vS2MWwBS
君が会話していると思い込んでいる相手はそんな話をしていない。
802運用情報臨時板でワッチョイ導入議論中
垢版 |
2021/03/10(水) 14:55:55.01ID:uMYHMW6J
逆だろう。俺は最初からそいつとしか会話してないんだが
関係ないやつが絡んできてる
803運用情報臨時板でワッチョイ導入議論中
垢版 |
2021/03/10(水) 15:20:22.28ID:vS2MWwBS
771を発端とした会話は772が既にお門違いで滑ってるがw
804運用情報臨時板でワッチョイ導入議論中
垢版 |
2021/03/10(水) 15:21:41.94ID:uMYHMW6J
>>803
どこがお門違いなの?
まずそこでしょう
805運用情報臨時板でワッチョイ導入議論中
垢版 |
2021/03/10(水) 15:22:35.49ID:uMYHMW6J
何も言い返さないくせに
「お、お門違いだから(ふるえ)」はやめたほうがいいよ
806運用情報臨時板でワッチョイ導入議論中
垢版 |
2021/03/10(水) 16:38:49.47ID:vS2MWwBS
>馬鹿を見抜くのもエンジニアのスキル

って言ってるだろ?771がレス返さなくなったと言うなら、そいつは(多分)優秀だよ。
たった1回のやり取りで「あコイツと会話続けても無駄だな」と悟ったのだろう。
2021/03/10(水) 17:20:23.64ID:uMYHMW6J
何も言い返せなくなったからレスしてないだけ
808運用情報臨時板でワッチョイ導入議論中
垢版 |
2021/03/10(水) 17:21:37.31ID:uMYHMW6J
>>806
なんなら代わりにお前がレスすればいいし、他の誰でも引き継いでレスすればいい
誰も>>771の後を引き継がないのは、>>771に勝ち目がないからだよ
2021/03/10(水) 17:23:38.64ID:+wwE/KLD
勝ちとか負けとか変なこだわりがある人がいるんすねぇ...
2021/03/10(水) 17:33:58.17ID:Q8+Vst7D
明らかにいつもの奴だしワンパだからレスバしても発展性ないんだよね
ワッチョイが待ち遠しい
2021/03/10(水) 20:21:58.42ID:ivn403GC
レスバに勝ちたい!
812運用情報臨時板でワッチョイ導入議論中
垢版 |
2021/03/10(水) 20:23:03.03ID:uMYHMW6J
あなたはそうなんですね
813運用情報臨時板でワッチョイ導入議論中
垢版 |
2021/03/10(水) 22:19:10.06ID:jGOWOSeF
Docker images and their layers explained
https://dominikbraun.io/blog/docker/docker-images-and-their-layers-explained/
814login:Penguin
垢版 |
2021/03/11(木) 21:12:05.15ID:T3GHjcYC
>>813
何がすばらしいのか解説してくれ。
長すぎて読むのが面倒くさい。
815login:Penguin
垢版 |
2021/03/11(木) 21:27:47.14ID:/6wLYBLL
イメージレイヤーってすごいよね
複数イメージで共有してディスク領域や転送時間を節約できるし
いろいろ変更してもコンテナを立ち上げ直したら綺麗さっぱり消えるし
816login:Penguin
垢版 |
2021/03/11(木) 23:39:18.14ID:T3GHjcYC
別に何も凄くないw
2021/03/12(金) 10:29:24.57ID:Is0xlw0S
はてぶでバズってたけど
https://sysdig.jp/blog/dockerfile-best-practices/

特定のUIDにバインドしない
↑
UIDをバインドしないとパーミッションで書き込みできないんだよなLinuxでは
818login:Penguin
垢版 |
2021/03/12(金) 10:43:06.08ID:Ckt9hMHN
>>817
いいね。ベストプラクティスが広まればVMの代わりとして使おうとするやつも減るかも
これらのベストプラクティスはVMとして使えなくする制約に近いから

1. 不要な特権を避ける
 コンテナを root で実行しないようにする
 特定のUIDにバインドしない
 実行可能ファイルを root が所有し、書き込み可能ではないものする
2. 攻撃対象を減らす
 マルチステージビルドを活用する
 distroless イメージを使うか、ゼロからビルドする
 イメージを頻繁に更新する
 暴露されたポートに注意する
3. 機密データの漏洩を防ぐ
 Dockerfileの命令にシークレットや認証情報を入れないようにしましょう
 ADDよりもCOPYを優先してください
 Dockerのコンテキストを意識し、.dockerignoreを使用する
4. その他
 レイヤーの数を減らし、インテリジェントに並べる
 メタデータとラベルを追加する
 lintersを活用してチェックを自動化する
 開発中にイメージをローカルでスキャンする
5. イメージのビルドの先には
 docker socketとTCP接続を保護します
 イメージに署名し、実行時に検証します
 タグの変異を避ける
 環境を root で実行しない
 ヘルスチェックを含める
 アプリケーションの機能を制限する
2021/03/12(金) 11:38:18.03ID:fsIGodsX
やっぱdockerならではのめんどくささってあるよな
820login:Penguin
垢版 |
2021/03/12(金) 14:34:19.65ID:M0oFRexN
>>819
これが面倒って感じるんだな ほぼ Dockerfile だけなのに無知は恥だよ
821login:Penguin
垢版 |
2021/03/12(金) 15:29:28.39ID:Ckt9hMHN
「面倒くさい」には二通りの意味がある

1. 作業が面倒くさい
2. 作業を"効率化するのが"面倒くさい


>>819の意味は2番目
822login:Penguin
垢版 |
2021/03/12(金) 15:41:38.41ID:y0GdntGH
>Dockerfileの命令にシークレットや認証情報を入れないようにしましょう

ってDockerは単体でシークレット提供して無いじゃん。
何でdaemonで動いてる癖にdocker composeから使えるsecret提供しないんだ?
823login:Penguin
垢版 |
2021/03/12(金) 16:05:45.99ID:M0oFRexN
っていっても今じゃ Buildx もあるしな
824login:Penguin
垢版 |
2021/03/12(金) 16:25:00.07ID:Ckt9hMHN
>>822
お前シークレットを何だと思ってるんだ?
アプリのバイナリの中に秘密情報入れないだろ
Dockerも同じでDockerイメージの中に秘密情報を入れたりしないんだよ

で、Dockerコンテナ(=アプリ)起動時に、Dockerの外の情報に
環境変数やボリュームでアクセスできるんだから何の問題もない
825login:Penguin
垢版 |
2021/03/12(金) 16:26:32.40ID:Ckt9hMHN
訂正

Dockerコンテナ(=アプリ)起動時に、環境変数やボリュームで
認証情報を含む任意の情報を渡せるんだから何の問題もない
826login:Penguin
垢版 |
2021/03/12(金) 16:28:55.28ID:y0GdntGH
>>824
馬鹿は黙っててね。よろしくw
827login:Penguin
垢版 |
2021/03/12(金) 16:30:36.11ID:Ckt9hMHN
馬鹿じゃないから黙らないし
何も言い返せないのはお前だ
828login:Penguin
垢版 |
2021/03/12(金) 16:32:17.57ID:y0GdntGH
何度もいうが匿名掲示板で馬鹿を見抜くのもエンジニアのスキル。
とっくの昔に概出なのに理解できてねーとか
マジなんでそんな馬鹿が生きていけるんだ?
829login:Penguin
垢版 |
2021/03/12(金) 16:33:38.32ID:Ckt9hMHN
戯言言うばかりで「言い返さない」のが何よりの証拠
2021/03/12(金) 16:38:18.19ID:rhpCrQLw
> 概出
バカは見つかったみたいだな
831login:Penguin
垢版 |
2021/03/12(金) 16:41:22.67ID:y0GdntGH
馬鹿って本当、大変だよな!一人でシコシコ自己満足のプログラムばっかり作って悦に浸ってるんだろうw
チーム開発なんてやったことも無いんだろうねw
832login:Penguin
垢版 |
2021/03/12(金) 16:44:40.33ID:Ckt9hMHN
な?「言い返してない」の部分を見なかったことにしてるだろ?
833login:Penguin
垢版 |
2021/03/12(金) 16:53:57.09ID:y0GdntGH
ヒントは概出。
ちゃんと過去を遡れば話は出ている。
馬鹿には理解できないだろうけどw
・・・俺って優しいな!771とか馬鹿発見したらレスしないもんなw
カネも貰ってないのに手取り足取り教えてあげたしねーけどw
お前のレスは大体一発目で「あ、この人現場で作業してないな」ってのが透けて見えるんだよw
その癖謎の上から目線だから、ただの馬鹿にしか見えないww
本当、馬鹿ってどうしようもないよな!
834login:Penguin
垢版 |
2021/03/12(金) 16:58:18.06ID:Ckt9hMHN
言い訳ばかり口達者
835login:Penguin
垢版 |
2021/03/12(金) 17:10:24.40ID:M0oFRexN
またこの流れだ…
2021/03/12(金) 17:31:49.61ID:Is0xlw0S
UIDを指定できるようにするべきだね
そんなのWindowsだったらはまらないけど
Linuxで動かすときにボリュームマウントしたときにファイルの編集ができないカラ
2021/03/12(金) 18:44:44.72ID:I1TSqDN6
>>820
いや面倒だろ
そのぐらい自動でやってくれ
〜〜を気にしながら書かないとダメなんてのはすべてめんどくさい
838login:Penguin
垢版 |
2021/03/12(金) 20:11:20.05ID:M0oFRexN
>>837
じゃあそのまま時代遅れの老害で居てください笑
2021/03/12(金) 23:04:53.40ID:FvB/dbLo
https://sysdig.jp/blog/dockerfile-best-practices/ の意識が高すぎて読めなかった
2021/03/12(金) 23:13:44.28ID:Si74965R
特定のUIDにバインドしないってどういうことだ
まいかいランダムにUID決めるってか?
841login:Penguin
垢版 |
2021/03/12(金) 23:15:54.82ID:Ckt9hMHN
>>837
メンテナンス性を気にしながら書かないとダメなんてのはすべてめんどくさい

ってお前言ってるだろ?w
2021/03/12(金) 23:56:16.22ID:FvB/dbLo
>>840
https://sysdig.jp/blog/dockerfile-best-practices/
> Openshift はデフォルトでは、コンテナを実行する際にランダムな UID を使用します。

「Openshiftは絶対に使わない」ことが保証されているなら無視しても良いかも知れない
843login:Penguin
垢版 |
2021/03/13(土) 00:03:06.41ID:67vo3F6m
YAGNI

Openshiftへの対応が必要になることはない
2021/03/13(土) 00:55:31.44ID:fBnyEFkA
毎回UID違うってボリューム使わんのか
2021/03/13(土) 02:05:10.87ID:iF+JSheD
OpenShiftなんか非対応で結構、むしろ積極的に非対応にすべき
IBMがオンプレや自社クラウドで顧客を囲い込むためだけに存在する有害な技術だよ
846login:Penguin
垢版 |
2021/03/13(土) 08:24:06.51ID:OV1njusz
dockerHubにあるApacheとかnginxのイメージって最初からroot以外で動いてるよね?
2021/03/13(土) 08:49:28.15ID:OkB9sWH0
UIDの話はDockerの問題じゃなくてOpenShift特有の問題
848login:Penguin
垢版 |
2021/03/13(土) 11:03:31.56ID:w6Cw4gKa
Why do my applications run as a random user ID?
https://cookbook.openshift.org/users-and-role-based-access-control/why-do-my-applications-run-as-a-random-user-id.html

プロジェクト固有のUIDを割り当てる事で
マルチテナント環境でも
他のアプリのデータが読める事が無いようにって事らしい

そんな事はあり得ないなんて思われがちな
他のセキュリティ対策が破られるという想定外を想定するのがレッドハットなんだろう

A Guide to OpenShift and UIDs
https://www.openshift.com/blog/a-guide-to-openshift-and-uids

イメージに予めファイルやディレクトリを入れる時に
アプリが読み書きするファイルやディレクトリはrootグループに所属させる
rootグループに所属してるユーザーなら読み書き出来るようになるので、
UIDがプロジェクト固有のランダムIDでも問題ないって事らしい

それだとroot所属してる他プロジェクトのユーザーも
読み書き出来ちゃうんでは?って思うけど
新しく作成するファイルはグループIDが0(root)じゃなくてそのユーザーIDと同じグループIDになるんじゃね?
しらんけど
2021/03/13(土) 12:25:37.17ID:Iwj7PB1I
テナントごとに異なるUIDが割り当てられればいいだけであって、別にランダムにする必要はないよね
むしろランダムにしたせいでうっかりかぶっちゃいました、ランダムなのでテスト見逃しましたみたいな変なミスしそう
2021/03/13(土) 13:46:29.04ID:fKVUCcqC
root を取られないように、
UID に、1,000 を足すようなシステムがあったような

1 → 1,001
2 → 1,002
851login:Penguin
垢版 |
2021/03/13(土) 13:54:03.31ID:w6Cw4gKa
>>849
IDの範囲をテナント別で衝突しないように割り当てるんじゃね?
しらんけど
2021/03/13(土) 14:12:15.09ID:kGTBX6vY
>>849
他のテナントのUIDが推測できればそれを攻撃に利用できる可能性もないとは言えないからでしょ
853login:Penguin
垢版 |
2021/03/13(土) 14:35:10.80ID:OkB9sWH0
>>852
OpenShiftはランダムと言ってますが、それはコンテナごとに
違うという意味で、実際には推測可能なUIDが割り当てられます
854login:Penguin
垢版 |
2021/03/13(土) 16:08:24.37ID:w6Cw4gKa
namespaceを作るとUID、GIDの範囲が自動的に割り当てられ
同じnamespace内のポッドは同じUIDとグループIDになる

これによって他のnamespaceやホストマシンで動いてるプロセスが使用してるファイルなど、
無関係のファイルを読み書き出来てしまうのを防ぐ

何も指定しないとUIDとGIDは範囲内で使える最初の値になるようだ
だから同じ名前空間内のボリュームだったら
どのポッドも読み書きできるね
855login:Penguin
垢版 |
2021/03/13(土) 19:00:33.35ID:CGLHT5pS
podがどうのこうのと言っている時点で既にDockerの話じゃないんだけどな。
不特定のnode, podに対してUSER指定させたらマルチテナント環境でバッティングするから
ランダムにしよーぜなんてのはDockerレベルで考える事じゃない。
856login:Penguin
垢版 |
2021/03/13(土) 19:28:22.80ID:nRE6g312
今話をしてるのはUIDの話であって
USER指定の話ではない
857login:Penguin
垢版 |
2021/03/13(土) 19:29:16.54ID:nRE6g312
>>6
Chromeでもエラー出るようになったwww
858login:Penguin
垢版 |
2021/03/13(土) 19:30:38.61ID:nRE6g312
レスする場所間違えたw
2021/03/13(土) 19:38:27.51ID:fBnyEFkA
ほらなdockerならではの面倒くささあるじゃん
860login:Penguin
垢版 |
2021/03/13(土) 19:45:58.13ID:nRE6g312
>>859
それを判断するのは、お前がDockerを使わない場合に
同じ問題をどう解決できるかを言ってからだ

早くレスしてくれ
2021/03/13(土) 19:52:26.34ID:fBnyEFkA
はいいつもの奴NG
862login:Penguin
垢版 |
2021/03/13(土) 19:54:41.63ID:nRE6g312
ほらな?逃げただろ。こいつは反論が一切できない。
なぜならNGにして見えないからだw

まあ実際は見てるんだろうがな
だから実際には反論できないというが正解
863login:Penguin
垢版 |
2021/03/13(土) 20:04:57.71ID:w6Cw4gKa
>>855
ランダムUIDは万が一コンテナのサンドボックスが破られてホストに侵入された時のためで
ファイルの所有者がバッティングするからどうこうではない
2021/03/13(土) 20:07:48.66ID:WuKb+LRj
ランダムなら何度も繰り返し攻撃したらそのうち通るんじゃね
865login:Penguin
垢版 |
2021/03/13(土) 20:12:17.05ID:nRE6g312
この流れでコンテナのサンドボックスが破られるぐらいなら
最初からDocker(コンテナ)を使わずに、サンドボックスの外で
直接動かせばいいとか言うんだろうなw
2021/03/13(土) 21:43:02.83ID:9K/sAZAs
OpenShiftのためだけにUID指定するながベストプラクティスってやべえな
2021/03/17(水) 19:41:38.74ID:ajiqTOqm
Dev image作る人
Ops image使う人
☝あってる?
868login:Penguin
垢版 |
2021/03/18(木) 01:46:57.24ID:4WrbQg+w
>>867
あってる
ただしDevが作るイメージとは自分たちで開発したアプリのイメージ

自分たちで開発してないアプリ、オープンソースなどは
Docker公式や開発公式が作ってることが多いので
そういうのをイメージする作業は開発とは言わない

アプリ開発の一環としてDockerイメージも作る
869login:Penguin
垢版 |
2021/03/18(木) 09:38:04.69ID:QA403diq
Introducing fixuid: Tool for Changing Docker Container UID/GID at Runtime
https://boxboat.com/2017/07/25/fixuid-change-docker-container-uid-gid/

One of the most helpful things about using Docker containers for development is that it reduces developer onboarding time from a few days to a few hours or less.
Developers are able to clone a repository, start a container or run Docker compose, and start contributing immediately.

Development containers are often very different from production containers.
They usually include package managers, build tools, SDKs, remote debugging, and more.
Source code can be mounted into the development container via a host mount and changes can be immediately re-rendered via live-reload build tools.

This is where the road gets bumpy – Docker containers run as a single user. Users/groups, UIDs/GIDs, and file ownership must be decided when an image is built with docker build.

Host volumes, however, are owned by a user on the host and the host user's UID may or may not match the container user's UID.
There's an issue in the Moby repository with over 100 comments about this very topic.

Host volumes are mounted using bind mounts in Linux.
There is no way to remap UIDs/GIDs using bind mounts so often development containers end up with a mismatch of UIDs/GIDs.
This is why we created fixuid, a tool to change a Docker container's user/group and file permissions that were set at build time to the UID/GID that the container was started with at runtime.

To explain how fixuid solves this problem, let's take a look at a story about Alice and Bob, who are both developers working with development Docker containers.
870login:Penguin
垢版 |
2021/03/19(金) 13:01:11.32ID:edcYEDQK
nix使ったらDockerイメージのマージはできないけど
nixのパッケージ使ってDockerイメージ作れば似たような事は出来るね

使いたいCLIツールのパッケージが依存してるランタイムのバージョンが違ってても共存させる事が出来る
No dependency hell

ビルド時にだけ必要なパッケージと
実行時に必要なパッケージが明確に区別されてるので
要らない一時ファイルを誤ってDockerイメージに含める心配がない

nixpkgsのパッケージが豊富だし
無くても自分で書けば良い
GitHubで自作パッケージを公開し、ビルド済みバイナリをcachixに置いておけば
複数のプロジェクトから再ビルドせずに使い回せる

https://mao.5ch.net/test/read.cgi/linux/1597591176/98

98 login:Penguin sage 2020/08/28(金) 11:22:41.35 ID:0ih4XZ3G
イメージのマージ機能はいつになったらサポートされんだ
devcontainer作るときいちいちインストール方法調べてDockerfile書くの不便なんだが
2021/03/19(金) 13:14:23.15ID:dlChmxiq
前にも言ったと思うけど
俺らが本当に欲しかったものってdockerじゃなくてスマートなパッケージマネージャ(とリポジトリ)なんだよね
Container imageってアイデアは失敗だった
872login:Penguin
垢版 |
2021/03/19(金) 13:43:46.78ID:edcYEDQK
一応nixにもnixパッケージ使って隔離されたNixOS環境を作る
nixos-containerってのがあるがDockerみたいに完璧な隔離ではないらしい

nixos-containerの隔離が完璧になって
自前のバイナリキャッシュも
ローカルのnixストアみたいにGCで最小構成で保存出来たら
Dockerみたいに使えるかも
873login:Penguin
垢版 |
2021/03/19(金) 15:13:07.02ID:edcYEDQK
あらゆるCLIツールがnixでインストール可能になれば
開発環境ではnix-shell使って
本番では必要なパッケージを一つに固めたDockerイメージをk8sとかで使うってやり方が実現できる
そんな世界をまず目指そう
2021/03/19(金) 15:28:10.83ID:OafZaxWN
そうじゃなくて
開発も本番もパッケージはホストにインストールするんだよ
で本番はコンテナにパッケージを読み取り専用でマウントすんの
全部固めたイメージなんてものは要らない
875login:Penguin
垢版 |
2021/03/19(金) 16:22:12.70ID:R4CRH11B
>>871
> 俺らが本当に欲しかったものってdockerじゃなくてスマートなパッケージマネージャ(とリポジトリ)なんだよね

パッケージマネージャーだけだと
実行するときの分離ができないだろ

「俺らが」じゃなくて「お前が」欲しいものはパッケージマネージャーなので
Dockerでパッケージマネージャー相当のことがしたい
できないのは苦痛だなどと言わないように
お前の目的にあってないのよ

Dockerは開発者が自分で作ったアプリを
デプロイするためのツールだって何度も言ってるだろ
■ このスレッドは過去ログ倉庫に格納されています

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