仮想環境コンテナ総合スレ Docker、Vagrant等 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
開発に仮想環境やコンテナを使う機会が多くなってきたので、みんなで情報交換しませう
よろしこ >>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であれとこれ更新してください。
え?動かない。手元ではちゃんと動いてるんですが?
ライブラリのバージョン違ってるじゃないですかー、ちゃんと入れてくださいよー
あんたのミスですよ。
なんてことあってはならない 担当者を明確に分けるとこういうことなんだわ
1. [インフラ] 新しく物理・仮想サーバーを用意して、
2. [インフラ] 環境ごとのサーバーの設定を行って、
3. [アプリ開発] アプリ・サービスを動かすのに必要な環境を用意して(必要ライブラリのインストールなど)
4. [インフラ][アプリ開発] アプリ・サービスをインストールして
5. [アプリ開発] アプリ・サービスの設定を行って
6. [インフラ][アプリ開発] 環境構築を完成させる
担当者ごとに分けると以下のようになる
・Ansibleで設定する部分
1. [インフラ] 新しく物理・仮想サーバーを用意して、
2. [インフラ] 環境ごとのサーバーの設定を行って、
4. [インフラ] アプリ・サービスをインストールして
(kubernetesのような運用向けオーケストレーション、または単体でDockerコンテナ起動)
6. [インフラ] 運用環境構築を完成させる
・Dockerでコンテナ化する部分
3. [アプリ開発] アプリ・サービスを動かすのに必要な環境を用意して(必要ライブラリのインストールなど)
4. [アプリ開発] アプリ・サービスをインストールして
(Composeのような開発向けオーケストレーション、または単体でDockerコンテナ起動)
5. [アプリ開発] アプリ・サービスの設定を行って
6. [アプリ開発] 開発環境構築を完成させる
作業は明確に分かれてるんだよ
担当者が違う作業を一緒にしてしまってはいけない >>513
> ドッカーはウェブアプリ専用
違うよ。例えばffmpegのような多くの外部ライブラリに依存し
バージョンの違いの影響も大きくコンパイルオプションも豊富で、
権利関連の問題でどのディストリでも標準パッケージでは満足できず
かと言ってライブラリを自分でビルドすると依存関係が壊れがちになって、
すべての機能をONにしたければ自分でビルドするはめになるようなソフトは
Dockerを使うと、簡単にビルド・実行できるようになる。
自分の好きなディストリを使いつつ、ffmpegは他のディストリベースにすることができる サーバの環境をdocker上に作っておく
リプレースが必要になったら新しいサーバにimageを移す
古いけどファミコンのカセットを新しいサーバに刺しなおすだけ つまり
* Dockerの利点はアプリの依存関係のパッケージングである
JavaランタイムなしでJavaアプリが動かせますといったことがOSレベルの依存関係でも可能
* Dockerによってパッケージングされたアプリだけではシステムとして成立しない
Ansibleやオレオレスクリプトで別途環境構成や設定を管理する必要がある
こういうことですか?
DockerはあくまでAnsibleやオレオレスクリプトで管理される取り扱いが容易な部品に徹すると そもそもAnsibleとDockerって明確にセグメント違うでしょ
優劣がどうこう言うたぐいのものじゃない AnsibleはAnsibleだけでいいけど
DockerはAnsibleやシェルなど別途構成要素が必要
結局はここに落ち着く
>>503から進展してない > AnsibleはAnsibleだけでいいけど
> DockerはAnsibleやシェルなど別途構成要素が必要
え? Ansibleでアプリ開発してんの?
普通別の言語を使うよね?
というかAnsibleでどうやってアプリ開発するのか知らんがw
なぜそんなに、アプリ開発の一環である
Dockerコンテナの作成を、Ansibleでやることにこだわるのか?
どうせアプリ開発は別言語でやるのに
インフラ担当は、アプリ開発をしなくていいんだよ? >>521
Ansibleでアプリ開発?
スマンが言ってること意味不明なので解説して欲しい Docker使わない場合(4step, 2lang)
【Java】 Javaアプリ開発
【Ansible】 Javaランタイムインストール
【Ansible】 Javaアプリデプロイ
【Ansible】 アプリ設定
Docker使う場合(5step, 3lang)
【Java】 Javaアプリ開発
【Docker】 Javaランタイムインストール
【Docker】 Javaアプリデプロイ
【Ansible】 コンテナデプロイ
【Ansible】 アプリ設定
覚えること、仕事増えてるよね? >>522
だってすべてAnsibleだけでできるわけないじゃん。
インフラさんはAnsible使ってるだろうけど、
アプリ開発者は別の言語使ってるよね?
インフラさんにとっては、アプリがなんの言語で作られてようが
Dockerコンテナで実行環境毎まとまってようがどうでもいいことじゃん
重要なのはアプリを開発してないインフラさん
(=どんな実行環境・ライブラリなどで動くかなど知らない)が
アプリに依存したことを意識せず「Dockerコンテナを動かす」という
ただそれだけのことで、サービス運用環境を作れること
専門家に任せましょう。どんな実行環境・ライブラリなどで動くかは
アプリ開発者は知ってます。それで作ってテストしてるんだから
アプリ開発者はAnsibleなんか使いません ■ このスレッドは過去ログ倉庫に格納されています