Docker Part6
■ このスレッドは過去ログ倉庫に格納されています
>>1
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 Part5
https://mao.5ch.net/test/read.cgi/linux/1606903987/
注意 Dockerを仮想マシンの代替として使いたいと考えてる人は、DockerではなくLXCを使いましょう
LXC(Linux Containers)
https://mao.5ch.net/test/read.cgi/linux/1330826939/ docker&django&mysqlのハローワールドができない
dockerのdjangoチュートリアルがpostgresでそれは問題ないのにpython固有のmysql接続の問題とかで・・・ >>5
ども、M1macとdjangoとmysqlの相性が悪かったぽくて、諦めてpostgresにしました。 Ruby on Rails は、開発環境でSQLite。
本番環境では、PostgreSQL, MySQL, AWS Aurora とか
Django のシェアは無いから、おすすめしない
食べチョクみたいな、若い女の子が一人で起業したベンチャーは、Rails
食べチョク開発者ブログ
会社の支給PCがMacBook Pro M1なので、新しく開発環境を構築した話
https://tech.tabechoku.com/entry/2021/01/15/150103 >>7
何だその怪しい日本語は
ヤンキーゴーホームwwwwww ホストのlinuxカーネルを5.13系にしてみたら、デーモン起動時にSEGV起こして起動しなくなったのですが…(´;ω;`)
5.12系でブートし直すと、問題ない…(´・ω・`)
どなたか、同じのでハマってる方いませんか?(´・ω・`) >>10
ありがとうございます。
Dockerの方はDebianのパッケージ(sid)を使ってるので…。
カーネルは試しにこちらでビルドしたもので、5.12系をほぼ同じconfigでビルドした場合には問題出てなかったので…。
5.13系カーネル自体の設定をチューニングして再ビルドを重ねてますが、うまく行かない…結果しだいでは、どちらかにバグ報告をしないといけないような状況ですし、色々調べてDocker/Containerdの方もビルドしてみます。 【おちんぽ】伊藤忠テクノソリューション(CTC)ってどうよ?【挿入】
IWGP関東連合 椎木、 03-5210-8100
アクセンチュア 伊藤忠商事
ttps://www.dto.jp/shop/17
SEXしたいぞ、CTC
リーダー宣言 敗訴る 金融事業部
お前を部下にもらう前に 言っておきたいことがある
かなり厳しい話もするが 俺の本音を聞いておけ
俺より先に 来てはいけない
俺より先に 帰ってもいけない
飯は一緒に食え いつも身だしなみを整えろ
出来る範囲で構わないから
忘れてくれるな、仕事も出来ない俺に
お前を守れるはずなどないってこと
お前にはお前にしかできないこともあるから
それ以外は口出しせず黙って俺についてこい!!!!!!!! >>11 ですが、
昨日と言うか今日、リリースされた 5.13.3で問題が解消したようなので、ビルドして今実際に動かして挙動見ています。
ChangeLog-5.13.3 のこのあたり関連だと思います。
Author: Xie Yongji <xieyongji _at_ bytedance.com>
Date: Mon May 17 16:49:12 2021 +0800
Summery: drm/virtio: Fix double free on probe failure >>13
あ、リリースされたのは、Linuxカーネルの方ですm(_ _)m
念のために追記しておきますm(_ _)m 既存のコンテナにbashやaptをインストールしたいのですが、方法がわかりません。
やり方を教えてもらえないでしょうか。 >>17
中の設定を変更して動作を試すときに、コンテナ内にはshしか実行出来ないからです。 Debian ベースの Docker ベースで作っていく方が早いんじゃないかな とにかく実行ということなら、インストールパッケージからファイルを抽出して、docker cpでコピーしたら?
あとの管理は事実上ムリやけど。w 方法が分かりませんというのが分かりませんなw。
普通にコンテナ入ってやればいいじゃん。 いやあとからapt入れるのはそういえばやったことないな
ディレクトリ構成によっては手間掛かりそうだ イメージの提供者がaptやbashまで削ぎ落としてるってことなのかね それは言えてる 素直に Debian ベースでコンテナ自分で作った方が早いね >>25
まあDocker使うようになって初めてパッケージマネージャすらまともに使えない最小限のLinuxに触れた人は多いんじゃないかな
まあDocker関係ないのはその通りだが、コンテナ以外でそんなものを弄る機会はなかなか無いだろう
正直、俺もその一人だし気持ちはわかる オタクってやたらと「まあ」使うよね
まぁ俺は全然オタクじゃないけど 思慮深いオタクは断定を避けるためとりあえずまぁとつぶやくのだ 個人で使うのにdockerのメリットって何?
vmwareとかでいい気がするんだけど 2021/4
任意のLinuxディストリビューションをWSL2で動かす Clear Linux OSを動かすまで
https://impsbl.hatena@blog.jp/entry/ClearLinuxOnWSL2
注意。アク禁にならないように、URL 内に、@を入れました
Docker Hub からpull したイメージを、tar へexport して、
それをWSLで、D ドライブへimport する
docker export
wsl --import
WSLでカスタマイズしたものを、さらにexport しておく。
wsl --export >>31
・軽い
・別PCで作業したい場合に環境の再現が容易
・使い捨て的な使い方ができる ただしカスタマイズをしたり試行錯誤しながら使いたい場合には VM の方が向いているでしょうね >>35
それでも、Dockerのが便利な気が。
コンテナに環境を入れきったらええで。 >>36
そうだねそれはそれでアリかと
レシピ書かないでスナップショットで管理するってことだよね まあ、正確に言えば、VSCode で、Docker Compose を使う。
Linux を、AWS のように画面無し・サーバー用途で使う人は、Docker で十分
Vagrant も、使う必要がなくなった >>37
スナップショットは再現できないからあんまり。
後から適当に、Dockerfileとかソースとかを更新すればええやん?
古いコンテナも残しとけば比較はできるしな。 >>39
そういうことなのね よっぽどきっちり Docker ファイルに記述していく癖を付けとかないと途中の手順が抜け落ちるな
仕事ならともかく趣味だと >>40
ま、それができなきゃどうせ再現はできないんやからな。
しゃあない。
まれに油断して、コンテナを先に削除してもうて、あとからガッカリするときもあるが。 コンテナのethインターフェイスのMTUを変更したいです。
systemctlのdockerサービスの設定で、execに指定されてるdockerコマンドに--mtuオプションを付けると、
デフォルトのネットワークに接続するコンテナについてはMTUが変更されました。
デフォルト以外のネットワーク(docker create network -d macvlan で作成したもの)について、
MTUを変更するにはどうすればよいでしょうか。
docker create networkで指定できるものだと考えていたら、どうもそのようなオプションはないようなのです。
ブリッジする親インターフェイスについて、ip link set mtuでmtuを変更しても、
コンテナはmtu 1500のまま変更されませんでした。 リアルのNICですら滅多にやらない事を何でdockerなんかでやろうとするんだ? Linux側のブリッジに直接オプション追加する必要があるのかも知れないね
Docker側にオプションが無いなら >>44
Linuxホスト側の親デバイス(docker network create で指定するやつ)で、
MTUを設定したんですが、同dockerネットワークに属すコンテナのMTUは1500のままでした。
結局、ゲートウェイにおいてmssを設定することによって、
コンテナからのインターネットへの通信はできるようになり事なきを得ました
>>43
経路上に狭いところがあったんです dockerは便利だけどハマると解決が難しくて困る >>46
もっとコマンドが便利になればいいなと思う
docker connect network コマンドで、
ipだけでなく、dnsサーバーも指定できるようにしてほしい 物理のサーバーにVM入れてその上で動くDockerにネットワークの経路だ
DNSの設定だのと、すっげー違和感しかない。
同一ホスト内のコンテナなら共有メモリとかIPCとか別の仕組みで十分だったろうに。 インターネットにアクセスするならどうしてもクライアントからDNSへのアクセスは必要だし、
IPCにTCP使うのはDockerでなくてもわりと普通だぞ Linuxすら触ったことがない奴がDockerガーとか草 環境の再現性はほしいが
コンテナを使うことによる面倒は避けたいなら
nixがおすすめ
NixOS・Nix Package Manager Part1
https://mao.5ch.net/test/read.cgi/linux/1611657545/
DSLが難しい?それは頑張って覚えろ Docker は開発環境で使う、Disposable・破棄可能なコンテナ。
状態を持ってはいけない
これを、状態を持っている、システムで使おうとするのが、おかしい。
状態は、Docker外に持たないといけない
つまり、AWS, Kubernetes などを使うべき! 以前から、このスレには、
Docker を勉強していなくて、
Dockerをシステムのように使おうとする香具師がいる
何回も、システムじゃない・状態を持つな(Disposable・破棄可能)と言ってるのに Rubyの話はするなと何回も言われてる人の言葉とは思えないな dockerをステートレスにしろというのはあくまである1つの用途に過ぎない
内部データを永続化させて仮想マシン代わりに使うケースも結構あるしそれが便利ならそうすればいい >>58
NFSでネットワークストレージを/homeにマウントすれば
ユーザーについてはステートレスになりそう NFSは、ファイルロックもできないし、信頼性が高くないし、あんまり使いたくないね。 データベースのデータは、Docker 内にあれば、
コンテナが破棄される時に、同時に破棄される。
これが、Disposable・破棄可能
だから永続化するために、Dockerの外に持つ。
これが、volume/bind
システム構築運用では、設定情報・ロギング・監視も考えないといけない。
つまり、AWS, Kubernetes などの知識が必要 Udemy の山浦清透、8/20
【金額公開】Webサービスの運用費用、実際いくらかかっているか1円単位までお見せします
https://www.youtube.com/watch?v=nRO7pFCdM8E
このAWS のシステム構成図を見てみ
ECS on Fargate, Cloud Front で、
コンテナ内には、Laravel, Nginx の2プロセスしかない こいついろんなスレにいるけど有用な書き込みが一個もないんだよな 頭が少し固いかもしれんね ケースバイケースで使い方が変わっていくもんだからね
教科書通りに住むなら考える必要がないってことだ >>53
しかしな、たとえボリュームを使わなかったとしても、
コンテナ単独だけでデータは全て維持されているぞ。
ホストマシンを再起動しても問題ない。
もちろん、コンテナを破棄したら当然データは消えるけどな。 Dokarとhyper-yをまぜてそれをバーチャルボックスで動かしてみたい コンテナ内のデータで、外部とバインドしていないデータの、使い方が難しい。
外部環境との整合性が取れない
どういう用途があるかな? >>69
コンテナというものを正しく理解できてない証拠だよ
例えばコンテナを使わない場合、mysqlのデータとか/var/lib/mysql(?)に保存するだろ
コンテナを使っても保存する場所は同じなんだよ
mysqlというプログラムをコンテナにしただけ
データの保存先は同じディレクトリ linuxでpostfixやsambaのサーバーを構築しようとしているのですが、それぞれをDockerコンテナで構築して、
あえてlinuxの環境には直接インストールしないようにするかDockerで動かすか迷っています。
postfixやsambaのような環境を構築するのにDocker環境にするのはやめた方がいい、などデメリットはありますか?
Dockerにすることを悩んでいるのは将来サーバーをリプレイスする時にコンテナを移動するだけで移行完了できるから楽になるのかな、という考えからです。 コンテナ=アプリ
サーバーをリプレイスするのに必要なのは
アプリだけじゃダメ、アプリとデータを移動しなければいけない
それが簡単にできるのがDocker セキュリティパッチとかどうすんの?しょっちゅうイメージ更新しなきゃいけないしホストにも当てなきゃいけないぞ
ちょっと設定弄るだけでいちいちイメージ作り直すの?それどうやってテストすんの?
そういう、アプリケーションが頻繁に更新されることはないが塩漬け運用というわけにもいかない性質の用途はDockerとの相性最悪
ぶっちゃけ業務のメールやファイルサーバーなんぞ今時Google WorkspaceかOffice365を契約すればよい
その程度のIT判断ができない組織でコンテナなんか導入したところで管理上の余計なオーバーヘッドになるだけだぞ >>71
DockerとDockerで、二択になってない気が >>73
そうですね、こういう用途ではやはりDockerはむいてませんかね。postfixやsamba程度ならサーバーリプレイスの度に環境作り直す方が吉ですかね。
今回ちょうどリプレイスのタイミングで現状の環境を調べるのに苦慮したので(色んな環境や設定がごっちゃごちゃに構築されてて)コンテナにして楽しようと考えたのですが、日常の運用が大変になるのはごもっともですね… >>74
はっ!本当ですね、失礼しました。
DockerかDocker以外かの意図でした。 >>73
> セキュリティパッチとかどうすんの?しょっちゅうイメージ更新しなきゃいけないしホストにも当てなきゃいけないぞ
> ちょっと設定弄るだけでいちいちイメージ作り直すの?それどうやってテストすんの?
Docker使わない場合のやり方教えて(大爆笑) ま、答えられなないよね。
だってDocker使わないほうが大変なんだもの >>72
必要なデータは永続化するためにvolumeにして、イメージとデータをセットでお引越しするつもりでした。
そこをとらえるとDockerのポータビリティ性は楽だなーと。
直接インストールしたアプリのバージョンアップと
コンテナ内のバージョンアップ…
(例えば)ubuntuのイメージを元に自前のイメージ作成して、
必要に応じてイメージをビルドし直せば最新に出来るし、
運用もそんなに大変じゃないのかな…
あぁ優柔不断… セキュリティのこと考えると大手に丸投げしたくなるくらい面倒な話だからな >>75
再現性が問題ならAnsibleとかで構成管理したら?
Dockerで再現性を担保できるのは所詮sambaより上だけで、
君が退職したら結局ホストやDockerデーモンの設定などは闇の中だよ
その上で更にDockerを使う必要があるかどうかはともかく、本当にやるべきことはまずはそっちじゃないなな >>73
CI/CD を知らない…?このスレレベルひっく! よく知らんけどdicjerの内部で動いてるアプリのアップデートってどうしてんの >>83
そのCI/CDの基盤を誰がメンテするの?
どう考えても目的のサーバのメンテより手間かかるだろ >>80
だから>>2に書いてあるのが正しい使い方なんだよ
自分たちで作った「アプリケーション」を配布する時に使うの
ディストロがパッケージを用意しているものは、
パッケージのメンテナが頑張って依存関係とか解決してメンテナンスしてる
それは大変な作業。でもメンテナが頑張ってくれたおかげでパッケージは利用者は苦労なく使える
一方自分たちが開発したアプリケーションはメンテナなんていない。
自分達で頑張って依存関係とか解決しなきゃいけない
しかもディストロの標準パッケージとバージョンが違ったりすると
正しく動作しない可能性がある。だからディストロと独立させたくなる
自分たちで作ったアプリケーションの依存関係問題を解決するために使うものであっって
その問題が解決されているパッケージを単に入れて使うだけならほとんど意味がない
確かに設定込みでイメージ作れるかもしれないが、設定ファイルを配布すればいいだけなわけで
Dockerはアプリケーション開発者のための配布手段なので
サーバー構築するだけのインフラ屋の道具じゃない
インフラ屋がやることはアプリケーション開発が作ったDockerイメージをただ起動するだけになる >>87
クラウドだとホストの構築やメンテは丸投げできるから、
ディストロの既製パッケージを運用するだけでもコンテナを使うことには十分なメリットがあるんだけどね
オンプレだと別の用途で既にkubernetesクラスタがあるとかでない限りは余計なオーバーヘッドでしかない >>8
それって単に公式のDockerイメージを動かすだけでしょ?
自分でディストロのパッケージをDockerイメージ化するだけだと意味がないという話
誰かが作ってくれてるDockerイメージを動かすだけなら別にいいと思うよ
インフラ屋がやることはアプリケーション開発が作ったDockerイメージをただ起動するだけになる >>86
構築w
SaaS でもあるし、k8s基盤ならマニフェスト流すだけじゃんww下請けの缶詰めエンジニアには分からないかもねw ここのスレって下請けがでかい口で言ってるだけでクラウドネイティブなこと全く知らないやつしかおらん 質問者の環境がオンプレっぽいからその前提で話してるだけだろう
SaaS使っていいんだったらそれこそGoogleWorkspaceでも契約すりゃ終わる話 docker以外は何もかも考えたくない
連絡先とクレジット登録してクライアントシークレット貰って認証付きdockerソケットにdockerコマンドでリクエスト送るだけ
そんな感じの超シンプルなクラウドサービスってありませんか? オンプレだからセキュリティパッチは本番環境にログインして
apt-get upgradeするだけとか思ってそうw
本番環境と同じテスト環境用意したとしても
全く同じわけじゃないからアップデートは怖いんだよ
Dockerを使えばイメージ更新するだけですむ
もし何かあればそれを旧バージョンに戻すだけ
ホスト環境にごちゃごちゃアプリ入れないから
ホスト環境がテスト環境と大きく異なることがなくなる
>>73って実際にやったことなさそうw Ruby on Rails では、
食べチョクみたいな若い女の子が一人で起業したベンチャーは、Heroku, CircleCI。
ただし、食べチョクはAWS だけど
Railsでは毎週、数万のRuby/JavaScript のOSS モジュールを更新して、CircleCI でテストする
AWSでは、コンテナ on Fargate を使う。
Kubernetes では、rolling update, blue/green deployment など
例えば、サイボウズ のKintone では、
毎日、k8s でコンテナを破棄して作り直している Docker導入しようとしたら、間に処理入って重くなるって言われてどういうことか聞いたら・・・
普通のソフトは「カーネル - ソフト」という流れだとしたら、Dockerを入れると「カーネル - Docker - ソフト」という流れになって、重くなったりデータ抜かれたりするから駄目ってことらしいんだけど本当?
こんな仕様だったら流行らないんと思うんだけどなー 間にOS入れたら遅くなるしデータ抜かれるかもだからってOSなくしてスクラッチする? 「docker カーネル アクセス オーバーヘッド」などで検索してみましょう >>96
どこにそんな事が書いてあったのか聞いてみましょう
答えられなかったりはぐらかしたりしたら
それは嘘ということです。まあ嘘ですw >>96
こんなところで聞いてもしゃあない。
自分の頭で理解して、自分の言葉で説明できないと、相手と議論できないやろ。
しかし、そいつは仮想マシンとかスーパーバイザとか知らんのかね。 ■ このスレッドは過去ログ倉庫に格納されています