FC2ブログ

データ・ボリューム・コンテナはデータを保存するためのコンテナでは無い

あと1日で6月になってしまうので更新。今回も Docker ネタ。

ここ1ヶ月半近くずっと Docker を弄くり続けています。本当にやりたいことは Docker を使ったアプリ開発の更に先にあるんだけど、せっかくの機会、ということで Docker を自主的に使って少々時間が掛かってます(でも環境に依存しないようにしたい意図があるし今後のことを考えると今勉強しといたほうが良いって思ってる)。

ちょっと無駄話になってしまうので、読み飛ばしてもらったほうが良いかもしれませんが、一ヶ月半使った感想を書きます。
最初は結構動作にわからない部分が多く、また特に Docker Compose、コンテナ間の組み合わせなどすんなり分かんない部分もあったけどわかってしまえば結構簡単です。ボリュームなど実装がどういうものかわかってしまえば、書き方自体はシンプルで使うのは意外と楽です。

ただ、データの扱いについては非常に混乱したというかややこしいと思いました。


ここから本題。
まず、ボリュームについて理解しなければいけませんでしたが、こっちに関しては比較的シンプルで、各所の説明通りホストのディレクトリを各々の Docker コンテナでマウントして共有してるだけでした。
しかし、データ・ボリューム・コンテナはずっとデータを格納するコンテナ機能があるんだろうと思っていました。でもこれが超越的解釈で全くイメージとは異なる機能でした。
これから Docker を使い始めようと思ってあちこち見て回ってある程度情報を掴んできた人だと丁度こんな勘違いをしていると思います。

結論から言うとデータ・ボリューム・コンテナは単なるコンテナ。
これにボリュームとするホストのディレクトリをマウントさせた上で、ボリュームをコンテナ間で共有するためのいわゆるハブとして、各アプリ用コンテナと通信するようにしたのがこれの正体です。

データ・ボリューム・コンテナはデータを格納するんじゃなくて、あるボリュームを複数コンテナからアクセス出来るようにするためのコンテナです。

そして、こういう機能が Docker に備わっているわけではありません。
ボリュームをマウントさせた通常のコンテナを、ボリュームへのアクセス用ハブとして使っているものをこう呼んでるだけです。

ただし、通常 Docker のコンテナは何らかの個別のアプリを格納し、実行していますが、データ・ボリューム・コンテナでは BusyBox コンテナという最低限の Linux のコマンドのみを備えたコンテナを使用することが多いです(BusyBox は多くのコマンドを持ったツールでこれを格納したコンテナ)。
これが何故かは簡単で、データ・ボリューム・コンテナは単なるアクセスポートとしてしか使わないので容量・動作を軽くするためです。でもこれってなんか勿体なくない?

データ・ボリューム・コンテナはボリュームをコンテナ間で共有するためのものです。
というのが多くのサイトで目にする説明ですが、明らかに言葉不足です。こんな説明じゃ実体なんて分かるはずもなく生き殺し。
こうなる最大の理由はボリュームをコンテナ間で共有できないということが説明されてないことに尽きると思います(図があると尚良し ←)。

そもそも

Dockerは環境を持ち運べるようにしたものであって、データを移動できるようにしたものでは無い。
別にデータ・ボリューム・コンテナ経由でデータを格納したからって、結局データはホストに保存されるので ADD に対して可搬性は高くならない。

これで話は終わり。。

ところが、私を更に混乱させたのが、ボリュームだけでもコンテナ間で共有できるという情報だった。
じゃあなんでデータ・ボリューム・コンテナなんて使うんだ?
ますます理解できなくなってきた。

この後いろいろ調べた末、記事投稿時点でデータ・ボリューム・コンテナは不要だと判明しました。
続く

Docker を CentOS 7 に入れてみた

備忘録。

まず、Docker をインストールする上で、名前が複数あるのが紛らわしくて一旦手を止めた。

docker-engine とか docker-io をインストールと書いてあるサイトがある。

違いを調べたら、どうも Docker EE(Enterprise Edition) がつい先月(2017年3月)リリースされたばかりらしく、今までの無料版は Docker CE(Community Edition)になった模様。
(Ubuntu じゃないので、docker-io がサポート中かは今回未確認。)
http://kenoha.hatenablog.com/entry/2017/03/31/114418

よって、Docker CE for CentOS Distribution をインストールする。
以下にインストール方法が載っているので、順番にコピペする。
コマンドに -y オプションを添えてくれる優しい人達が書いてくれている。
https://store.docker.com/editions/community/docker-ce-server-centos?tab=description

アンインストール方法はこっちに書いてある。
https://docs.docker.com/engine/installation/linux/centos/#uninstall-docker

因みにそのままだと、いちいちホストでの Docker の操作に sudo を打たないといけない。インストール後は自動起動の設定に加えて、docker group への追加が案内されている。
https://docs.docker.com/engine/installation/linux/linux-postinstall/#systemd

ただし、コンテナの使いようによっては、危険を伴う可能性があるので Warning にリンクされているページをよく読むこと。

また、インストール時点での問題ではないものの、以下のように外からアクセスできるようにしていると設定によっては root が乗っ取られる(Docker コンテナを外部に公開するのは危険 とか言われる所以と思われる)ので、特に Docker.sock、不要なポート開放には注意とのこと。
Dockerでホストを乗っ取られた

Docker は既に作ってあるコンテナを起動したり、ホストからファイルを転送した程度なので、自分でコンテナを立ち上げたりはまだしてません(したい)
Webアプリを作るためにテスト環境から本番への以降が簡単なように(+ホストでやってグシャグシャになったときの再構成の手間を省くため)取り敢えず、しばらく Docker でゴニョゴニョする予定です。

どんな人でも安倍総理のここだけは素晴らしいと思うべきところ

最近アウトプットすることが非常に大事だと思うようになりました。言わなきゃ伝わらないし、書かなきゃ風化していつか忘れ去られてしまう。。

道徳的な話です。

安倍晋三内閣総理大臣も今年の12月で5年目になろうとしています。

とここで違和感を覚える人も居るでしょう。トータルで数えれば6年目になるからです。第一次安倍政権が発足したのは2006年のことですが、覚えている人も多いはずです。それから数えるともう10年です(早ぇ)。
余談ですが、この頃の映像はハイビジョン撮影されている物もあってもはやいつの時代のものか検討つかなくなりますが、最近流れてたものをたまたま見た時、安倍さんが若いことにちょっと驚きました。

でも、第一次安倍政権は長くは続きませんでした。当の安倍総理自身が病に掛かってしまったためです。この病気が国指定の難病であることは度重なる批判者の失言でかなり有名だと思います。
しかし、今の総理大臣は安倍さんです。もう上に書いた通りですが、2012年の12月に復活を遂げました。

長期政権となっていることや支持率の維持も凄いことだと思いますが、何より私が強調したいのは第二次安倍政権の発足です。
安倍政権は難病によって倒れましたが、何故だったのか。原因はストレスですが、どこにストレスの原因があったのか、もっと攻めれば誰が原因だったのか。野次や閣僚の辞任も影響があったと思いますが、内閣総理大臣という職が批判されることについて仮にやむなしとするならそれは内閣総理大臣であったことにあると思います。
そして、辞任後の総理大臣も相次いで辞任し、過去を振り返る番組があればこれを滑稽に扱って、少なくとも良い印象となるような扱いは私の知る限りではありませんでした。
しかし、それでも再び安倍総理は総理大臣となりました。

これは安倍総理の意志がどれほど固いものだったかを示していると思います。常に批判され、それによって難病を患ってしまった。更には過去を振り返っては政策などの中身には触れずに辞めたことばかり強調した酷い番組ばかり。このような状況でまた自身の病の原因となった職へ復帰すると言うのは並大抵の事では無いはずです。

過去に私は部活の部長していたことがあるのですが、部員と顧問の板挟みになり胃が痛くなる事がありました。だから私は、国の代表という部長とは比較にならない重い責務を負う中で、国民と野党とマスコミの批判に板挟みになるのは度を超える辛さだと理解しています。総理大臣だって皆が思っているほど良い立場では決して無いと思います。これまでの歴代の総理大臣を見ても戦後辞任して再度総理大臣に就任したのは吉田茂氏の一例のみです。

過大に賛美しているとは言わせません。難病を患った状況からの立ち直りなのですから凄いと思うのが当然です。

でどうしてこんな記事を書こうかなと思ったかというと、
https://togetter.com/li/656263
http://ameblo.jp/nadesikorin-fight/entry-12160638292.html
http://www.excite.co.jp/News/entertainment_g/20150124/Cyzo_201501_post_18086.html
lite-ra.com(Googleキャッシュ)
みたいな人達が一定数居るからです。マスコミが積極的にこういった過激な人達をカメラに写すので、嫌でも目に入る人はいると思います。
上記に挙げたような個人を侮辱したり、罵声を浴びせる行為は完全なる悪です。
たとえ政策に不満があろうともこういうところは素直に賞賛すべきです。
私はこの話を素晴らしいと思うし、国の代表である総理大臣が堅い意志を持って諦めない姿に自分も頑張らなくてはならないと思っています。だから一人の難病患者が闘って再び返り咲く話として道徳の教科書に載せるべきだと思いますし、後世まで語り継がれべき話だとも思います。

話は変わりますが、キム・ジョンナム氏の件について専ら見られるのは「ひどい事件だ」という意見です。たとえ出自に問題があったとしても、政治的に問題があったとしても、悪しきものは悪として戒められ、善きものは善として賞賛されて当然のことです。自分たちの国の代表に対してもそれは同じであって、もっと賞賛の声があって良いと思いました。

最後に断っておきますが、この記事を書いたことは言論の自由が保証されているので何ら問題ありません。そして、これを読んだあなたも正しいと思っていることがあれば、今すぐにでも書くべきです。

JavaScriptのES6表記でコードを圧縮出来るサイト

最近JavaScriptのコードを書いていて、ようやく昨日満足行くところまでコードを直したので、ファイルを圧縮しようとしたら、
// Error: Unexpected token: name (HENSUU)
とか出てきて、ググって紹介されているサイトは全滅で圧縮できなかったorz

JavaScriptのライブラリは~.min.jsというファイルを用意していることが多いです。このファイルは圧縮されたファイルになっています。なぜ圧縮するのかというと、不要な改行やコメントが無い方が高速に処理できるからです。

まあ、ほぼ確実にletのせいだろうと思って消してみたら案の定先に進んだ(ただし仮引数でまたエラーw)。

日本語でググるからこういうことになるんだってことで「javascript minify」で検索。
引っかかったサイトでは見事に圧縮できた。
http://www.minifier.org/
http://www.danstools.com/javascript-minify/
試した2つの内、上のサイトのほうが波括弧(})前のセミコロン(;)が消されてより圧縮されてた。

ECMAScript 2015(略称ES6、ECMAScript 6th)
↑これが今回曲者だったわけですが、やっぱブラウザが対応してるんだから使わない手はないでしょ。今書いてるコードを書き始めたときには無かった仕様ではあるけど、constとかは使うべきだと思ってます。こういうツール作ってる人たちも構文解析の仕様を変えないといけないし、大変だとは思うけど最新の書式のほうが書きやすいから是非対応して欲しいところ。

Xamarin Studio の.xib でViewを中央配置する方法

いきなりですが、Xamarin Studioの話です。最近(今年の4月)に無料になった今話題のAndroidとiOSのアプリを同じ環境で開発でき、さらにソースの一部を共通化できるIDEです。(人に聞かされるまで知らなかったけど)

取り敢えず、自分が何をしたかったのかの説明。

このソフトで今共同でアプリを開発していて、私は起動画面の作成をまずすることになりました。でも、起動画面は共通化できないらしい。なんでやねん(知らんがな)

でまずiOSのSplash Screenの作成をすることにしました。ただ、Xcodeでアプリ開発したことが無いので(だいたい何処のサイト見ても既にバリバリヤッてまっせな人が移行する記事ばかり)、まずはXcodeの方について調べたり。Asset catalog とかStoryboardとかやり方は幾つかあるみたいで、xibで作成することにしたものの画像ひとつ持ってくるだけでも一苦労(インターフェイスに慣れていないんで)。

それで早速Image Viewを置いてエミュレーターで起動してみたんですが、ずれて表示されてこのままではまともに表示できないと知り、取り敢えずロゴをど真ん中に表示させる方法を調べてみました。が色々試してはみたもののうまく行かず。取り敢えずサンプルプロジェクトを開いては閉じて(阿呆みたいだけどXamarin Studioは一度に2つ起動できないしこのために別のPCにインストールしたくない)、どうも中央揃えに設定している事は分かりました。

それで言葉を変えてはググった末、やり方の書いてあるページを発見しました。

Auto Layout with the Xamarin Designer for iOS

(でも見つけんの苦労した。)

Center Constraints(直訳:中央制約)ってところのやり方に沿ってやってみたら、Align Center XとAlign Center Yを設定することができました。
具体的には、中央配置したいViewにカーソルを持って行くと四角のポチが出現するので、真ん中をドラッグ。公式サイトの画像の様にバッテンが出てきたら、画像を囲っている(背景の)Viewの中心を通るように縦横に点線が出てきているはずなので、その線にドロップします。縦横両方やれば、固定されると思います。

しかも親切にも.xibでのLaunch Screen のサンプルまで公式サイトにあるんです。(ただし、作成後に気付いて失望)

ここにたどり着くまでに3時間掛かってしまいました。で出来たのはロゴが出るだけの起動画面(え

どうもXamarinは最新版とちょっと前のとで変わってるみたいで、ネットに漂っているXamarinの情報は例え4月時点の記事であってもあれってなるところがありました。日本代理店のブログの内容もちょっとタブの名前が変わってたりして右往左往してしまいました。

更に私はMacのXamarin Studioを使って開発してますが、Visual Studio版もあってややこしい(公式サイトも上の方にボタンが有る)ので参照するときは注意して下さい。

スポンサードリンク

ブログ内検索

プロフィール

ふじこlp

Author:ふじこlp
はてなブログへ移行しました。https://higechira.hatenablog.com/

ゆとりの大学生です。どれくらいゆとりかというと土曜日に通常授業を受けたことがただの一度もありません。

IBM時代のT43は観賞用となりましたが、X61は現役。
スクエアThinkPad X Series 最高です。
MacBook Pro 始めました。がやはりThinkPadに勝る打ち心地は存在しませんね。

カレンダー

11 | 2019/12 | 01
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

天気予報


-天気予報コム- -FC2-

フリーエリア

ブロとも申請フォーム

QRコード

QR

アクセスカウンター