仮想環境コンテナ総合スレ Docker、Vagrant等 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
開発に仮想環境やコンテナを使う機会が多くなってきたので、みんなで情報交換しませう よろしこ >>377 > コンテナは「仮想マシン」みたいなものだから、 だからそれが間違いだってーのw 仮想マシンって何かわかってるか?(物理)マシン、ハードウェアを ソフトウェアで実装することで仮想的なハードウェアを作り出すものだよ。 コンテナはハードウェアをソフトウェアで実現している わけじゃないので仮想マシンとは全く違うもの (アプリケーション)コンテナがやってる仮想化っていうのは カーネル部分だ。コンテナごとにカーネル部分を仮想的に作り出すことで アプリケーションごとに独立したユーザーランドを提供することができる アプリケーション専用に独立した実行環境を持てるんだよ。 同じ「仮想」という言葉が入っているから勘違いしてるのだろうが コンテナは仮想マシンとは全く違う。「仮想」ではあるが「マシン」じゃない。 仮想メモリと仮想マシンに両方共「仮想」が入っているから 同じようなものだと勘違いしているのと同じレベルの間違いをしてる。 > 表現は間違っていない。 間違っている所は仮想マシンみたいなものと言う所と 複数のプロセスをまとめるというものだ。 やろうと思えばできなくはないが、アプリケーションコンテナであるDockerは 複数のプロセスをまとめたりしない。複数のプロセスを動かすのは 物理・仮想マシンの役目だ。 物理・仮想マシンで複数のプロセスを起動する Dockerコンテナ1つはその複数のプロセスの1つにすぎない >>377 > 使うのが稀だとしても「過去の状態に復帰できる」が担保されているのと 担保されていない。イメージを消してしまったら二度と同じものは作れない。 > 「1ファイル」であるということは移植性が高いということ。 俺は「1ファイル」なんかにこだわってないが、 なんでお前はそれにこだわってるんだ? 別に「1ファイル」であることは移植性は高くない。 何を根拠にそんなこと言ってるんだろうか? 移植性がないC言語のソースコードを1ファイルにすると 移植性が高くなるとでも? 意味がわからない。 > シェルは内部に多数の外部スクリプト、コマンドなどを読み込むから > 1ファイルではなかなか他のマシンに移植しにくい。 移植しにくいのは他の「マシン」ではなくて他のOS(ディストリ) コンテナはその部分を仮想化して、カーネル以外の部分を 全部アプリケーションにくっつけてしまう。 結局のところ別の実行環境に移植するっていうのは理論上は 互換性があっても完璧とはいえないんだよ。 だからコンテナを使うことで、カーネル以外の部分に同じものを使うことで 移植そのものをなくしてしまった。 DockerコンテナはLinuxカーネルでしか動かないって知ってるか? 使うOSは全部Linuxだ。だから移植しなくて良いんだよ。 なおAnsible使っても移植作業は大変だ。DebianとCentOSでapt-get、yum違いも有るし パッケージ名の違いも有る。パッケージの中に入っているものも違う。それぞれ用意しないといけない。 Dockerイメージににはカーネルを除いた「Debian」部分も含まれるから CentOSで、Debianベースのイメージが動かせる。移植作業が不要とはこういうこと >>378 お前は国語が理解できないんだと思う。 「犬は狼みたいなもんだ」といったら それの違いを生息地帯とか餌の内容とかごちゃごちゃ並べて 批判するタイプ。 つまり、抽象表現とかメタファーを一切受け入れられない。 その証拠に、使っている言葉がどっかのドキュメントに書いてある 文言そのまんまコピってきたような文章書いてるな。 学力テストでは高得点取れそうだが、物事を設計するのは苦手そう 違うかい? >>380 何が言いたいん?言葉遊び? お前は「猫」と「海猫」は同じようなもんと 言ってるんだが? っていうか言い返したいのはわかるが、 レスの内容に言及しないのは何なんだろうなw > 違うかい? あぁ、そうだ、これ、関係ないくだらない質問ををしてそれに答えなかったら、 否定しなかったから認めたんだ。おまえは認めたんだー。わーって 言うための布石だこれ。見たこと有るw くだらない質問だけど違うって言っておくよ。おまえを黙らせるために。 でも関係ない話だからそれ以外何も言うつもりはないよ。 このスレに関係ある話をしような? ...お、おう。 久々に来たら面白い事になってんな。 Docker、2016、オライリー Chef実践入門 - コードによるインフラ構成の自動化、2014 殆ど同じ内容のDockerfileなんだけどちょっとだけ変えたい場合ってどう書けばいいの? FROM me/hoge:debug COPY . /hoge WORKDIR /hoge RUN ./setup.sh --debug ENTRYPOINT ["run.sh"] FROM me/hoge:release COPY . /hoge WORKDIR /hoge RUN ./setup.sh ENTRYPOINT ["run.sh"] 似たようなのが沢山ある 異なるimageを1つにマージしたい なんていうか多重継承みたいな事をしたい dotnetとpythonから派生して両方に依存したアプリを乗っけてビルドしたい的な要件 どちらかをfromにしてもう片方をdockerfileに書けば済む話なんだけどせっかく公式でdocker最適化メンテナンスしてくれてんだから両方ともそっち使いたいよね >>389 あんたも典型的な使い方を間違えてる。 Dockerはアプリケーションコンテナであって システムコンテナじゃない システムコンテナじゃないから「アプリを乗っける」なんて 考え方にはならないししてはいけない。 正しくは「アプリケーションをビルドする」だ。 Docker使ってアプリを作るんだよ。 >>390 言葉の定義の問題でしょう ここではwebアプリのリソースファイル一式をアプリと呼んでるだけ というか質問に答えれないならしゃしゃりでないで黙っててください うんことうんこが激しくうんこを撒き散らしてるが、 自分一人で仕事するのであれば好きにしたらいい チームでやるならメンバーのスキルセット考慮して選択するだろ 原理主義的にどっちがいいとか言ってる奴等はだいたい職場で浮くよな >>389 >>390 dockerの中でdockerを使うことが、最近のversionだと出来たりしませんか? すみません、教えて下さい virtualbox+ubuntuで仮装ホストを立てる場合とdocker toolboxの違いってどんな感じなんでしょうか? >>395 docker toolboxの場合dockerが提供するべき機能を ちゃんと提供している(努力している)って所かな 具体的に言うと起動したコンテナにlocalhostでつなげることができるとか ボリューム機能が使えるという所。他にも有ると思うけど コンテナの中は実行環境が隔離されてはいるけど、コンテナ自体は ホストOS上で直接動かしているように見せられるのが特徴なわけ つまりWindows上でDockerコンテナを動かしたとき、 Windows上のディレクトリをDockerコンテナは読み書きでき Dockerコンテナでウェブアプリを起動した時、localhost:8080とかで接続できる virtualbox+ubuntuだとWindowsがホストだとしてゲストマシンとして別のマシンが 起動するような感じ、ディレクトリとか共有設定していなければ別扱いだし 別のIPアドレスが割り当てられる、ポートフォワーディングの設定をしないとlocalhostで見れない。 Windowsとは別に用意されたubuntuマシンに入ってからubuntuマシン上でdockerを使うのに比べて docker toolboxだとまるでWindows上で直接Dockerを動かしているよう見える。 まああとは考え方の違いがあるけどね。Windowsは使いづらいから Windowsを捨てたつもりで、でほぼすべてを仮想マシンの中で過ごしたいっていうのなら virtualbox+ubuntuでも良いと思う。でも今はWSLも出来たし、Windows上で開発 テキストエディタもWindows用atom。作ったウェブアプリをWindows用のブラウザで確認したい。 みたいな使い方をするのならdocker toolboxならそれができるように整備されているってわけ VirtualBoxでWindowsのファイルシステムをマウントして使うと遅いから docker-unison使ってたけど docker-syncの方が良いの? https://github.com/leighmcculloch/docker-unison http://docker-sync.io Vagrant.configure("2") do |config| config.vm.box = "hashicorp/precise64" config.vm.network "forwarded_port", guest: 80, host: 10080 # HTTP config.vm.network "forwarded_port", guest: 443, host: 10443 # HTTPS end Vagrant, Chef では、Ruby の文法で、設定ファイルを書く 誰も、Vagrant の作者、Mitchell Hashimoto (HashiCorp)を、 避けて通ることはできない、と言われている Docker、2016、オライリー 実践 Vagrant、Mitchell Hashimoto、2014、オライリー Chef実践入門 - コードによるインフラ構成の自動化、2014 >>397 これ興味あるわ guardとかめたくさ遅いが改善されますか? >>396 ありがとうございます ホストのwindows環境を活かしたいならsocker toolboxがいいんですね 勉強になりました 日経Linux 11月号 WSL 特集 Docker の記事もある Ubuntu 側では、Dockerデーモンが動かないため、 Windows 側の、VirtualBox に、Vagrant で、CoreOS を入れて、 その中に、Dockerデーモンをインストール Ubuntu側から、Dockerコマンドで使う 付録は、サーバーがゼロから分かる本、100ページ。 サーバーでできること、77 付録DVD は、 Ubuntu 17.04 日本語 Remix (64 ビット版) Ubuntu Server 17.04 (64 & 32 ビット版) CentOS 7.3 LiveGNOME (64 ビット版) windowsで開発したイメージをraspberry piで動かすことはできますか? 手元でビルドテストしたイメージがどこでも動くのがdockerのメリット 暇な人おしえてください 物理マシンで作ったスクリプトファイルを仮想環境で実行したいんだけど どうやってファイルを仮想ディレクトリにもっていけばいいの? 根本的にわかってないっす・・・ 自己解決 なるほど共有フォルダを作成すればいいのね 最近vagrantを始めたのですが このソフトがやっていることってもしかして virtualboxのCLIを叩いてるだけでは? ありがとうございます やはりそうなんですね そうなると、「vagrantでないと出来ないこと」は何なのかが気になります プロビジョニング的なことでしょうか? プロビジョニングは、 自動的にログインしてコマンドを叩くことで実現してるのでしょうか? これはあらためて考えるとvirtualboxのCLIで出来ることを超えてる感じがします 時間さえあって自分で作るならアセンブラでできないことは何もない ○○でないとできないこと="時間をかけずに"△△をすること すべてそう。時間をかけないという問題を解決してる。 > これはあらためて考えるとvirtualboxのCLIで出来ることを超えてる感じがします virtualboxのvboxmanageコマンドでできる >>408 vagrantはラッパだから、vagrantじゃないとできないことなどない 自転車で行けるなら、歩いていけないことはない というのと一緒 可能・不可能の話にしてしまうと大事な点が見えなくなる 同じことをするにもコスト・時間が少ないほうが良いだろう? それはすごく重要な事だよ oracledbの公式イメージないんか oracleはほんま使えんなぁ privilegedモードとdocker.sock共有だとどっちか危険ですか? docker run したときのパラメータ変えたかったら 今のコンテナからイメージつくるか、もとのイメージから、コンテナ作り直すしかないの? >>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の作成)に失敗します。 どなたか助けてください・・ ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる