探検


Docker Part4

レス数が950を超えています。1000を超えると書き込みができなくなります。
2020/08/17(月) 00:19:36.93ID:PKLBL3Xf
Linuxが持つコンテナ技術を使った、仮想マシン必要ないアプリケーション仮想化技術で
アプリケーションのデプロイが用意になります

Docker(アプリ仮想化)は仮想マシンと併用して使うことで最も効果を発揮し
開発・テストで使ったDockerイメージと全く同じものを本番環境で使えます
さらにWindowsとmacOSでも同じDockerイメージが動きます。
(Linuxは仮想マシンが不要ですが、WindowsとmacOSは仮想マシン技術を併用して実現しています。)

Dockerイメージ(Dockerfile)はアプリケーション開発者が作成します
動かすのに必要なもの全てがDockerイメージに含まれるので
インフラ担当者はそれを動かすだけ、本来のインフラの作業に集中できるようになります

Dockerは主にウェブ業界でサービスのデプロイの必須技術になりました
情報共有しましょう

http://www.docker.io/

前スレ
Docker Part3
https://mao.5ch.net/test/read.cgi/linux/1552023620/


注意 同じコンテナ技術を使うが異なるアプローチで仮想マシンの
代替を目指しているのがLXC。目的が全く異なるので注意
LXC(Linux Containers)
https://mao.5ch.net/test/read.cgi/linux/1330826939/
2020/11/12(木) 22:10:04.02ID:e1or7GM2
また、仮想マシン厨が出てきたw

Docker, Kubernetes は、immutable だから、状態を持ってはいけない。
サイボウズのkintone なんか毎日、破棄して作ってる

Heroku 相当のPaaS、AWS Elastic Beanstalk のRuby, Docker などの基本。
OOM killer も、k8s の基本

そもそも、k8sのetcd は、OS の/etc の事
856login:Penguin
垢版 |
2020/11/12(木) 22:30:36.91ID:v1fNQw7L
>>854
oom killerせず、スワップも貧弱なら、
oom-kill-disableすれば、「盾と鉾」の話になりそうですね。

いろいろと興味深いオプションありますね。
857login:Penguin
垢版 |
2020/11/13(金) 00:20:34.77ID:QYcW1wHt
>>855
OOM killer も、k8s の基本 って
どういうことだろう?
2020/11/13(金) 00:53:23.87ID:hfd1VDyW
OOM killer を無効にしてメモリが足りなくなったら
メモリが足りなくなったプロセスが落ちるだけの話
一般的には今まさに動いてるプロセスになるだろう
859855
垢版 |
2020/11/13(金) 01:07:01.48ID:11LMJbR5
k8s のLimitRange で、各Pod のCPU, メモリの使用量を制限すると、
PodがOOM killed される

それで、Pod数が足りなくなるから、また再作成されて、また終了させられる
860855
垢版 |
2020/11/13(金) 01:13:15.53ID:11LMJbR5
だから、仮想マシン厨がやってる事は、
OS の機能を、コンテナ内でやろうとしているだけの話

Docker, Kubernetes、
Heroku 相当のPaaS、AWS Elastic Beanstalk などに書いてある
2020/11/13(金) 01:14:25.55ID:h9qpOhxr
まーた知ってる単語を並べた君かぁ...
2020/11/13(金) 01:16:40.09ID:tBgNXNfN
OOM killerに殺されて転生したらPodでした
863login:Penguin
垢版 |
2020/11/13(金) 08:42:49.39ID:ZDuvPuUP
全て一つのマシンに配置する事も
データベースだけ別のマシンにする事も自由自在なのがコンテナの良いところ
2020/11/13(金) 19:48:18.74ID:PqmnqAl7
K8S使うまでもないんやけどコンテナで運用したいんやがどこのサービスがええのん?
865login:Penguin
垢版 |
2020/11/13(金) 20:45:48.47ID:D3CVFpPL
>>864
一台しか使わないならdocker-composeでもよくね?

それともマネージドサービスが使いたい?
ならコントローラーが無料のサービスを選ぶとよい

Amazon ECSは無料
Azure Kubernetes Serviceも無料らしい
Google Kubernetes EngineはZonal Clusterなら一つは無料らしい
2020/11/13(金) 20:59:39.66ID:fCUG99+M
dockerコンテナ一つで終わるなら、dockerをデーモンで起動すればいいし
複数のコンテナが必要なら、docker-composeだろうな
867855
垢版 |
2020/11/13(金) 23:26:16.23ID:11LMJbR5
当然、Heroku 相当のPaaS、AWS Elastic Beanstalk

Docker, Ruby もある
2020/11/14(土) 09:17:26.51ID:ft2LGGjD
Fargateがベスト
K8Sなんて大げさなものは超大規模システムでしかメリットがない
アプリをお手軽にパッケージングしてお手軽にデプロイする基盤がほしい
でもDockerホストは管理したくない
大半のユーザーが求めてるモノはそれだけだ
2020/11/14(土) 09:41:10.29ID:UXNOc8pC
監視と通知ができる軽量なダッシュボードがほしい
870login:Penguin
垢版 |
2020/11/14(土) 10:37:20.76ID:wWPmvFxr
自分でオーケストレーターをインストールするのか?

k3sなら単一ノード構成でも使えるしセットアップも比較的楽
より機能の少ない物ならNomad, Docker Swarm等もあるが
使いやすいかは知らん

HerokuもDocker使えるから
自分でオーケストレーターの管理したくないならありかも
2020/11/14(土) 12:04:55.78ID:sDLHDIUi
Herokuはvolume使えないんだろ
クソじゃん
2020/11/14(土) 12:13:25.36ID:r6FG8kYB
古いプログラムソースのファイルアクセスをクラウドストレージアクセスに書き換えるのがめんどくさい
なんかファイルIOをフックしてクラウドに転送する魔法ないの?
2020/11/14(土) 12:26:43.45ID:bVnWs0Ha
>>872
クラウドストレージが何を指してるのか分からないけど
単にホストがストレージをマウントしてDockerのvolumeか
mountで逃がせば良いんじゃね?
2020/11/14(土) 13:02:39.61ID:sDLHDIUi
>>873
ホストに依存したくない
コンテナの中だけで解決できないか
2020/11/14(土) 13:10:46.45ID:UXNOc8pC
コンテナにrcloneでも入れればいい
個人的にはそういうものはホストに入れるけど
2020/11/14(土) 16:08:08.85ID:o4LfVWyx
dockerでボリュームマウントするとroot権限でしか編集できなくなるので面倒なのですが
podmanならこの問題が解決されてますか?
877login:Penguin
垢版 |
2020/11/14(土) 16:09:24.03ID:wWPmvFxr
goofysやs3fsを特権コンテナ内で動かすとか?

https://stackoverflow.com/questions/53631567/share-a-fuse-fs-mounted-inside-a-docker-container-through-volumes


https://hub.docker.com/r/ecardoso/s3fs-nfs
https://github.com/cloudposse/goofys

あるいはnfs clientを特権コンテナ内でとか
https://hub.docker.com/r/d3fk/nfs-client/
2020/11/14(土) 17:14:54.47ID:njsItriu
podmanはそんな事しないと解決できませんか?
879login:Penguin
垢版 |
2020/11/14(土) 17:58:55.52ID:wWPmvFxr
それはまた別な問題だろ

UID、GIDをホスト側とコンテナで合わせておくか
コンテナのentrypointでボリューム内のディレクトリやファイルのUID、GIDをユーザーに設定すれば良い
そうすればroot要らない
2020/11/14(土) 18:03:00.34ID:a01QkNVP
>>876
podmanの実行ユーザーのuid gidになるよ
dockerはオワコン
881login:Penguin
垢版 |
2020/11/14(土) 18:27:23.02ID:wWPmvFxr
>>880
勝手にホストのファイルのUIDが変わったらホラーだろ
ありえねー
2020/11/14(土) 18:50:25.55ID:a01QkNVP
dockerは勝手にrootで作っちゃうからやべーのなんの
2020/11/14(土) 19:28:42.25ID:P4xkE0Yn
自分でrootにしてるだけでは?
884login:Penguin
垢版 |
2020/11/14(土) 21:15:48.46ID:1GvF1s+0
名前付きボリュームはDockerfile内にVOLUMEで指定がなければrootになる

https://github.com/docker/compose/issues/3270#issuecomment-543603959

でもディレクトリがrootでもパーミッションがworld-writableなら
書き込みはできるんじゃね?

バインドマウントはホストのUID、GIDがそのまま使われる
885855
垢版 |
2020/11/14(土) 23:30:12.14ID:5qE5ecjW
AWS Fargate は、Elastic Beanstalk(PaaS)のAuto Scale までも、全自動にする奴。
企業向けの究極

確かに、first choice に、Fargateを勧めている。
昔は、Elastic Beanstalkだった

AWSの動画を見ると、
Lambda, コンテナ、仮想OS の並び順で、
コンテナを仮想OS のように勘違いする人が多いけど、
あくまでもコンテナは、Lambda・仮想OSの中間だと言ってる

Elastic Beanstalkの図を見ると、
以下のようなOSの機能は、コンテナ外にあって、Amazonが提供している

ロードバランサー・Auto Scale
SNS による通知、CloudWatch による監視・アラーム
Aurora などのデータベース

仮想マシン厨は、これらをすべてコンテナ内に実装しようとしている
2020/11/14(土) 23:39:25.75ID:KDV9YoJe
壊れたラジオくん...
887855
垢版 |
2020/11/15(日) 00:05:06.42ID:B8hWXGqX
ユーザーを、docker group に入れるのだろう。
k8s には、Namespace, Role もある

Docker の欠点は、IP・Port(NAT・ポートマッピング)でアクセスするので、
ポート80などが1つのサービスに対応付けられてしまう

k8sでは各Pod に、IPが割り当てられるので、
NAT無しで、異なるNode(ホスト)上のPod間通信もできる
2020/11/15(日) 00:28:50.42ID:5a//Qgwv
ルーティングするだけでは?
2020/11/15(日) 00:34:39.32ID:5a//Qgwv
関数で実装できるならコンテナもいらねえ
クラウドなら関数、でないならコンテナ、永続層はマネージドって感じか
関数とコンテナを意識せず透過的に扱えるプラットフォームが普及したら、コンテナもオワコン
890login:Penguin
垢版 |
2020/11/15(日) 09:50:30.99ID:1u6kpdDF
>>887
ECSならELBに登録するのが一般的な設計パターン
ロードバランサーが必要になる代わりに、空きポートがランダムに割り当てされるので、衝突することが無い

awsvpcネットワークモードにすればタスク毎に独立したIPになるが、
EC2の場合は1つのタスク毎に仮想ネットワークインタフェースが必要

>>889

Fargateは

料金がEC2より少し高い
EBSボリュームは利用出来ない
特権が必要な設定は利用不可

などの制約があるので万能ではない

ロードバランサーの存在は結局意識する必要があるのも何かね
2020/11/15(日) 10:14:18.12ID:5a//Qgwv
何れにせよロードバランサは使うので問題ない
ECSより無駄がないし管理コストを考えたら安い
特権は別に要らんかな
永続化はマネージドに逃がすからボリュームもイラネ

Fargateが最強
Fargateならcomposeも使えるのがイイね
2020/11/16(月) 20:07:10.13ID:eJ5ArXBp
運用まで真面目に考えるとdockerもそんなに便利なもんじゃないね
アプリ開発〜デプロイは楽になるんだろうけど
それって全体の2割にも満たないだろう
2020/11/16(月) 23:05:36.36ID:AmcnZ0mu
全体の2割が解決すれば十分じゃん
アホなの?

なんつーか、ハンマーで木を切断できなければ
便利なもんじゃないって言ってるみたいだw
2020/11/16(月) 23:20:04.99ID:1Kp8LRiI
問題は2割を多少楽にするために余計な厄介事まで持ち込んでくること
2020/11/17(火) 00:24:09.16ID:FVso5f4r
全体の2割を解決するために5割の新しい問題を持ち込んでるのが実感。
2020/11/17(火) 00:24:47.94ID:VJE08jF1
厄介事じゃなくて、技術力ないやつが切り捨てられること
が正解だろ?厄介事なんてないよ
2020/11/17(火) 02:14:12.99ID:5f2SAbUx
クラウドリソースを使わせたいベンダの戦略にまんまと載せられてる
今更選択肢間違いでしたとも言い出せないから苦しいなと思いつつ使い続けるしかない
2020/11/17(火) 07:27:41.07ID:9t/i4DaB
マジでそれ!
Dockerなんかどっか行っちまえ!
899login:Penguin
垢版 |
2020/11/17(火) 08:02:22.48ID:STEsW5O+
仮想マシン最強おじさんまた登場?
2020/11/17(火) 08:17:20.79ID:9Ei5md0D
くろかわこうへい、2019/7

今から追いつくDocker講座!AWS ECSとFargateで目指せコンテナマスター!〜シリーズ1回目〜
https://www.youtube.com/watch?v=DS5HBTMG1RI

彼は年明けから、会員制のAWS の初心者向け講座を始めるらしい。
彼は、Amazon の21万円のAWSの3日コースも受講したみたい
2020/11/17(火) 09:36:46.63ID:5f2SAbUx
k0sすげーな
2020/11/17(火) 10:05:51.44ID:FVso5f4r
>>900
投じた21万を広告収入で回収しようと必死やなw
903900
垢版 |
2020/11/17(火) 12:02:28.88ID:9Ei5md0D
くろかわのAWS 新講座のモニター受講生には、千人が殺到した。
1万円もらえるらしいけど

その中から5人と、スタッフ7人を選んだみたい

彼は日本の初心者に、クラウド革命を起こしそう!
2020/11/17(火) 12:04:11.94ID:tcBIO+Jk
>>900
ここで宣伝すんな。
2020/11/17(火) 12:05:57.03ID:tcBIO+Jk
とおもったら、 >>1 に宣伝もしくはそれに準ずる投稿を禁止と書かれていない…。
2020/11/17(火) 12:09:28.02ID:CrZhSRRf
ただの一般人の動画に金払うくらいならネットで十分だわ
2020/11/17(火) 12:18:44.00ID:tIZEuzT/
壊れたラジオくんは動画から拾ってきた単語を並べるだけのアレだったのか...
サロンの食い物にされててかわいそう
908login:Penguin
垢版 |
2020/11/17(火) 20:43:47.40ID:yV1J8nTi
FargateはDockerイメージをキャッシュ出来ないっぽい
クソでかいイメージ動かす時は起動に時間かかるかも

ホストにDockerイメージがキャッシュされないので、
NATゲートウェイ経由でイメージをダウンロードすると起動のたびにコストがかかる
設定ミスしたECSサービスを放置することによるクラウド破産に注意

一応、ECRにイメージをミラーしてVPCエンドポイント経由で使う事で
課金を回避は可能

How we lost $800/mo with Amazon ECS Fargate - DEV
https://dev.to/raphael_jambalos/secret-costs-of-ecs-fargate-4j3b

↑は500MBのプルが2、3分おきにされる状態を1ヶ月放置して16TB分の料金を課金された人のお話
2020/11/18(水) 10:40:31.33ID:Bm1NXGPB
アマゾンのクラウド関係はベゾスにとって打ち出の小槌やな。
そらゲイツ抜いて世界一の金持ちにもなりますわ。
2020/11/18(水) 11:55:31.74ID:b8jhNawh
Amazon は不況の株高で、1年で5割ぐらい株価が上がっているのでは?

100兆円どころではなく、日本の総時価総額と同じ、500兆円ぐらいまで上がりそう
911login:Penguin
垢版 |
2020/11/20(金) 11:53:20.21ID:fsEJONHx
ファイル編集した後にイメージ消してから
Docker-composeでリビルドしてイメージ作ってコンテナ立ち上げても
ファイルの中身が古いまんまなんだけどどういうこっちゃ……
2020/11/20(金) 12:22:09.75ID:MgTqejIM
ボリュームマウントしてるとか
消したつもりで消してないとかだろ
913login:Penguin
垢版 |
2020/11/20(金) 14:24:06.14ID:Q2rPSER8
CIでビルドしろ
2020/11/20(金) 14:34:49.18ID:zvf3Mn4E
CIでビルドとか時間かかる
CIは最終結果を作るためにやるもので
普段使いするものではない
915login:Penguin
垢版 |
2020/11/21(土) 11:25:24.84ID:iIluC5iI
https://www.docker.com/blog/docker-compose-for-amazon-ecs-now-available/

docker-composeでEC2もデプロイすんの?
EC2のすべての機能が使えないLeaky Abstractionの悪寒
劣化版CloudFormation (Terraform)みたいになってるのでは?

このツールで出来ないカスタマイズがしたければTerraformとか使えってこと?
2020/11/21(土) 12:36:05.27ID:eJNGOpqc
Dockerはホストに依存しないからカスタマイズなんていらないんだよね
依存してるなら開発者のスキル不足
2020/11/21(土) 12:48:05.89ID:ri46Y8Ch
AWS CloudFormation なら、

Terraform, Packer,
Ruby 製のkumogata, chef, Cookpad 製のitamae
918login:Penguin
垢版 |
2020/11/21(土) 12:51:49.28ID:r6MRhX04
>>916
GPU付きインスタンスの例とか書いてるじゃん
919login:Penguin
垢版 |
2020/11/21(土) 13:07:49.78ID:r6MRhX04
VPCとかIAMロール、ALB、セキュリティグループの設定は流石にこれでは出来まい
スポットフリートも非対応っぽい

2つのツールを使い分けるぐらいなら
もう全部Terraformでよくね?
920login:Penguin
垢版 |
2020/11/21(土) 13:38:42.78ID:r6MRhX04
リンクされているAWSのブログを見たらIAMロールは新規で作れるようだ

ツールの目的は既存のdocker-composeを出来るだけ変更せずECSで動かすことらしい

既存クラスターやロールの利用も可能だがそれだと省力化の意味が薄れるな

ボリュームはEFSになるようだ
対応してないファイルシステムの機能が必要なくて
速度がEBSに劣るのを許容できれば使えると思う
2020/11/21(土) 14:17:58.88ID:rYlXZtS/
>>918
コンテナでやることじゃない
922login:Penguin
垢版 |
2020/11/21(土) 14:34:28.98ID:r6MRhX04
>>921
なんで?コンテナでデプロイするの便利じゃん
GPUで機械学習とかやりたい人居るだろ?
2020/11/21(土) 18:23:26.18ID:Ov/soKjL
>>922
デプロイ先を選ぶようなコンテナはコンテナでなくていい
924login:Penguin
垢版 |
2020/11/21(土) 20:19:58.88ID:k5nh8DAr
NVIDIA Container Toolkitを作ったNVIDIAが馬鹿だとでも?
925login:Penguin
垢版 |
2020/11/21(土) 22:40:20.34ID:8sqDrEBC
EC2一台で動かすようなシステムなんだけど、git pullでソースコードもdockerfile docker-composeも持ってきて、ソースコードマウントして動かして大丈夫?
セキュリティ的に問題あります?
2020/11/21(土) 22:44:27.20ID:K5G2wzvK
問題あるかもしれないしないかもしれない
パラメータとソースコードの内容次第
2020/11/21(土) 23:49:45.23ID:ri46Y8Ch
AWS CodePipeline(CodeCommit/CodeDeploy)
EC2 に、yum install -y ruby と書いてあるから、Ruby 製

CircleCI, Terraform → ECR
と同じ
928login:Penguin
垢版 |
2020/11/22(日) 09:02:47.36ID:/iuzjtl8
>>925
なんで最初からイメージに入れない?
2020/11/22(日) 09:36:59.16ID:AmuIfWsL
ディスク消費を抑えるため
930login:Penguin
垢版 |
2020/11/22(日) 09:44:36.86ID:dNRk6ldu
>>929
そんなことしても
面倒くさいだけで節約にならなくね
2020/11/22(日) 10:09:19.35ID:WMSNt4/7
ディスクは…レイヤーの掃除しなくていいかな?その程度の差だね
面倒くさくはないよ
この程度ならワンライナーsshできる
K8Sよりよっぽど楽だ
932login:Penguin
垢版 |
2020/11/22(日) 10:16:34.92ID:dNRk6ldu
定期的にdocker image pruneすれば良くね?
何日以内は残すとか指定も可能
2020/11/22(日) 10:23:46.05ID:WMSNt4/7
>>932
面倒
934login:Penguin
垢版 |
2020/11/22(日) 10:26:45.53ID:NckJREOd
>>928
開発中はマウントして作業してるので、そのままの構造で行きたいのと、masterにpushしてpullするだけのgitコマンドで完結するので楽かなぁと...
2020/11/22(日) 10:33:48.66ID:WMSNt4/7
>>934
それでいいよ
というかターゲットマシン決まってるならまじでDockerは要らない
不要な管理対象スタックが増えるだけ
どこで動かすかわからないならdockerのほうがいいけどな
936login:Penguin
垢版 |
2020/11/22(日) 10:37:02.27ID:NckJREOd
>>935
確かにそうですね
一応、本番機にはdocker入れるだけでPHPやらnodeやらは直接入れなくてビルドするだけでいいのでその辺は楽かなと思ってますが
937login:Penguin
垢版 |
2020/11/22(日) 19:05:08.47ID:0Bh8umtW
>>936
稼働中のPHPサーバーでgit pullとかcomposer installしたらエラーになりまくる
デプロイ中はサーバー停止が必要
そんなテキトーな管理でも怒られないようなサービスなら別に良いけど

それが嫌なら、ディレクトリ2つ作って入れ替えるデプロイツールとかが必要になるが
そこまでするぐらいなら、俺はマネージドのコンテナオーケストレーターとかDockerレジストリを使う
2020/11/22(日) 19:23:54.35ID:TnY6bxoo
>>925のやり方ならオーケストレーションもレジストリも要らないね
余計なものを持ち込まないことが成功の鍵
KISSの法則
YAGNIの法則
939login:Penguin
垢版 |
2020/11/22(日) 20:33:44.45ID:Z7p+Yx7s
趣味ならともかくまともなサービスならデプロイの度にダウンタイムは許されない
2020/11/22(日) 20:35:13.72ID:DKnhKTuQ
いや思ったよりぜんぜん許されるよ
2020/11/22(日) 20:35:44.72ID:DKnhKTuQ
銀行とかゲームとかしょっちゅうメンテナンスしてるだろ
942login:Penguin
垢版 |
2020/11/22(日) 20:38:52.83ID:Z7p+Yx7s
銀行とかゲーム以外は許されない
2020/11/22(日) 20:43:57.13ID:jTK+++qN
固定回線や携帯電話の回線交換機やパケット交換機がメンテナンスで停止する事あるんですか?
はい論破
2020/11/22(日) 20:47:40.48ID:WqAbGo5F
まともなシステムから「システムメンテナンスのお知らせ」的なメールがよく来るな
945login:Penguin
垢版 |
2020/11/22(日) 21:09:28.36ID:Z7p+Yx7s
じゃあ5ch今から止めていい?
946login:Penguin
垢版 |
2020/11/22(日) 21:57:19.08ID:9ayQRlBL
いいよ、ついでに荒れ放題のLinux板閉鎖で頼む
947927
垢版 |
2020/11/22(日) 23:30:52.54ID:NTWiSXfQ
>>927
に書いたように、

CodePipeline は、Ruby 製だから、EC2 に、Rubyが入る。
200MB ぐらい使うのでは?

サイズなど気にしていたら、キリがない
2020/11/23(月) 13:11:34.42ID:MH8hmERh
>>925
> EC2一台で動かすようなシステムなんだけど、git pullでソースコードもdockerfile docker-composeも持ってきて、ソースコードマウントして動かして大丈夫?

シェルスクリプトでも動かす気?
まあ
KISSの法則
YAGNIの法則
ならシェルスクリプトしかありえないけど

EC2に言語とかライブラリとか色々入れないと動かないなら
KISSの法則
YAGNIの法則
でDocker使うといいよ

Dockerだけ入れれば動くからね
2020/11/23(月) 14:33:44.42ID:7a9uciqT
>>948
正解
950login:Penguin
垢版 |
2020/11/23(月) 15:22:47.23ID:pTSDmk7r
毎回本番サーバーでソースコードの入ってるディレクトリをマウントしたり
npmのパッケージインストールしたり
ビルドしたりするなんてシンプルじゃない

AWSならECSとECR使えば良くね?
2020/11/23(月) 15:25:50.25ID:7a9uciqT
git pull && make

シンプルイズベスト
952login:Penguin
垢版 |
2020/11/23(月) 15:30:22.05ID:pTSDmk7r
ビルド後に再起動必要じゃね?
2020/11/23(月) 15:53:02.28ID:7a9uciqT
makeでやる
2020/11/23(月) 17:12:24.27ID:pNwn5ALs
M1対応まだかな
レス数が950を超えています。1000を超えると書き込みができなくなります。