探検


Docker Part6

■ このスレッドは過去ログ倉庫に格納されています
1login:Penguin
垢版 |
2021/07/12(月) 06:41:45.42ID:SoKAlVq4
テンプレとかいらんやろ
2022/05/02(月) 11:41:30.10ID:iwiogwhH
>>696
https://docs.docker.com/engine/api/v1.41/
これが全て
しかし、今のDocker Engineは単なるAPIサーバーでありcontainerdに処理を投げてるだけだから、
containerdや更にその下のruncの方を学ばないと中身は何もわからない
最近は運用環境ではDocker Engineはほとんど使われなくなりつつあり、完全に終わった技術
2022/07/01(金) 18:13:06.46ID:RvpRa0bP
Docker使うようになってから開発がつらくなった
とにかく意味不明のエラーが多すぎる、流行ってる割に完成度低いなコレ
2022/07/01(金) 18:42:37.41ID:lkEdJy6S
完成度の高い仮想開発環境てあるのかね?
700login:Penguin
垢版 |
2022/07/01(金) 19:34:04.13ID:7GJfiaqV
>>697
次は何が始まったんよ
2022/07/01(金) 19:47:37.70ID:Olihztzy
>>700
実行環境においては、今はDockerEngineという無駄なレイヤを省いてcontainerdを直接使うのが主流
2022/07/02(土) 15:18:38.93ID:cG229hzC
ググればわかる質問し続けるだけのスレ
2022/07/02(土) 21:05:01.78ID:G94pkTRa
Dockerが嫌な人は、一生chrootでも使っとけ!
704login:Penguin
垢版 |
2022/07/03(日) 09:48:30.30ID:tWCXJEu/
>>698
エラーが多すぎるのに使ってるとか意味不明。
2022/07/03(日) 10:07:54.28ID:+QIciuwv
エラーさえ出なければこんな便利なもんはないんだけどな
2022/07/03(日) 10:17:44.45ID:yQmOHKEf
意味不明のエラーというのが「(自分にとって)意味不明なエラー」なのか「(全人類にとって)意味不明なエラー」なのか分からないので何とも言えない
2022/07/03(日) 10:47:22.65ID:+QIciuwv
こないだ出たエラーの場合はぐぐるとStackOverflow(英語版)その他でも質問されてて未解決だったので俺以外にとっても謎ではあったんだろうと思う
2022/07/03(日) 11:22:39.44ID:nPVidC1A
簡単なことをもっと簡単にするために複雑なレイヤー挟んでそのレイヤーのせいで余計にトラブるってのは往々にしてよくあるわな
2022/07/04(月) 11:12:56.92ID:ceaLeqiG
エラーとかほざいている人は、chrootでも使っとけって!
それさえも分からなければ、qemuとかVMwareとかにしとけって!
わざわざ難しいの使わんでかまへん。
2022/07/04(月) 12:45:40.60ID:UkvdNc/n
なんだかんだで動いてる時は便利で使い慣れてきたから、できればDockerを使いたい
また別のもの覚えるの面倒くさい
711login:Penguin
垢版 |
2022/07/07(木) 11:55:54.58ID:etxz4IMP
Win10のWSL2環境だけど今までPowerShellからdocker-compose upできてたのに急に Are you trying to mount a directory onto a file (or vice-versa)? とか出てできなくなった
Ubuntuからならできたけど何故何もしてないのに壊れたのか
ぐぐったらStackOverflowとかに似た問題があったが俺のは解決しなかった
712login:Penguin
垢版 |
2022/07/08(金) 07:20:24.60ID:0pJas4Yl
何もしてないのに壊れた
2022/07/08(金) 07:45:43.82ID:PqGuPTpO
LinuxでDocker使ってるけど問題起きたことないな
みんなLinuxで使おう
2022/07/08(金) 07:57:47.62ID:BKneFUKX
少なくともWindowsなんか使うのをやめろ、まずはそこからだ
2022/07/08(金) 09:15:08.29ID:y5dr57W7
それはあるかも
キータあたりでぞろぞろ出てくる導入記事もマックが多かったような
2022/07/08(金) 09:53:14.17ID:Q121M6EQ
macでいいならwsl2でもいい
linuxかそれ以外か
2022/07/08(金) 10:14:46.79ID:Mtkp8Y+G
でもWindowsでWSL2で問題出まくるから、多分Windowsが一番悪い
2022/07/10(日) 21:31:48.29ID:b+fT+Rdp
>>717
それあなたの感想ですよね
719login:Penguin
垢版 |
2022/07/14(木) 06:47:06.30ID:xUzyzLMp
docker commitで作成したイメージを元にして、コンテナを作成して、変更を加えた後に、さらにコミットして、
そこから別のコンテナを作って…みたいに繰り返したら、イメージサイズが大きくなりすぎます。
この最終産物のイメージを短縮化することはできるのでしょうか。
2022/07/14(木) 08:18:00.66ID:Dx/JwK/7
>>719
使い方が間違っています。
docker commitでイメージを作ってはいけません
2022/07/14(木) 08:30:10.32ID:I0uobXC2
>>718
事実を述べたら感想とな
722login:Penguin
垢版 |
2022/07/14(木) 12:02:49.77ID:xUzyzLMp
>>720
どういうこと??
2022/07/14(木) 16:01:28.87ID:Dx/JwK/7
docker commitはデバッグ用であり
通常は使いません
2022/07/14(木) 16:44:22.01ID:pyzklUHM
>>719
そのイメージがどうやってできているか分かったら、
自ずと答えがわかるとおもうけどね
tarballでもraw imageでも好きにすりゃいい
2022/07/15(金) 20:27:26.49ID:IuYUHLVY
>>723
でもイメージ化しないと不便でしょう
2022/07/15(金) 23:11:28.07ID:ABhBONIX
不便も何も、そもそも再現性のないイメージに価値などない
727login:Penguin
垢版 |
2022/07/16(土) 09:12:04.75ID:zrj7+nS+
正解
728login:Penguin
垢版 |
2022/07/16(土) 09:50:45.42ID:Drz+sQG1
>>726
イメージでなければ再現するのに時間がかかるし、
再現する方法をメモしておけば良い
2022/07/16(土) 10:41:20.32ID:IVvX0kjb
そのメモをDockerfileに書けば良い
2022/07/16(土) 14:26:32.89ID:8q6Z2qLZ
怠けるな。手順書に従った作業しろ
2022/07/16(土) 17:21:28.47ID:LjSwLqlL
基本的に、Dockerfileを保持する方向でいいと思うけど、
Dockerfileの書いた内容が恒久的に使えなくなる可能性がありえるので、
少なくとも自分のレジストリを用意して、イメージのバージョンを保持するとか、
tarballなりraw imageなりに吐き出しておくといいと思うけどね

ここらへんのイメージのバックアップは、VMwareとかKVMとかでも結局同じだけどな
732login:Penguin
垢版 |
2022/07/16(土) 23:09:47.83ID:Drz+sQG1
>>731
たしかに、dockerfileだと、レポジトリの廃止や、そのディストリビューションのサポート切れで、
インストール手順が無効になる場合もあるよな
2022/07/16(土) 23:47:02.68ID:IVvX0kjb
Dockerfileでビルドしたイメージをデプロイする際にはまずECR等のレジストリにプッシュし、
デプロイ先のホストがそれをプルするのが一般的なプラクティスであり、イメージのバックアップとして機能する
つべこべ言わずにDockerfileを書け
2022/07/17(日) 01:05:09.83ID:jLqEDSXh
サポート切れても無理矢理使えるようにするためにイメージのバックアップ取るなんてセキュリティ的にあり得ない
その時点でサポートされているものに対応し続けるしかない
735login:Penguin
垢版 |
2022/07/17(日) 09:02:26.56ID:6rKwmfE+
>>733
それは結局のところ、置き場所はともかくイメージは使うということですよね
Dockerfileとイメージの役割は別。
Dockerfileの役割はコンテナのメンテナンスのためにある。
イメージはソースがネットから取れなくなるなど、Dockerfileの改良ではどうにもならない場合にへの対処方法だと思う。
commitはそれをローカルに置いておくために使う。
2022/07/17(日) 09:22:28.89ID:wl85O7GK
Dockerfileだったらbuildするだけでローカルにイメージはできるだろ?
commitなんか必要ない
737login:Penguin
垢版 |
2022/07/17(日) 10:00:11.33ID:lGp37g/e
dockerでシステム壊れちゃったから諦めた
2022/07/18(月) 12:36:24.93ID:oFmQRFjW
>>734
なぜありえないのか?
顧客がつねにお金を出してくれるのか?
顧客がお金を出さない場合は、古いイメージのまま、使い続けることになる
2022/07/18(月) 18:50:58.72ID:5grstZfi
古いイメージ=脆弱性があるシステム
システムを更新しないで放置してはいけない
2022/07/18(月) 19:13:24.41ID:E6KhgG4/
顧客が金出さないから云々って状況がよく分からん
システム構築とかの仕事を請け負ってその後の無償対応期間ぐらいの期間であれば、作業時に使ったイメージがサポート切れになるほどの時間は経っていないだろうし
それ以降は顧客が金出さない以上何言ってきても無視するだけの話ダロウェイ
2022/07/18(月) 19:14:02.40ID:E6KhgG4/
末尾変になったけど無視して
2022/07/18(月) 21:43:50.26ID:xwfMzGl6
>>740
ユニケージっていうのは現場の人間が内製するためのシステムなんだよ
例えば東急ハンズのような所にプログラミングの専門家はいない
システムなんてせいぜいCGIで作った買い物カートで十分
そういった所にシステム開発費とかないから一度作ったら何年も放置するのはざら
データベースとか難しい技術はしらないし、OSのアップデートとかシステムが動かなくなったら困る

シェルスクリプトでシステムを作っていればコピーするだけでOSのアップデートは完了
OSの基本的なコマンドしか使わないから、OSをアップデートしてもそのまま動く
パイプの匠が考えた開発手法は大規模システムにも対応している
人の入れ替わりの激しい業界で、現場のやすい人材だけで内製するにはこの方法しかない
2022/07/19(火) 08:43:28.67ID:cr5I5gt1
客が金出さずサポート切れの古いイメージ使い続けて脆弱性突かれて情報流出しようがこっちには関係ないんだからどうでもいいでしょ
744login:Penguin
垢版 |
2022/07/19(火) 09:29:24.46ID:B9BrngT3
>>735
考え方が硬すぎる
そうなりゃ別の方法、別のイメージでイメージ作ればいいやん
745login:Penguin
垢版 |
2022/07/19(火) 09:31:57.67ID:B9BrngT3
commit(笑)
746login:Penguin
垢版 |
2022/07/19(火) 10:16:50.53ID:Hlz2pdY/
>>744
別のディストリを使うとなると、構築のために試す必要がでてくる。
時間かかる。
逆になぜそこまでイメージを嫌うのか。
2022/07/19(火) 13:06:36.07ID:1i77nEK4
いつまでも塩漬けにすることの問題は別にして、最低限、運用中のものについてイメージを残しておくのは必須だろう
スケールアウトや再デプロイの度にいちいちビルドしてたらクソ遅いし、パッケージの更新等でビルドが失敗するようになったときに修正までの時間を稼ぐ必要がある
そのこととcommitの是非は全くの別問題だ
2022/07/19(火) 17:25:54.04ID:dZACW0T8
バックアップなら、commitよりも、exportのがええんちゃう?
749login:Penguin
垢版 |
2022/07/19(火) 22:10:51.89ID:Hlz2pdY/
イメージが大事だとして、
どうしてcommitでイメージを生成させたら駄目だと思うのか?
2022/07/19(火) 22:41:54.99ID:eLGfXh/b
自動化できねーからだろ
アホ化w
2022/07/20(水) 00:40:19.93ID:HJwfM5+3
まずdockerの各コマンドが何をやっているのか正確に理解することからだ
752login:Penguin
垢版 |
2022/07/20(水) 06:25:39.70ID:+nizZvvp
>>750
自動化ってなにを?
753login:Penguin
垢版 |
2022/07/20(水) 09:16:41.14ID:FRbRBwj9
>>746
そうやって技術的負債が増えてくんだよ^^
754login:Penguin
垢版 |
2022/07/20(水) 09:17:08.28ID:FRbRBwj9
デプロイのためのイメージとベースイメージごっちゃになってね?
2022/07/20(水) 12:38:25.80ID:j9T/veZ/
docker commit の話がなんでimageの話に化けているんだよ。
image使うにしても、まずdockerfileにまとめろよ。dockerfile無しでimageだけとか、Dockerの利点捨てているだろ。
2022/07/20(水) 21:00:36.83ID:clOkjYBA
Dockerイメージはnixで生成するのがさいつよだろ

Dockerfileでapt使ったりしたら
aptはロックファイルも無いから
「Dockerイメージをビルドした時点での最新版パッケージ」になってしまう
aptの部分だけ別Dockerfileにするとかは面倒くさいし

nixなら同じソースファイル使えば同じバイナリになる
既存パッケージを使うだけなら、再現性もたせるためだけに別々にビルドする必要はなくなる

再現性のあるビルド - Wikipedia
https://ja.wikipedia.org/wiki/%E5%86%8D%E7%8F%BE%E6%80%A7%E3%81%AE%E3%81%82%E3%82%8B%E3%83%93%E3%83%AB%E3%83%89
2022/07/20(水) 21:13:38.08ID:GnxXvvFU
>>756
とんだにわかだ
apt も dnf もバージョンを指定してインストールできる
そしてそれが必ずしも正義ではない
互換性がある範囲で脆弱性やバグを修正した新しいバージョンを使おうする方法論もある
そもそも、基本的にはイメージを再利用し再現性を保証するのが一般的な考えでDockerfileで完全な再現性を求める運用には無理がある
758login:Penguin
垢版 |
2022/07/20(水) 23:37:23.59ID:OlwSaSGg
なんとか頑張って「俺はお前らの知らない凄いことを知っている」
と言いたい人
759login:Penguin
垢版 |
2022/07/21(木) 08:29:48.53ID:Bsj4t+WP
>>755
アスペ?
2022/07/21(木) 08:36:36.40ID:Qe7sC2ib
>>759
ん?なら
「dockerfile無しでcommitで構築したimageを運用するやつはアスペ」
ということでOK?

>>723が結論だと思うが。
761login:Penguin
垢版 |
2022/07/21(木) 08:37:06.92ID:Bsj4t+WP
>>760
?俺もそう思うが
762login:Penguin
垢版 |
2022/07/21(木) 08:37:29.32ID:Bsj4t+WP
なんだこいつ…
763login:Penguin
垢版 |
2022/07/21(木) 08:47:07.79ID:auevoZLN
「なにいってんだこいつ」と感じた時点でそいつは貴方に取っての変なおじさん
変なおじさんは真面目にかまうとうれション垂れ流しが加速します
2022/07/21(木) 09:23:46.51ID:GsFTK4Qs
>>757
大体aptが悪い

npmみたいな、package.jsonで緩いバージョン指定して
package-lock.jsonで厳密なバージョン指定、みたいな仕組みでもあれば便利なのに

現状は完全にバージョン固定、再現するには
apt-getコマンドで依存するパッケージも含めて「手動で」全部バージョン指定が必要でかなり無理がある

2022年にもなってビルドしたイメージ保存しないと完全再現できない時点で
aptは欠陥設計と思われ
2022/07/21(木) 10:27:09.89ID:vlVE8xx2
まぁ、せいぜい好きに使えばいいよw
2022/07/21(木) 10:42:17.46ID:TUoQzrYx
>>764
有意義ではないが自動化できないこともないはず
一度インストールしたあとパッケージの一覧を抽出してそれをDockerfileにインストールさせるよう書けばいい
シェルスクリプトかなにか使えば自動化できると思うよ
繰り返しだけど一般的ではないし脆弱性やバグ修正のためのアップデートに非常に脆い
2022/07/21(木) 21:51:41.49ID:WRyX2qON
すいません、超基本的な質問をさせてください。
最終的にクラウド上のDockerコンテナで動くプログラムを作りたいのですが、開発のやり方としてはローカル(自分の場合はWSL2を利用)にDocker Desktopを入れて、そこでコンテナを作成して開発することになると思います。
その場合、ソースコードの作成、編集は、VSCodeでコンテナ内のソースを編集すれば良い・・・という理解でよいでしょうか。
あるいは、コンテナなしの環境で作成したソースを、ローカルのコンテナにコピーして動作を確認し、さらに本番環境にデプロイする・・・という流れになるのでしょうか。
2022/07/21(木) 22:36:00.46ID:il8L9WXD
後者のほうが一般的
ぶっちゃけ好みの問題でしかなくて、コンテナで開発する派がよく議論に持ち出す環境統一論はほぼ詭弁だから真に受けちゃダメ
コンテナ内で開発したからといって開発に使ったのと同じコンテナで運用環境に持っていくわけではないからな
2022/07/21(木) 23:02:53.72ID:WRyX2qON
>>768
ありがとうございます!
なるほど。

このへんについて 解説本を見ても書かれていないし、検索してもなかなか見つけることができず悩んでいました。
助かりました。
2022/07/22(金) 04:04:09.02ID:If5VeNsz
コンテナ内のソースを編集したって、じゃあテストツールを動かしたり
のソースコードの静的チェックとかするのはどうするのよ?という話になる。
そうするとコンテナの中に開発ツールをバンバン入れることになる。

開発ツールをバンバン入れたコンテナを運用環境に持っていくわけない
動かすのに必要ないのに開発ツールに脆弱性とかあったらどうするんだ
運用環境用のコンテナは、プログラムが動く最低限の環境のものを作る

いずれにしろ開発環境は運用環境とは別なんだからどこで開発しようが関係ない。
コンテナの中に開発環境を作るのは面倒
開発環境ぐらい自分の好きにさせろ
771login:Penguin
垢版 |
2022/07/22(金) 04:34:33.65ID:fxFwWR2P
開発時はボリューム(バインドマウント)使え
2022/07/22(金) 23:17:31.01ID:fQ/P2OdR
>>770
ありがとうございます!
参考になります。
2022/07/22(金) 23:18:01.91ID:fQ/P2OdR
>>771
了解です。
774login:Penguin
垢版 |
2022/08/07(日) 14:06:03.02ID:b3XYsEGr
どっから始めればいいのか ナンツッテ
2022/08/07(日) 16:17:18.04ID:nwnr5HpC
どっからでも始めればよいです
2022/08/07(日) 17:32:25.99ID:eySkdpIh
初心者な質問ですみません。
DockerFile を使わずに、docker compose だけで python の環境を作りたいのですが、どう書けばいいでしょうか。
教えて下さい。
777login:Penguin
垢版 |
2022/08/08(月) 11:42:40.69ID:v6ZoXeRi
>>776
docker compose use python@3 でできるよ
2022/08/13(土) 01:29:20.68ID:odrCYI7w
docker run で--net networknameを指定したコンテナがあります。
内部的に自動でIPv4アドレスが割当てられました。

後から、このコンテナのIPv4アドレスを変更するにはどうすればよいでしょうか。

コンテナをstopしてから、
docker network connect --ip 新IPv4アドレス networkname コンテナ名
を実行し、再びstartしたのですが、IPv4アドレスは以前のままでした。
779login:Penguin
垢版 |
2022/08/13(土) 01:44:33.61ID:odrCYI7w
>>778
自己解決しました。

docker network disconnectしてから
docker network connect --ip 新IPv4アドレス networkname コンテナ名
する必要が有りました。

変更できました。
780login:Penguin
垢版 |
2022/08/18(木) 18:36:47.96ID:03kQuBxt
docker ps -a でコンテナ一覧が見られますが、
コンテナ数が多くなるとごちゃごちゃしてきます。
関連するコンテナをフォルダみたいにまとめて表示できるといいと思うんですが、
そういう機能ってありますか。
781login:Penguin
垢版 |
2022/08/19(金) 08:25:22.38ID:nGXf5LNw
別にいらないな。
というかその使い方あんまりだと思うけど。
2022/08/19(金) 09:42:09.15ID:JQBXRvrJ
いっぱい立てるならだいたいcomposeとかで見るしなぁ
2022/08/20(土) 10:12:59.13ID:UXdDDjoG
もう嫌になる
2022/08/20(土) 11:30:01.09ID:EJGm5ciw
嫌なら、止めたらエエのに
2022/08/21(日) 12:24:13.47ID:eSGM27+S
Dockerたまにしか使わないから詳細すぐに忘れる
その度に学習し直すから効率が悪い
786login:Penguin
垢版 |
2022/08/22(月) 09:44:16.49ID:8QKl+LiH
>>785
仕組みが変わってないのに学習とは?
一度使えるようにしたら覚えることないじゃん。
2022/08/22(月) 10:14:24.65ID:k2ZZTvgW
忘れるって書いてあるのに謎のツッコミ
2022/08/22(月) 10:20:21.79ID:HXgCPnKH
しかも問題はDockerそのものではなく785の記憶力や情報管理能力と言う
2022/08/22(月) 12:26:40.31ID:5QQpro3i
Ctrl-Rによる逆逐次検索で、履歴を遡れるし、忘れてもいつでも思い出せると思うけどな
2022/08/22(月) 12:30:02.10ID:eRYZ9Gh8
知らんけどそう言う発想すら無くて、他の人にその都度書かせたいかまってちゃんでは
2022/08/22(月) 15:05:21.18ID:PPn0Ft16
コマンドライン履歴なんか、一月二月もたてばなくなる。
2022/08/22(月) 15:11:24.06ID:ctYtGvs9
ほらやっぱり「ポックンにいい感じの情報整理おしえてよう」ってなかまってちゃんだ
docker全然関係ないし
793login:Penguin
垢版 |
2022/10/06(木) 07:31:18.13ID:qQofrB2b
CentOS 7のイメージから作成したコンテナなのですが、
/tmpの内容っていつ削除したらよいでしょうか。
docker stop/start containerはしますが、tmpの内容はクリアされないようです。
定期的に削除しても問題ないでしょうか。
2022/10/06(木) 10:11:26.04ID:R94dguKO
docker kill / docker run --rmでいい
それで問題になるようならコンテナの使い方が間違っている
795login:Penguin
垢版 |
2022/10/06(木) 14:24:10.80ID:qQofrB2b
>>794

docker stop/start containerでなくて、
その都度、コンテナを再生成せよということでしょうか。
2022/10/06(木) 16:05:09.55ID:Tt6+G4QW
回答としては
再起動じゃtmpに限らずクリアされない
定期的に削除しても問題ない
■ このスレッドは過去ログ倉庫に格納されています

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