Docker Part3
■ このスレッドは過去ログ倉庫に格納されています
>>10
cui使っている人のほうがこだわるでしょ。
同じことをするなら少ないリソースでやろうとするのが技術者じゃないの dockerについて勉強したいんだけどなんかおすすめのサイトとか本ある? >>13
https://knowledge.sakura.ad.jp/13265/
Qiitaはクソ記事多いから気をつけて。
↑で手を動かしたら公式を読むようにした方がいい Kubernetesって1GBのメモリじゃ動かない?
AWSのt3.microインスタンスで
nginx動かしたりしただけでフリーズした >>20
動かないんじゃないかな。
1年ぐらい前だけど調べた時に、1.7GB?ぐらいの
メモリを使用していた気がする。
あれから変わってるだろうし、記憶が曖昧だけど
Kubernetes使うのに躊躇するぐらいのメモリ使用量だった。
k3sならメモリ使用量少ないみたいね。 >>21
ありがと
2GBのインスタンスタイプに変えてから再起動して
nginxだけじゃなくダッシュボードも動かしたが
それで既に700MB近かった
ちょっと他のが入ったら1GBでは足りなくなりそうだった
素のk8sでは2GBは最低必要か
k3sは噂には聞いてるが試したことない
試してみるか docker初心者です
portainer越しに amd64/ubuntu:{18.04,18.10,19.04}動かしてみようと思ったのですが、Deployは成功し起動するのですが次の(WEBの)リロードのときにはexit 0でストップしている状態です。
officialが駄目なのかと思ったのでunofficialなoneimage/ubuntuなどを試しましたが駄目でした。
docker hubから落としたnginxやnextcloudなどは正常に動いています。
dockerの学習過程でdocker run などのCLI でもこころみているさいちゅうなのですが、あまり上手くいきません。
考えられる原因をお教えいただければ幸いです 追記:冒頭の日本語おかしくてスイマセン…あと今回使っているimageは全てdocker hubからpullしました echo Hello Docker!
ぐらいしか出力しない image で、
ローカルでもリモートでも、
確実にやろうと思っていることが動かすことができますか?
それから、本当に動いているのでしょうか?
何を根拠に正常と判断していますか?
1セグメント内でサーバー群の保守運用は十分にできますか?
また、何をやろうとしているかアレですが、
docker-compose でやったほうが整理できませんか?
もっと大規模なネットワークだったら、k8s とか mini k8s とか。
がんばってください! 自己解決しました
portainerのデプロイが駄目っぽいのでCLIでデプロイ後、管理をportainerに渡す構成でうまく行きました 初心者です。
データ分析ツールの宿題が出されたのですが、Docker上に環境構築するところからやらないといけないのですが、どのように構成させればいいかわかりません。
Docker上にはDWH(ポスグレ)、ETL(Python)、Datamart(ポスグレ)、Application(apache+php)をのせるような絵が書いてありました。
これを実行する環境を作るためには、databaseサーバとしてポスグレ、Applicationサーバとしてphpとpython、webサーバとしてapacheみたいな構造のdocker composeを設定すれば良いのでしょうか?
初歩的な質問で恐縮ですが、教えていただければ助かります。
youtubeやhpを見てもイマイチ、自分のやろうとしていることとの紐付けがわからなくて、みなさんにお聞きしようと思いました。
どうか、助けてください。 授業か演習の時間にdockerの動作サンプルは提供されなかったの?
もしされてないのなら教員かTAに提供を要請したら? >>27
まずは、それを1台のサーバ上で自力で構築できるかどうか。
それすらできないのであれば、docker-compose なんか、できっこない。 宿題は自分でやらないとだめだろう。
質問も適切であれば、教師が答えてくれるはず。 Dockerの中からホストos(PC)に繋がってるUSB機器は
使える
使うようにすることができる
使えるが困難な作業付
使えない
どれだろうか >>27
授業まともにこなしてないからだろ
レポート提出前にいきなり焦っても駄目
学生向けの課題にこれまでやってないことをいきなりやらせるはずない
その単位は来年取りましょう k8sって、masterとworkerを同じ仮想マシンにすると
負荷かけ過ぎた時にクラスタが操作不能になる?
仮想マシンを再起動しても保存されたデプロイメントとかの設定から
また同じコンテナが立ち上がって操作不能になる
シングルノードで開発はむずい dockerにwinxp入れて古いゲームできますか? Windows10Proでdocker動かして、windowsXPのコンテナを動かすんでしょ。 >>36
windowsをdockerで動かすだけでもドライバ周りが地獄。
ゲーム入れたコンテナも作れるが、セーブやコンフィグデータを外に逃がす必要があり、これも難易度高い。
VMwareなどのバーチャルマシンでやる方が格段に楽 dockerでvirtualbox動かしてwin載せたりするのか dockerってのはVMに対して何のメリットが在るのかサッパリ分からん。
海外のオープンソースソフトにはセットアップ面倒くさいやつは5G位の
ovaファイルとかドカンと置いているのがあって、DLさえすれば完全な
環境で動く奴が在るけど、何故それではなく、Dockerの方が良いのか
と言う説明は誰もしない。 >>45
Kernelをホストと共有するので、
余計なKernelのメモリ使用がない。
Kernelの起動終了を待たなくていいので、
起動終了が速い。 >>46
メモリなんて今時別に気にする必要ないだろ?
16Gも積んでれば4、5台上げても何てことは無い。 >>47
4-5台で済むわけないでしょ、
64コアとかのCPUが普通に売ってるんだから、
サーバーも20台30台統合することを想定している、
するとKernelのメモリが無視できなくなる dockerは軽量なだけでなく、配布の仕組みが標準化されていて
仮想マシンと言うより
どのLinuxでも動くパッケージマネージャーの代わりのように使える
docker pullしてくればすぐに起動して使える
自分のコード追加してdocker pushして再配布も簡単
特定の仮想マシン向け、例えばVirtualBoxにイメージ作ったら
その仮想マシンでしか動かないじゃん
カーネルを含めず
その上で動くソフトウェアだけを確実にどのLinuxにも持っていける仕組みがあれば
という問題をDockerが解決した 小さくて早いって言ったって、他への依存度が少ないほうが良いじゃん
と思ってVagrant使ってた。
試しにdocker使ってみて圧倒的な速さにdockerシフト。
まぁLinuxメインの人ってWindows上でも動かそうとか考えないしな。
ライブラリ、デーモン依存のところだけ解決できるコンテナはちょうどいい感じなんだよ。 >>45
そのメリットが理解できないのであれば、
それでいいんじゃない?
まぁ、せいぜいがんばってください! >>55
>>51見たいな回答が出来るなら、参考にもなるけど
この書込みじゃ何の役にもたたんな。
まぁ君自身理解できてないのだろうけど。
君が流行で使っても何も恥ずかしくは無いよw
>>48
20台も30台も作る前に普通何か工夫するだろ?
>>51
唯VMにしてOSのバージョンレベルで固めていれば
VM->開発機->検証機->本番機の全ての環境が
全く同一に作れるからね。
Dockerでおかしな作り方したら本番機ではパス違ったとかなるとダルい。 >>53
Vagrant使うくらいなら確かにdockerの方が良いね。 Dockerあればパッケージマネージャーの代わりになるから
パッケージマネージャー要らないじゃん!って事で
パッケージマネージャーを無くして
/usrとかのパスをリードオンリーにしたのがCoreOS
OSアップデートはOSイメージ丸ごと入れ替えで行うっぽい >>52
5Gなんて今時fullHDの動画ひとつでもそれ位在るだろ? >>60
分かったから、有意なレスできんなら黙ってろよw >>62
まあ良いよ、役立たず君。
君の好きなように役に立たないレス返したまえw >>58
こういった書込み見るとDockerてのはOSの仮想化技術じゃなくてアプリケーションの仮想化技術やな。
軽量コンテナとか分かりにくい単語使ってくるから、イメージしづらいわ。
そらOSの仮想化と比べて早いのは当然。 >>45
にたようなことを思ってたけど
前スレでdockerを分かりやすく説明してくれた人がいて、VMとは、根本的に違うと理解した >>65
一応読んだけど59〜とかその辺?
それなら知っている(だからアプリの仮想化やなと言っている)
で、それがVMに対してどのようなメリットが在るのかは相変わらず分からん。
(早いとか軽いとかそういった当たり前のメリットではなく、開発でVMを使う事はそれなりに
意味の在ることであり、それを凌駕するメリットには見えない) 個人レベルの利用でVMの代わりとして使うメリットなんてほとんどない >>66
確かにWindowsホスト混在の集団での開発環境だとわかる または技術者の習熟レベルの差によってもvmのほうが扱いやすいだろうな
ネットワーク速度と帯域消費とその他資源が無限な場合はvmに理があるだろう VagrantBoxはphpとかJavaとかgoとかmysqlとかpostgresql
最初から入ってるの無くね?
Vagrantfileで自分で書く?
面倒くさいし全パッケージのバージョン固定は難しい
イメージの配布も('A`)マンドクセ
AWSはnested virtualizationも無いらしいし
VirtualBoxで作ったら高価なベアメタルインスタンス使うしかなくなるな Docker使ってたらLinuxディストリ
別に何でもよくね?
コンテナさえ動けば良いんだから
好きなの使えば良い dockerは依存関係調べるのに手っ取り早くていい
Ubuntu minimalをrunさせればviすら入っていないプレーンなかんきょうですぐテストできる。メモリも食わない。アプリケーションのテストサーバとかいいよ。本番環境はまた別だけど。 GoogleがKubernetesでバリバリ使ってるだろう? >>71
本番でも、そのままdockerコンテナを運用すればええやん! 逆に本番をDockerライクなシステムで運用しないとローカルをDockerで作る意味が無い。
本番がVMだと二度手間になる。
(開発機作るDockerfileを作った後に本番機を手作業で構築するとか) ステートレスなアプリケーションを素早くスケールしたい場合にコンテナが有利、そんだけや >>76
このメリットでDocker使う、と言うのならDockerは大規模サービス特化型では?
ヤフオクだアマゾンだと超大規模なサービス運用したいと思うなら、そら動的にさっさと
スケールしてくれなきゃ困る。
が、それでVM技術全部を置き換えようぜ、と言われると無理が在る
ESXiであれHyper-Vであれ学習コストがほぼゼロのOS仮想化技術を
学習コストが低くは無い(そして汎用的でもない)
Dockerでと言われると、何でそんな必要が在るの?
と言う素朴な疑問が消えない。
スケールアウトは(OSごとスケールされるけど)VMにも在るからね。 DockerをネタにVM不要論を唱えてる奴はDockerを扱ったことが無いし理解もしてないだろ >>77
逆に小規模でvm運用だとデプロイ(vmイメージのインポート?)にサーバーサービスを選ばないか?
環境構築ツールとかアプリ単位のデプロイはどうやっているの? >>80
デプロイ?
やり方は1物理鯖に1OSしか載らなかった大昔と全く変わらないのでは?
VMをインポートするとかではなくOSの中に入って作業をする。
デプロイ方法は中で動いているWEBアプリによって色々だろ。
FWがDeployer持っているならそれ使うし、もっと小規模なら改修したファイルをコピるだけとか。
設定ファイルのようなものインポートする形ならそうするし。
イントラネットでなくインターネット上のサービスならSCPとか。
VM使ったからといって1物理鯖に1OSをインストールして運用していた時代と手順が変わる事は無い。
そういった意味でもOSの仮想化は学習コストがとても低い。
初期の環境構築も手作業でrpmとかyumとかこれも変わらない。
但し1度作ってしまえば、VM複製して開発機→検証機→本番機に一気にコピる。
だから構築の手間自体は一回きり。
>>76のようなステートレスな鯖が例えば1AP鯖に対してフロントエンドに4Web鯖とか在ってバージョン
アップとか面倒臭いなと思えば1個マスタ作ってそれをVM複製するとか、そういった手段も出来るから
楽にはなった。
(昔は4WEBサーバあったら4回手作業でデプロイしていたので)
これをDockerに置き換えようと思えば、上記の説明を全部やり方変えないといけないから普通の企業
のシステム事業部には、なかなかそのメリットを納得させるのは難しい気がする。
OSの仮想化では無いから、コンテナの中にログインしても何が出来ると言う訳でもないので、その
意味でも面食らうし。 >>81
>手作業でrpmとかyumとかこれも変わらない。
但し1度作ってしまえば、VM複製して>開発機→検証機→本番機に一気にコピる。
だから構築の手間自体は一回きり。
環境更新するたびにそれとか原始的過ぎるだろ
環境増えたら更新メンテナンスが手間
記録も残らないし戻すのも面倒くさい
それとも一度作ったら二度と更新しないとでも言うのか サーバーをペットのように可愛がるな、いつでも替えの効く家畜として扱え
AWSにも仮想マシンイメージ(AMI)があるが
必要なソフトウェアは起動してからDockerレジストリからプルすれば
カスタムのイメージは作らなくても良い
サーバーが全くインターネットにアクセス出来ない環境なら
そのプライベートネットワーク内にレジストリのミラーを作成するか
Packerを使って、必要なDockerイメージをプルした状態でAMIを作成
サーバーをペットのように扱ってるとASGも使えないだろうが、サーバーダウンは全て人間の監視を付けて対応する気か…? >>82
>それとも一度作ったら二度と更新しないとでも言うのか
逆に訊きたいけど、じゃあ月イチとかそんな頻度でやるの?
環境更新といっているのがどのレベルなのか(例えばOSのバージョン上げるとか)
と言っているのなら、そんな頻度では当然やらない。
致命的なセキュリティホールでもない限りは経験的には5年に1回とかでは?
それなら別に面倒くさいとかは無いよ。
しかもじゃあ、Dockerならノーコストで出来るのかと言うとそうでもないし。 うちでは小規模な案件であれば、コンテナオーケストレーターにECSを利用している
EC2(仮想マシン)やECSのサービス(どんなコンテナを幾つ動かし続けるかの指定、docker-composeのサービスを拡張した感じ)はTerraform、CloudFormationで管理
これらが揃えば
公開するドメインなど、環境によって変えなければいけないものを除き
全く同一のソフトウェア構成で自動で構築できる >>83
>サーバーが全くインターネットにアクセス出来ない環境なら
>そのプライベートネットワーク内にレジストリのミラーを作成するか
>Packerを使って、必要なDockerイメージをプルした状態でAMIを作成
これはどう見ても余計な手間が増えている。 >>84
脆弱性なんて5年に一回どころかもっと高頻度で出ると思うが
脆弱性出ないからじゃなくて
一個ずつパッチ当てるの面倒だから更新してないだけだろう?
AWSならAMIを更新してASG内のインスタンスを入れ替えれば良い
更新で出る影響は完全にインフラがコード化されていれば、テスト環境でテスト出来る
コンテナとホストOSは基本的に隔離されているので
依存性による問題が出る事はほぼない
カーネルのバグによる影響は出ないとは言い切れないが、
安定版になる前にベータ版で発見される可能性は高い
コンテナだけの更新であれば
影響範囲が限定されるし
サイズがOSより小さいので
もっと高頻度でも可能 >>85
>コンテナオーケストレーターにECSを利用・・・
>>83
>Dockerレジストリからプルすれば・・・
こういうの見ると、日本でDockerが大々的に流行るのは無理と言う気がするね。
>>51 dockerは配布の仕組みが標準化されていて
>>76 Dockerのメリットは、素早くスケール
Dockerはインターネット上の標準化されたレジストリから配布を行いすばやくスケール可能なのがウリと、
が日本じゃ社員50人以下の会社が使うようなサービスはそもそもスケールの必要は無いし、
1万人超の大会社だと、お堅い会社の場合、そもそもクラウド上にアクセスする事自体を嫌うから。
ちょっと前にSalesforce売りに行ったら、ソッコーで「クラウド駄目」とか言われたわ。
大規模な会社じゃないとスケールアウト使う意味ないし、大規模な会社はクラウドを嫌う。
唯一使うとすればヤフオク、グリデナ、メルカリ、ピクシブ、とかインターネット系の大規模サービスやってる所位?
少なくともDockerを100%使い切る会社と言えば上記のようなものしかない。
後はまあ、好奇心旺盛な新興会社が使って自慢するとか、そんな感じ? >>87
そんなのお客さんと自社の状況しだいだろ?
セキュリティにうるさいお客さんなら月1回呼び出させてパッチあてやらされるし、そうでもなければ放置する
自社内のサービスなら売上げ上がっているなら、メンテはやる。
がこの話は「VM複製して>開発機→検証機→本番機に一気にコピる。」とは関係ない。
そもそも俺は、「環境更新するたびにそれ」なんて言ってない。
まあ、なんと言うか、「パッチ当てが楽になるからDocker導入しましょう」
といって「そうですね、そうしましょう!」と言う話になるかどうかは分からない。 >>88
サイボウズが1000台規模のKubernetesクラスターを自前で運用してたぞ
後はAWS Outpostみたいなのを自社サーバーで運用とか?
>>86
比較するなら
PackerかDockerかだろ
VMのイメージ作成やデプロイも手動でやっていたのでは話にならん
インターネットなしの環境でKubernetesを運用するとして
Packerを併用する場合でも
Kubernetesのバージョンアップだけ気にしていれば良いから
そこまで手間ではない
ビルドとAMI作成はCIでやる
Dockerイメージの作成もCIでやる >>90
>サイボウズが1000台規模のKubernetesクラスターを自前で運用してたぞ
これもオンプレで動くサイボウズの方じゃなくてクラウドのほうだろ?
クラウドサービスをDockerでクラスタなら分かる、軽量コンテナにうってつけだろうし。
>インターネットなしの環境でKubernetesを運用するとして
Dockerは本当にオンプレで完全に動くの?
それが出来るなら、企業のIT部門の人が勉強する意味は在ると思う。
それでも、そこに上げた名前分みても、やはり学習コストは高いと思うけど。
なんせVMwareESXiとか学習コスト殆どないし。 サイボウズはオンプレミスでKubernetesを運用している
1,000台規模のインフラ刷新! Kubernetesを採用したサイボウズが語る「NoOps」な未来 - エンジニアHub|若手Webエンジニアのキャリアを考える!
https://employment.en-japan.com/engineerhub/entry/2019/03/26/103000 でも北米のkintoneはAWSらしい
クラウドに行く企業、クラウドをやめる企業、それぞれの事情 - 週刊アスキー
https://weekly.ascii.jp/elem/000/000/418/418894/ >>92
ここでいう「オンプレで運用」は>>91でいう「Dockerは本当にオンプレで完全に動くの?」とは
意味が違うだろ?サイボウズが行っているのは単に自社のサービスを自社で運用しているといっているだけ。
91で訊いているのは、インターネットにアクセスせずに(アクセスすると偉い人に怒られるから)DevOpsを全部
導入できるのかと訊いている。見た感じ、頑張れば出来そうだけど。 インターネットアクセス禁止って行っても
Dockerのベースイメージはインターネットから取る必要あるよね
OSSのCIツールを導入するにも
Dockerのベースイメージはインターネットから取得する必要がある
そう考えるとCIサーバー自体にはインターネットアクセスは必要
向こうからのアクセスは無いので、NATゲートウェイ経由で
こちら側からだけアクセス可能にする
レジストリはCIサーバーと本番機のみがアクセス出来るプライベートサブネットに配置
そうすれば本番機にはインターネットアクセスを与えずに済む
Dockerレジストリのミラーを設定して
そこから取得するとしても
レジストリのミラーリングを行うサーバーにはNATゲートウェイ等で
インターネットアクセスが必要
それも駄目だったら逆に何処からソフトウェアを持ち込むんだ
USBメモリで人力ミラーリングか? イメージエクスポートしたらベースイメージも含まれてるのじゃないの?
そしたらそれを持ち込めば済むね >>97
そのやり方は普通にDockerfileを書くだけで可能なの?
そもそもDockerてのは、「ベースイメージの取得にインターネットが必要」
って事自体が保守的なIT部門の理解を得られん気がするね。
ゲストOSのインストールをするのにインターネットがほぼ必須、クラウド上にしか
イメージ置かないって言われたら「なんで?」と思うのが普通だわ。 connpassにあるコンテナ系の勉強会行って各現場の導入事例を聞いてみると吉 >>101
それ1つをとっても複数製品があり、やはり学習コストが低くはない
って点がどうしようもないね。
まあ、慣れだけど。 初期状態のosでnetwork隔離環境でimageのインポートしたら問題なく環境再現できた
>>98 >>83
>サーバーをペットのように扱ってるとASGも使えないだろうが、サーバーダウンは全て人間の監視を付けて対応する気か…?
今年の8月にAWSの大規模障害あったトキお前んトコは回避できた?
AWSをペットのように扱ってるだけちゃうん?
苦情があっても全てAWSのせいにして対応する気か…? みんな、マイクロサービスアーキテクチャ導入してますか? マイクロサービスって
2つのマイクロサービス間のデータのやり取りはどうする?
Dockerが解決するのはアプリのデプロイまで
マイクロソフト的には
分離性を高めるため
HTTPリクエストが来た時に別サービスへ同期的に取りに行くのではなく
バックグラウンドで予めデータを同期する方がお勧めらしい
が面倒そう
適当なことやると2つのサービスでデータの不整合が生じる ■ このスレッドは過去ログ倉庫に格納されています