仮想環境コンテナ総合スレ Docker、Vagrant等 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
開発に仮想環境やコンテナを使う機会が多くなってきたので、みんなで情報交換しませう よろしこ >>414 dockerイメージ = exeファイル dockerコンテナ = exeファイルを実行して作ったプロセス docker runのパラメータ = exeファイル起動時の引数 と考えればいいよ 起動時の引数を変えたいって変な話だよね プロセスの状態を外部から変えたいならば、ファイルやネットワークやシグナル なんかで、プロセスにメッセージを送ることになるでしょう? entrypointのことだろ オプションで変えれるぞ >>416 今のコンテナからイメージ作らないで もしくは もとのイメージからコンテナ作り直さないで 変えられるって言いたい? >>415 1回exe起動したらずっとそのままの状態で起動しないとだめってのもおかしな話だよね なんのために引数取れるようになってるのか考えれば、パラメータ変えて再実行なんてあり得る話 プロセスが継続してる必要はないけど、たとえばポート変えたいとかいくらでもあるだろ コンテナが単純なexeと違うのは、内部に状態持って永続化してたりするから まあ、コンテナ内部に永続化させたのが失敗だって話なんだろうけど >>418 だから俺は最初から、exeファイルの引数を変えて 再起動するのが普通だって言ってるだろ 再起動したくないって言ってるのは>>414 俺はそれに対して再起動しないで変えるための案を書いてる 後からやってきたお前のレスは、>>414 が再起動したくないと言ってるのに対して (再起動しないで)entrypointでオプション変えられるって言ってることになってるんだよ だから俺は、それできんの?ってきてるんだが ちゃんと文章読め >>418 > コンテナが単純なexeと違うのは、内部に状態持って永続化してたりするから 単純なexeだってビルドする時にソースコードに書かれた 定数やデータやリソースファイルなど、内部に状態を持って永続化するが? >>420 実行ファイルに埋め込まれた定数やリソースを永続化という用法が一般的かどうかは知らんが 状態のまえに、実行時に変化するってつけといて あるいは状態もって永続化じゃなくて、データファイルでもいいぞ プロセスだって実行時にメモリ書き換えるだろ 実行時に状態変化してるんだよ メモリ書き換えるのは普通永続化されてるとは言わんわ わざと曲解してるのかね >>423 だからdockerコンテナも同じ 基本的にコンテナは終了した後に再利用することはしない 消すのだから永続化していると考えてはいけないんだよ データベースとかリポジトリのコンテナは止めたり再開するだろ? >>424 だからコンテナ内部に永続化させたのが失敗だって話なんだろうって ただ、コンテナは中断しても良いけど終了させたいわけでも消したいわけでもないぞ たとえば 現在のコンテナの内容のまま、 -p 80:80 から -p 8080:80 にしたいってときにどうするんだって話 >>425 しない。それは使い方が間違っている。 データベースに限らないがまずアプリとデータは分離させる アプリはコンテナ、データはボリュームに保存する。 そしてコンテナは消してもデータは残るように作るのが通常のやり方 >>427 > たとえば 現在のコンテナの内容のまま、 -p 80:80 から -p 8080:80 にしたいってときにどうするんだって話 データはコンテナの中ではなくボリュームに保存する。 だからコンテナは消しても、データはそのまま。 アプリを一旦停止して再起動しても、データはファイルに保存してるだろ。 アプリを止める = コンテナを止める データをファイルに保存 = データをボリュームに保存 こう変わっただけ これこそが「仮想化」なんだよ。 もし仮にアプリが決め打ちの絶対パスで/var/hogeにデータを書き込むという仕様だとしても、 dockerコンテナに閉じ込めておけば、アプリが/var/hogeに書き込んだとしても ボリュームを使うことでコンテナの外では好きな場所に変更することができる 仮想メモリのように、アプリから見た書き込む場所とは別の物理的な場所にリマップできる アプリや一連のシステムを一つのコンテナにパッケージングし そのコンテナ=アプリのようにみると、docker runのオプションで自由にポート番号 や書き込みディレクトリを変更できるカスタムアプリが出来上がる。 ドッカスはネットワーキングがクソ ホストのリゾルバぐらい参照せえや なに勝手にグーグルにつないどんねん 外部ポート5000番で公開してるregistryにloginしようとすると フロントのnginxが400 bad request返してくるんだがなんとかならん? おそらく docker loginがポート5000だからtlsじゃねーだろって判断する →dockerがhttpでregistryにつなぎに行く →nginxがhttpsじゃないので400返す って流れになってるんだと思う 試しにregistryの外部ポートを443に変えてloginするとちゃんと成功する docker loginで強制的にtls使うオプションとかあれば使うんだけど docker login --helpしてもそれらしいオプションはなかった 443で公開するしかないのか insecure-registryは使いたくないし ものすごく基本的なことかもしれませんが教えて下さい。 1つの物理マシンに、ubuntuをインストールし、色々な実験家用をdockerコンテナでインストールし、 そのマシンに複数ユーザが接続してdockerコンテナを使用する予定です。 同じコンテナを複数ユーザが使用しても大丈夫でしょうか。 それとも、元々マルチユーザのOSなのでこのような使い方こそが向いているのでしょうか。 >>432 実験や学習に使うならdockerじゃなくてvagrantの方がいいかな サーバー共有する必要はないと思うのでローカルにインストールさせれば? CentOS7にDocker入れて、 Hass.ioというホームアシスタントのコンテナHass.ioを走らせたのですが クライアントPCから接続できなくて困っています。 DockerとCentOSの間で外部への橋渡し設定が必要なのか CentOSのsamba設定がまずいのか どちらかと考えています。 前者の原因はあるでしょうか? Dockerをアプリみたいに考えていいなら、前者は考えなくていいと思っています。 本人はDocker初心者でlinuxは数年ぶりに触っています。 >>435 Hass.ioなんてのはしらんのでその説明と構成を言ってくれないと答えられん。 そのHass.ioはサーバーなのかHTTPかなにかで接続するのか、 samba は直接CentOS上で動かしているのか? それともHass.ioのコンテナに含まれてるのか、別のコンテナなのか Hass.ioとsambaはどう連携するのか マシン構成はクライアントPCとサーバーPCの二台なのか それともクライアントPCとHass.io用PCとsamba用PCの三台なのか あとDocke(コンテナ)をアプリみたいに考えて良いのはそのとおりだが 何かしらのサービスを提供するアプリは、サービスを提供するための ポート番号を設定するだろ?(デフォルトで指定されてることも多いが) Dockerコンテナ=アプリはそのポート番号を明示的に指定しなければいけない >>437 Hass.ioはhttpの8123ポートへアクセスするとブラウザベースのサービスを提供するもの。 Hass.ioはcentosのdocker上で動かしている。 sambaはcentos上で動かしている。 マシン構成はクライアントPCとサーバーPCのcentosの計2台。 docker0とHass.ioは172.のローカルIPが振られていて、サーバーPCは192.のローカルIPがDHCPで振られている。 サーバーPCはワークグループに表示されているが、ゲストアクセス出来ない。 すみません。分かることを書いてみました。 本人はサーバー立ち上げ経験ありません。 >>432-434 漏れの推測だけど、 そのOS に、Docker イメージが1つだけで済む。 各ユーザーは、そのイメージからの差分だけを持てば良いから、効率的 >>435 Hass.ioとやらとsambaの連携は必要なの? Hass.ioだけ起動して動作するか確かめよう >>441 あ、公式ホームページ読むと Hass.ioでsambaとSSHが使えると書いてあるのかな。 確認してみます。 1つのアプリケーションで複数サービス起動したい場合のベストプラクティス教えて バッドプラクティスしたい場合の ベストプラクティスを教えてと言われても・・・ ジェンキンスでイメージをレジストリにpushするところまで出来たのだけど pushしたイメージを運用サーバーにpull & restartしてもらうにはどうすればいいの?ssh? 人いねえな 日本じゃ仮想環境はまだまだマイナーなのか 大企業でもでっかい社内サーバーにあれこれ同居させてなんてことが未だにあるし そういう文化なのかなぁ Dockerのコンテナで開発環境として いろんなサーバつくる上での「共通素材」が そろったコンテナ配布していないかな。 プログラミングが学習しにくい内容として 例えばDBを学びたときに「DB内に予め素材データがたくさん詰まっていたら」 それをもとに勉強や試しに動かしやすくなる。 JavaScriptを試したいときにい予めサンプル画像や文言、 試し切り用のHTML構造がたくさん詰まっていてくれたら検証しやすくなる。 テストコードがあらかじめたくさんあったらそれに合わすような プログラムが作りやすくなる。 開発環境は素材付きで配布するっていいアイデアじゃないか? Dockerhubに登録すれば良いものなら評価してくてるよ これどういうこと? Docker死ぬん? せっかく覚えてきたのに? Docker, Inc is Dead / Docker社は死んだ http://itosho525.hatenablog.com/entry/2018/01/01/074358 >>448 素材データはあちこちでいろんな形で配布してるから実情にあったのを自分で選ぶべきだな R程度の軽いデータ付属してても問題ないけど重量級のデータが詰まってるのなんて邪魔でしかない DockerはMSに買収された方がいい方向に進むだろうね Docker、2016、オライリー 実践 Vagrant、Mitchell Hashimoto、2014、オライリー Vagrant, Packer などで有名な、HashiCorp の創始者 Chef実践入門 - コードによるインフラ構成の自動化、2014 cookbookは各社が公開している Chef社のopscode、Railsを作っている Basecamp社、 Berkshelfを作っている Riot Games社、 Pivotal Trackerを作っている Pivotal Sprout社、 aws, engine yard dockerでデスクトップ環境とスマホエミュレーター作れる? まーたdockerが何か分かってない奴の質問か dockerはカスタマイズされたアプリを作るものであって 環境を作るものじゃないんだよ ここにアプリが有るじゃろ?から始まって このアプリを動かすにはこのライブラリが必要で こういう設定ファイルが必要じゃろ? それらのアプリとそのアプリを動かす環境を 合体させてアプリを作るんだよ だからデスクトプアプリは作れても デスクトップ環境はそのそもdockerで作るものじゃない スマホエミュレータはアプリなんだから作れるだろう クリーンなビルド環境としてのdockerなど、当たり前のように環境として使われてるが? >>458 それはクリーンな環境を作ってるのではなく 作っているのはあくまでビルド生成物 その途中がクリーンな環境になっているってだけの話だな >>459 大丈夫か? あんま無理すんなよ 「その途中がクリーンな環境になっている」の環境はまさにdockerで作ってるんだぞ? ビルド環境だけじゃなくテストを走らせる環境もDockerで作る Travis CIとか使ったことないんじゃ 固定概念でdockerの可能性を絞るのは宜しくないね それぞれ ・ビルド生成物を作成するアプリ ・テスト結果を作成するアプリ だと言いたいんだろう ていうか、彼の世界観でスマホエミュレータがOKなんだったら Linuxデスクトップ環境エミュレータだってOKなんだけどなw スマホのエミュレータは、ハードウェアをエミュレートしているアプリを 作るところまでがdockerでやる部分でスマホの環境を作ってるのは スマホに入れたOSが作ってるものだからね 開発環境を仮想化したいがVagrant+VirtualBoxは重いんだよな >>465 you, windows 10にしちゃいなyo! >>465 /vagrant/ 共有フォルダ下に プロジェクトのソース、DBディレクトリなど開発環境置いて ホストマシンから編集すれば万事解決 コンテナ内でandroidエミュをヘッドレス起動 OK エミュブート待機 OK コンテナ内でadb tcpip 5555 OK ポートフォワーディング5555:5555 OK コンテナ内でadb connect localhost:5555 OK コンテナ外からadb connect localhost:5555 繋がらない なんでやねん😭 dockerの参考書でできるだけ新しく内容が濃いものはどれ? ネット検索で断片的な情報を集めるのに疲れた 環境構築には、vagrant, chef は、Ruby でレシピ(手順書)を書ける。 Docker もある 仮想環境コンテナ総合スレ Docker、Vagrant等 [無断転載禁止]c2ch.net https://mevius.5ch.net/test/read.cgi/tech/1487235664/l50 ansible絶対殺すおじさんは最近あばれてないの? ubuntuコンテナにRDP接続したいのですがどうすればいいですか? Xウィンドウ?とかいうのを使うらしいのですがよくわかりません プロフェッショナルの方、どなたか教えてください(/ω\) 今、下記内容のdockerimageを作成したいと思っています。 @ ベースのイメージ:jupyter/datascience-notebook A Tensorflowを使いたい ※@にTensorflowがインストールされていないため その為にdockerfileを下記の通り作成したのですが、 出来上がったdockerimageから作成したコンテナ上で上手くtensorflowが動きません。 ※コンテナ内でpythonを起動し、そこで「import tensorflow as ts」を実行すると以下のエラーが出ます。 RuntimeError: module compiled against API version 0xc but this version of numpy is 0xa ImportError: numpy.core.multiarray failed to import ImportError: numpy.core.umath failed to import ImportError: numpy.core.umath failed to import 2018-04-20 03:56:29.133557: F tensorflow/python/lib/core/bfloat16.cc:664] Check failed: PyBfloat16_Type.tp_base != nullptr Aborted dockerfileの内容は以下になりますが、何か間違っていますでしょうか? もし間違っている場合は、修正内容をお教えください。m(__)m ■dockerfileの内容 From jupyter/datascience-notebook RUN pip install --upgrade pip RUN pip install tensorflow==1.5 質問が続いて申し訳ありません。 もう本当の初心者の初心者で、これからローカル開発環境を構築しようというところで、 Vagrantの初期化に失敗し途方に暮れております。 海外サイト含めいろいろググりましたし、パスやユーザー名の問題もないと思います。 Invalid argument @ dir_s_mkdir - C:/Users/(user)/MyVagrant/MyCentOS/?vagrant_home (Errno::EINVAL) と出て、初期化(Vagrantfileの作成)に失敗します。 どなたか助けてください・・ >>478 mac買ったらいーよ 私はubuntuユーザーです。 winは色々大変 DockerでLet's encrpt使えますか? 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方 役に立つかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 AUPZD windows 10 メモリ4GでDocker動かすテクニック知らん? こいつリソース食い過ぎなんだけど >>483 DockerはWindowsとLinuxではLinux仮想マシンを使う だから設定から仮想マシンに割り当てるメモリを変更すれば良い WSLのLinux互換機能が高くなれば、仮想マシン使わずに ネイティブに動くのにな。まだかなー >>488 スパコンの定義は1.5TFLOPS以上から50TFLOPS以上に変わったらしいで https://ja.wikipedia.org/wiki/FLOPS 1.5TFLOPSとか発売当時で今なら中古で1万?ぐらいの GeForce GTX 580で超えるからな DockerとVagrant両方使ったが、覚えることはVagrantのほうが少ないな 軽さではDockerかな コンテナ起動した後に初期化スクリプト走るタイプのコンテナが使いにくいんだがどうにかならんのあれ oracledbコンテナ起動 クエリ通るまでポーリング スキーマ構築 固定のマスタデータ投入 テスト用のトランザクションデータ投入 UI テスト開始 CIサーバーでテスト開始するまでが長すぎてもったいないと思った 初期データまで込みでイメージにしたい >>491 それは初期化スクリプトが問題なのではなく データベースサーバーが起動するまで待っているから データ込みにしてようが結局データベースサーバーが起動するまで待つ 仮想サーバーがイメージつかめないんだよな そもそも、vagrantって言葉の意味もわからんしな >>496 20代独身172cm65kg 石原さとみがタイプだが嫁にはしたくないタイプだな 料理下手そう >>496 Core i5、メモリ4GB メモリ不足かな? 業務系はどこもこんなもんだよ 経営者がITよくわかってないから設備投資には消極的 エクセルとエディタが動けば開発できるだろ贅沢言うな経費削減だって本気で考える 金無いんだから仕方ないだろ そんなこと言うなら俺にパソコン買ってくれ アマゾンからインスタンス借りれば? 端末買うよりは安いでしょ Dockerを使っていてもAnsibleのような仕組みはやっぱり必要なんだな コンテナを起動した後に起動をポーリング待ちして初期設定処理を動かさなきゃならんコンテナが多すぎる リポジトリからコードcloneしてupすればローカル開発環境のセットアップ完了なんてのは儚い夢だった Ansibleのようなでかい仕組みはいらないけどね。 シェルスクリプトもしくはシェルスクリプトベースのなにかで良い あと「ローカル開発環境」の定義がきれいに定まってない気がする。 おそらく、IDEやテキストエディタを含めたものを言ってるのだろうけど 分けて考えないといけないと思う 1. ソースコードを作成する環境 2. 開発したアプリを動かす環境 3. 実行するサーバー相当の環境 まあansでもshでもいいけど何れにせよサービス起動前とサービス起動後の設定を一元化して管理したい場合にはDockerは致命的に使いにくいってこと >>505 それは典型的なDockerの使い方の間違いだよ 間違ってるので、何を想定してるのかよくわからない 設定を一元管理?なんの話だそれは 正しいDockerの使い方はアプリとその実行環境を固めたアプリ・サービスを作ること 及び設定内容を埋め込むことで起動するだけで動くアプリ・サービスを作る 1. 新しく物理・仮想サーバーを用意して、 2. 環境ごとのサーバーの設定を行って、 3. アプリ・サービスを動かすのに必要な環境を用意して(必要ライブラリのインストールなど) 4. アプリ・サービスをインストールして 5. アプリ・サービスの設定を行って 6. 環境構築を完成させる よりも 1. 新しく物理・仮想サーバーを用意して、 2. 環境ごとのサーバー設定を行って、 3. アプリ・サービスをDocker経由でインストール・起動して 4. 環境構築を完成させる この方が楽でしょ? 特に一つのマシンで複数のアプリ・サービスを動かそうとしたとき、 そのアプリ・サービス毎に必要な環境が異なっていたら大変になる それぞれが必要なライブラリのバージョンが異なっていて動かないとかね DockerもVagrantもcronが絡むと途端に使えなくなるな 仮想コンテナ系の限界だな >>503 あの、出来てますよ、それ 初期化待ちって、Dbの構築とかですか? cronも良く分からないが、使う? 動作確認だけなら、cronで叩く処理を動かせば良いような >>507 普通にcronからDockerコンテナ化した プログラム実行するだけじゃん 何が使えないの? 使い方が間違ってるだけじゃないの? >>506 例えばAnsibleだったら 1. 新しく物理・仮想サーバーを用意して、 2. 環境ごとのサーバーの設定を行って、 3. アプリ・サービスを動かすのに必要な環境を用意して(必要ライブラリのインストールなど) 4. アプリ・サービスをインストールして 5. アプリ・サービスの設定を行って 6. 環境構築を完成させる ってのは1はともかく2〜5はAnsibleだけで一元管理できる でもDockerだと 1. 新しく物理・仮想サーバーを用意して、 2. 環境ごとのサーバーの設定を行って、 3. アプリ・サービスを動かすのに必要な環境を用意して(必要ライブラリのインストールなど) 4. アプリ・サービスをインストールして 5. アプリ・サービスの設定を行って 6. 環境構築を完成させる 2はシェルスクリプトやAnsibleなど 3はDockerfile 4はComposeやKubernetesなど 5はシェルスクリプトやAnsibleなど このように色々と使い分けなければならない どっちにしたって自動化するなら1つのテクノロジで管理できるAnsibleのほうが楽でしょってこと >>508 うん、主にDB DBに設定データを保存するパターンのアプリも必然的に同じ状況になる もちろん自分が作ってるアプリの設定ならDBの初期化スクリプトに追記すればいいと思う postgresなどは親切にもオフィシャルでスキーマ初期化の機構が用意されてる(oracle公式はなかったけど) でも他人が作ったアプリではそうもいかない DBの初期化スクリプトで初期設定データを挿入することはできるだろうけど、なにを入れればいいのかがわからない 手動で設定した後にDBを分析して、入れるべきデータを調べることはできるけど、手間がかかりすぎる それにアプリが実行してる初期化に割り込んでデータを挿入するというのは行儀が悪い なのでアプリが起動した後、アプリが用意したインターフェースで設定を行うことになる 管理用のREST APIが整備されてるならそれ、ブラウザでしか動かせないならSelenium、といった具合 docker execでコンテナに入ってコマンドで設定というパターンもあるけど(railsアプリに多い気がする)、設定のためだけに普段使わないフレームワークを覚える気はしない >>511 > ってのは1はともかく2〜5はAnsibleだけで一元管理できる 一人でプログラム作ってんのか? アプリを動かすのに必要な、OSの環境、入れて置かなければいけないパッケージ その他必要なライブラリはなんなのか? それをアプリを作ってない人が把握するのは大変だよね? それらのバージョンはアプリの開発やセキュリティパッチなどで日々変わっていく そのたびにAnsibleをメンテナンスするのは大変 物理・仮想サーバーのAnsible構成と一体化してるから、 ローカルで動かしてみるのも大変 サーバーの環境設定と、アプリの実行環境構築は別々の作業で別々の人がやる アプリを開発してる人は自分の責任でアプリを実行できる環境を用意しないといけない。 サーバーの設定を行ってる人(Ansibleの設定書いてる人)に、 あ、これこれのライブラリ入れてください。バージョンはこれで。 アプリのバージョン更新するんで、Ansibleであれとこれ更新してください。 え?動かない。手元ではちゃんと動いてるんですが? ライブラリのバージョン違ってるじゃないですかー、ちゃんと入れてくださいよー あんたのミスですよ。 なんてことあってはならない ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる