Dockerを味見してみた(追伸)の追伸

Dockerを非rootで操作するには/etc/default/docker.io の DOCKER_OPTS の設定を・・・なんて昨日の記事では書いてしまったが、そんな面倒なことをしなくてもできるらしい。

単純にユーザーが docker グループの権限を持っていればいいだけなのだそうだ。

つまり、

とした後、ログインしなおせばよい。

Dockerを味見してみた(追伸)

Dockerの味見の際に「rootで操作するもののようだ」と記載しましたが、一般ユーザーで触る方法がわかりました。

ホストがUbuntuの場合には、/etc/default/docker.io の DOCKER_OPTS の設定を

となるように修正し、

として Docker を再起動、

として環境変数を設定、

で一般ユーザーでもアクセスできるようになりました。

Dockerを味見してみた

ネット散策していたら最近の仮想化技術(コンテナ技術?)で Docker というのが流行っているらしいことがわかりました。比較的簡単に試せるみたいなので、さくらのナリッジのこちらの記事を参考にちょっと試してみます。

1.環境構築

母艦環境は普段使っている Ubuntu14.04 LTS 64bit です。
(Dockerは64bit環境のみサポートのようです)

Synapticで「docker」で検索すると「docker.io」というのがでてきます。説明を見ると「Linux container runtime」ということなので、これがDocker環境のようです。
こいつにチェックマークをつけてインストールします。

インストールが終わったら、コンソールで

$ docker

とすると、説明が出てきました。

2.Hello Worldを試してみる

まず、ちょっと試してみます。

となってエラーになってしまいました。

こちらをみるとどうやら基本は root で弄るもののようです。でも、一般ユーザーでも触る方法があるようなのですが、今回はrootで動かしてみます。

待つこと30秒位でしょうか。イメージをダウンロードした後、表示されました。
2回目はすでにイメージがローカルにあるので、一瞬で表示されました。

3.WordPressを動かしてみる

追っかけるだけになってますが、同様にWordPressを動かしてみます。

・・・として、イメージが生成されるようです。

で、実行。

ブラウザで 127.0.0.1:8080 にアクセスするとWordPressが動いているのが確認できました。

で停止、スタートも確認できました。

4.不要になったコンテナの削除

最後に不要になったコンテナを

として削除しました。イメージの方は、

として削除しました。

まだまださくらのナリッジのこちらの記事にはたくさん説明があります。どんなことができるのか解りやすくて助かります。

フレッツ光だけど上流は100Mbps?

いま、単身赴任で静岡県に住んでいます。単身赴任先にはフレッツ光を引いているのですが、はっきりいって本来の自宅の方が速いです。自宅はマンション共用で各戸には100MbpsのEthernetが引かれているのですが、CDN(Contents Delivery Network)経由でダウンロードするものでメジャーなものは大抵の場合には上限の11か12MiB/秒くらいに張り付きます。

しかし、フレッツ光ではもちろん上流の影響なのでしょうが、なかなか10MiB/秒を超えません。それどころか数MiB/秒を超えることもなかなかありません。
今回、Windows10 Technical Previewをダウンロードしていたら、めずらしく速度が出ていたのですが・・・

Screenshot from 2015-01-27 22:31:50

結局12MiB/秒に壁があります。12MiB/秒☓8bit=96Mbit/sで、見事に100Mbpsに壁が見えてます・・・・。まあ、ルーターのせいかもしれないですが。

ぜんぜん1Gbit/sに行きそうにない光回線の話でした・・・。

ちょっと気になるかなぁ・・・

時々、Hi-netの自動処理震源マップとかを見てたりするのですが、ちょっと気になったので記事にしておきます。

下の画像は、2015年1月13日午前2時くらいに見た本州中部の過去30日の震源マップです。

TONANKAI_MAP

一方、下記の画像は気象庁のWebサイトから持ってきた東海地震の想定震源域の図です。

shindo_s

これらを重ねあわせてみました。

OVERLAY

想定震源域の赤い線の北半分の部分の少し内側に沿って地震が発生していることがわかりますか?

過去7日の震源マップも持ってきてみました。

TONANKAI_MAP7

これに想定震源域を重ねあわせると、

OVERLAY7

となります。やっぱり想定震源域の赤線の少し内側に沿って起きているように見えますよね・・・。

大きな地震の前にはその周辺域で小さな地震が増えるという話も読んだことがあるので、ちょっと心配です。

 

Ubuntu MATE 32bitをUSBメモリにインストール

Ubuntu MATE 32bitをUSBメモリにインストールしてみました。

なぜMATEかというと、通常のデスクトップ環境ではやはり重いので、なるべく軽いものにしたかったためです。

今回も32bit版をインストールしました。ダウンロードはこちらから。

いつものように、まずVMware上で一度インストーラISOイメージで仮想マシンを作って起動します。その後、一旦シャットダウンして、仮想マシンからHDDを取り除きます。一度起動するのは、仮想マシン作成直後はHDDを取り除けないからです。

次に、再度、インストーラISOイメージで仮想マシンを起動します。
起動して試すだけかインストールするかの選択画面がでたところでUSBメモリを取り付けます。今回は、新たにSanDiskのExtreme USB3.0 64GBを使ってみました。USBメモリを取り付けたら仮想マシン側に認識させ、その後でインストーラで「Ubuntuをインストール」をクリックします。

あとは普通にHDDにインストールするのと変わりませんが、データ領域を多めに取りたかったのでパーティションは手動で分けました。

インストールが終わったら、仮想マシンを終了し、PCを再起動します。この時にBIOSで内蔵SATAを禁止します。

再起動したら、過去の記事同様にいろいろ設定します。

  • SATAの禁止(内蔵HDDへのアクセス禁止)
  • /etc/fstabの設定(tmpfsの設定、マウントオプションにnoatimeを追加など)
  • 内蔵時計のUTC設定をローカルタイム設定に変更

など。

SATAを禁止したら、再起動後に内蔵HDDが見えない状態になっているのを確認します。あとは内蔵HDDのつもりで作業すれば大丈夫。

引き続き、いろいろやりますが、こちらが参考になります。

それにしてもSanDisk Extreme USB3.0 64GBは速いです。

 

Linux上でCUPSプリンタを共有する

先日購入したBrother HL-2240Dですが、Windowsから使ったりLinuxから使ったりで結構面倒なことになっています。こんなことなら、LAN内蔵モデルにしておけばよかったと後悔しています。

といっても買い換えるわけにもいかない(最悪、それもないではないですが・・・)ので、何とかしていきたいと思います。

まずは、どれかマシンを決めてUSBで接続しておくことにします。ここでは、LinuxMint17 32bitを実行しているAthlon5350マシン(ブログ記事にはしていないのですが、結局BIOSTARのCeleron847マザーは突然再起動病が収拾せず、引退させました。代わりにAthlon5350を導入しました)に接続することにします。

ドライバのインストールに先立って、IPアドレスを固定します。今回はルータでDHCPの固定割り当てをすることでIPアドレスを固定しました。

次にプリンタドライバをインストールしますが、プリンタドライバのインストールは以前の記事とまったく同じ方法でテスト印刷まで行きました。

で、共有をかけてみます。
「システム管理」→「プリンタ」でプリンタの管理ウインドウが開きます。

Screenshot-プリンター1

サーバーメニューで「設定」を開きます。

デフォルトではすべてチェックが外れていますが、

  • 共有するので「このシステムに接続されている共有プリンタを公開する」にチェック
  • IPPプロトコルを使うので「インターネットからの印刷を許可する」もチェック
  • どうせ家庭内ネットワークであり、グローバルアドレスは持ってないので「リモート管理を許可する」もチェック
  • 「ユーザーにジョブのキャンセルを許可する」もチェック

します。

Screenshot-2

プライベートアドレスを割り振った家庭内ネットワークであり、外部から直接接続される可能性のあるIPv6もルータで殺してある(IPv6ブリッジ、IPv6パススルーを禁止してある)ので、割り切った設定です。自宅内専用なのでファイアウォールも入っていません。

この状態でhttp://127.0.0.1:631/をブラウザで開くと以下のようになりました。

Screenshot-3

この状態から他のPCからは見えるのに印刷できない状態でだいぶ悩みました。サーバの設定も「リモート管理を許可する」をチェックしても反映されません。また、上記画面で「管理」を押すと設定画面になるのですが、やはりリモート管理が許可できません。(ユーザーがlpadminグループに所属していないといけないようなのですが、少なくとも見掛け上はそう見えています)

この手のパターンは、何かの設定ファイルが読み込まれていない、とかそんな感じです。そこで、一旦PCを再起動したところ・・・・「リモート管理を許可する」ができるようになりました。
この状態でネットワークでつながった別のUbuntuマシン上で「プリンター」を開いて「追加」を押すと、ネットワークプリンタの中にAthlon5350が出てきます。そして、これを選択するとネットワークプリントができるようになりました。(ただ、このPCは別途ドライバをインストールしたことがあるので、ドライバのインストール要否はわかりません)

とりあえずLinuxからはそれなりに共有できるようになったようです。

MediaTekのスマートウォッチ用SoC

これまたネットを彷徨っている際に見つけたものです。

きっかけはいつものHackaDayの記事です。

「まるでArduinoが555のようにみえる」という書き出しで始まる記事ですが、「364MHzの32bitプロセッサ、8MBのRAM、GSM、Bluetooth、LCDコントローラ、PWM、USB、その他たくさんのものが入ってZippoよりも小さくてダンボールよりも薄い。これがわずか3ドル。使わない理由がない」という記事です。

このチップ、$12で売られている”Gongkai Phone”という携帯電話・・・”Gongkai”は中国語では「公开」と書くようで、日本の漢字を当てると「公開」となります・・・のSoCとして使われているもののようです。Gongkai Phoneがどんな携帯電話かというと、こちら(GIGAZINE)に日本語の記事がありました。

調べていくと、MediaTekのMTK6260というチップが引っかかってきて、スマートウォッチなどにも使われているようです。(後の紹介ビデオの説明ではMT6260はすでに市場で$30を下回って販売されているスマートウォッチに使われているとか・・・)
あと、単体のGPSトラッカーなどにも使われているようです。

MediaTekは最新のエントリークラススマートウォッチ用のチップセットとしてMT2502というのをリリースしているようです。(Youtubeでの紹介ビデオ
このチップのTechnical Briefを見ると、

  • ARM7EJ-S(最小26MHz、最大260MHz?)
  • Bluetooth4.0
  • FMラジオ受信(データ放送も受信できるみたいです)
  • シリアルFlash I/F
  • VGAまでのCMOSカメラI/F
  • UART、USB1.1、SDIO、SDストレージなどのI/F
  • キーパッドI/F、SIMコントローラ、RTC、PWM、LCDコントローラ
  • AD/DAコンバータ
  • GSM/GPRS無線フロントエンド
  • リチウムイオン電池制御

などを含んでいるようです。(ちょっとちゃんと読まないと怪しいかも)
MCMとしてDRAM256MBを含んでいそうな感じの記事もあります。(ビデオでもメモリを統合している、という説明があります)

残念ながら日本ではGSM/GPRSは使えないので萱の外という感じもしますが、海外では旧世代のGSM/GPRSは回路コストも消費電力も抑えられるようになってきたので、IoTの接続手段としてしぶとく生き残っていくのかもしれません。

STM32F401で遊んでみる(5)

9.printf()やgetc()を使ってみる

mbedを挿入した際のログをdmesgコマンドでみてみました。

よくみると、USBストレージだけではなく、ttyACM0というデバイスが追加されていることがわかります。

調べてみると、Serialクラスでprintf()やgetc()などが使えそうです。プログラムの方は、

としてみました。内容は、

  • シリアルコンソールを115.2kbpsで開いて、メッセージを出力します。
  • 読み出せるキャラクタがあるかreadable()で確認
    (これをやらないとgetc()はキーが押されるまで動作をブロックします)
  • 読み出せる場合にはgetc()で読み出し
  • 入力文字を判別してcの値を増減
    (キーの値が読めているか確認するため)
  • ボード上のUSERスイッチが押されていない場合はcの値に応じてLEDを点滅
  • ボード上のUSERスイッチが押されている場合には文字を多数出力
    (本当に115.2kbpsでているか確認したいため)

としています。

プログラムを作成したらコンソールを一つ開いて、

としてシリアルコンソールを115.2kbpsで開きます。

その後、compile(と書き込み)を行って動作を確認しました。

STM32F401で遊んでみる(4)

7.ソースコードをさらに改変してみる

そのままIDEのウインドウを閉じてしまっても、IDEの左側の「Programu Workspace」の中の「My Programs」の中にツリー状に残るようです。

こんどは別のテストをしてみるため、importしなおしてみましたが、この時にプロジェクト名も変更してみました。そうすると、「My Programs」の中にもう1つツリーができました。

次の変更はボード上のボタンを使ってみます。ポート割り当ては、「USER_BUTTON」と「PC_13」のようなので、まずは「USER_BUTTON」でやってみます。

修正後のソースは

としてみました。

これでコンパイルすると・・・ボタンを押すと点滅が高速になりました。

8.ここまでのまとめ

書くと長いですが、わかってしまえば実際の作業はあっという間です。
特に何よりもありがたいのは開発環境のインストールが必要ないことです。これでどこでも開発ができてしまいます。

一方で、実際に触ってみたmbed環境はIDEこそ本格的な開発環境の雰囲気ですがライブラリ等まで考えて見てみるとArduinoを強く意識しているように見えます。
より本格的な開発環境もWeb上で完結してしまうと楽ちんでいいですね。