« 2016年7月 | トップページ | 2016年9月 »

2016年8月

2016年8月30日 (火)

帰省メモ:宇和海と八幡浜のこと

前回(「帰省メモ:伊予灘のこと」)の続き。

伊予灘側から山を越えて宇和海側に出ると、 こちらは一転リアス式海岸です。 こんな感じで向こう岸まで泳いで渡れるような湾が延々と続きます。

宇和海

今は知りませんが、 私の子供の頃はこのリアス式の湾の中をポンポン船が行き交っていました。 曲がりくねった湾に沿って細い道をぐねぐね進むより、 船で湾を横切った方が手っ取り早い。

私の父方の祖父もポンポン船を乗り回していました。 ある時、私と弟を連れて三瓶の町に行った時の事。 町に船で乗りつけ、私たちを船に残したまま用事に出かけたら、 ロープがほどけて私たちが流されてしまったことがあります。 船の上で私らがあわてていると、 ポンポン船で同じように入ってきたおっちゃんが、 笑いながら「なんや、流されとるがか」とロープを拾って引っ張って戻してくれました。 そういう世界。

そんな地域柄のせいか、 Googleマップのこの辺り(三瓶-明浜)には、 ストリートビューに加えて「ポンポン船ビュー」があります。 このように、ストリートビューのルートが海の上にもあります。 明らかに、「Googleポンポン船」が沿岸を走っています。

ポンポン船ビュー

Google マップで愛媛県西予市三瓶町周辺のストリートビューのルート表示

先ほどの写真の場所をポンポン船ビューで海側から見れば、 こうなります

この対岸を宇和島自動車バスが走っていくのが見えるのは40年前と変わらない光景です。 このあたりのバス路線は宇和島自動車の領域です。 この「宇和島バス」ではなく「宇和島*自動車*」といかつく呼ばせる名前が子供心に響いていました。

このバス、 湾沿いのぐねぐね道を走っていきます。 今はかなり整備されてきていますが、 当時の道は細く、海側にもガードレールなどあまりありませんでした。 車の行き違いがあると、 バスはこのガードレールがない海側のぎりぎりに寄せます。 本当に信じられないくらいぎりぎりに寄せます。 車窓から覗き込んでも、 下に道路の端が見えていません。 目の下そのまま海です。 これが子供の頃、本当に恐ろしかった。 三瓶から八幡浜までの海回り約一時間は恐怖の区間だった。

「宇和島自動車」といういかつい響きと、 この恐怖体験のため、 宇和島自動車バスは私の中ではとても強面の存在です。

今の宇和島自動車の路線図を見ると、 今はもう、八幡浜から三瓶までの完全な海回り路線はなく、 トンネル経由での八幡浜-周木路線、海回りは八幡浜から穴井止まりの路線に分割されていますね。 リアス式は、山側をトンネルでぶち抜いてしまえば、 湾の奥の町から町へは比較的簡単に行けるようになります。

余談ですが、 世の中には宇和島自動車のファンの方のページもあるようです。 (2005年から更新されていないようですが)

宇和島自動車ファン

このページを見ていて思い出しました。 昔の宇和島自動車バスの行先表示って、 毛筆体で書かれていました。 こんな感じ。

昔の宇和島自動車バス

宇和島自動車ファン」の「懐かしい写真」から

強面です。

さて、八幡浜。 私の生まれた町です。 八幡浜に来るのは六年ぶりです。 そのときは母方の祖母の葬式に慌ただしく来て帰っただけなので、 まともに滞在するのは十年ぶりくらいですか。 色々変わっています。

まず、 フェリー乗り場の横に小綺麗な道の駅ができていました。 で、道の駅と魚市場をつなげ、 魚市場から道の駅に店を出しています。 道の駅からは向かいの権現山のてっぺんまで続くみかん畑の眺めがよい。

道の駅から権現山

重要な動線であるフェリー乗り場の横にこれを作ったのは、 なるほどなあ、と思いました。 逆に駅周辺は少し寂しくなったかな。 ショッパーズ(旧ダイエー、その前はイズミだったっけ?)は更地になってたし。

港周辺は他にも色々できています。 ショッピングモール(フジグラン北浜)ができているし(おかげで24時間駐車可だった北浜駐車場がショッピングモールの駐車場になっていて、車の置き場所に困った)、 モール泉なるもの掘り当てて、温泉施設がちょうど数日前にオープンしているし。 市立病院も建てかえているようだし。 しばらく来なかった間、 ばあちゃんも亡くなって八幡浜の家も空き家になってしまったし、 自分の中では過疎の最終段階のように思ってしまっていたけど、 いろいろ動きがあるし、子供も結構いるし、 色々がんばっていることが分かってうれしかったです。 家は空き家になっているのに、 どんどん便利になってるよ。 その空き家に泊まって、 例の温泉にも入ってきました。 触れ込み通り、本当に黒っぽい湯でした。

ところで、 魚市場でうちわえびを見かけました。 この写真のカブトガニみたいなやつ。

うちわえび

これ、 シンプルに塩ゆでにしたら最高にうまいんだけど、 うちは私と次女しかエビを食べないし、 スケジュール的に持ち帰り難しかったから諦めた。 でもやっぱり、クール宅急便で沼津まで送ってもらえばよかったかなあ。

まあ、おとなしく、 削りかまぼこ(ごはんにかけるとうまい)と吉見菓子舗のしぐれようかんを買って帰ってきました。

なんか八幡浜はちゃんぽん推しらしいのだが、 子供の頃は別にちゃんぽんやってなかったよなあ。 最近?

そういえば、南予博やってたんだっけ?

おまけとして写真二つ。 八幡浜市街の港と、 郊外の海岸(真網代のあたりだったっけな)から佐田岬方面の眺め。

港

佐田岬方面

2016年8月25日 (木)

帰省メモ:伊予灘のこと

盆休みに妻子を連れて愛媛県八幡浜市に墓参帰省しました。 せっかくですので、色々懐かしかったことなど書き残しておこうと思います。 まずは、伊予灘のこと。

今、車で松山から八幡浜へ行くには、 内陸を走って、 内子-大洲-夜昼トンネルがメインルートとなるでしょう。 が、私のお気に入りは、 伊予灘にそって長浜-瞽女ヶ峠バイパスを通るルートです。

伊予市を出て、 予讃線の旧線沿いに三秋信号所跡の峠を越えて伊予灘に出ると、 そこから磯崎まで、のたりとした伊予灘が延々と続きます。 こんな感じ。

伊予灘

私はこの伊予灘のとぼけた風情が好きです。 途中の下灘駅は青春18きっぷのポスターになったりしてますね。 そういえば、 下灘駅を通り過ぎる際に、 ちょうどJR四国の観光列車の「伊予灘ものがたり」が駅に停まっていました。 この列車もいつか乗ってみたい。

伊予灘ものがたり

海沿いに走っていると、 そのうち沖に青島が見えてきます。 最近では猫の島として有名です。 私の母親が一時期ここの小学校の先生をしていたそうです。 もう半世紀前の話です。 小学校はとっくに廃校になっています。 (車の窓にティッシュの箱が映り込んでいるのは気にしない)

青島

今でこそ海沿いに二車線のきれいな道ができていますが、 これは海岸を少し埋め立てて造ったもので、 予讃線のすぐ脇が海でした。 串駅の先の川とか、河口が大きく山側に入り込んでいて、 汽車が海の上の橋を渡るような感じだったなあ。

そういえば、この「串」という駅名、 子供の頃めっちゃかっこええと思っていました。 しかもこの駅、 短いプラットホームが無造作にあるだけの無人駅です。 こういうあまりにしょぼい無人駅はこの辺りにいくつかありますが、 こいつらは駅名表示板でも一人前扱いされていませんでした。 例えば、下灘駅の駅名看板は今でこそこうなっていますが、

下灘駅

Wikipedia 下灘駅より

国鉄時代は次の駅が「きたなだ」でその下に括弧書きで「(くし)」と書かれてました。 正規の駅と見なされていなかった。 そういうところもたまらなかった。 高野川とか西大洲とかもそんな扱いだったはず。 市坪もそうだったっけな。

長浜は、 国鉄時代、伊予市から大洲までの間での唯一の急行停車駅でした。 今は青島への港であることと、肱川あらしが有名でしょうか。 むかし、竜宮城を模した風情の水族館があり、 行ったことがあります。 売店で海ほうずきを50円で買った覚えがある。 調べてみたら昭和60年に閉館していました。 今は長浜高校がなんやら活動しているらしい。

ながこう水族館は、 大洲の竜宮城!

(そういえば、長浜は今は大洲市なのか)

長浜から先は肱川を遡って大洲へ向かう予讃線(旧線)と別れて、 さらに海沿いを進みます。 そのうち遠くに伊方原発が見えてきます。 この写真だとちょっとわからないか。 遠く霞んでいるあたりにあるはず。 この日、 ちょうど原発再稼働の日だったらしく、 色々騒いでいたらしい。

櫛生あたり

このあたり、 青っぽい岩がよくあります。 こんな感じ。

青い岩

こういった岩は中央構造線沿いに分布しており、 きれいなやつは「伊予の青石」として庭石にしたりします。

で、喜木津の手前から瞽女トンネルに入り、 宇和海側へ抜けます。 この瞽女トンネルができる前、 瞽女ヶ峠を越えるのが大変でした。 なので、八幡浜へは大洲経由がメインルートだったのでしょうが、 このトンネルができてから、 時間的にはそんなに大きく変わらないんじゃないかな。

私が子供の頃、 四国の国鉄線はすべて非電化で、 急行がメインの長距離列車でした。 予讃線の特急は「しおかぜ」が日に3往復だけだった。 で、松山を越えて宇和島方面へ行く急行といえば、 急行「うわじま」でした。 国鉄色のキハ58系ですよ。 わたしのtwitterアイコンはこの「うわじま」のヘッドマークです。 (ちなみに、このアイコン、写真ではなく、ペイントブラシで描いた図形です。 十年ほど前に何の気なしに描いてみたら意外とそれらしくできたので、そのまま使っています)

当時、 予讃線はまだ内子経由のルートができておらず、 この海沿いの旧線が本線でした。 足場が悪いせいか、 この旧線を「うわじま」は時速40-50キロくらいでとろとろと走ります。 伊予市から次の停車駅の長浜まで、30分かかっていました。 これ、「うわじま」全線で最長区間じゃないかな。 さらにその後、長浜から大洲まで25分くらいかかります。 子供の頃は、帰省のたびにこの区間が死ぬほど長く感じていました。

ところが、 今となってはこの風景が原体験のように刷り込まれており、 急行「うわじま」がリバイバル運転された際の前面展望DVDなど買い込んでいて、 なんか気分が落ち込んで調子が悪いときに虚ろな目でだらだらと見ていたりするのです。

PC303 リバイバル急行「うわじま」(DVD2巻組作品)

子供の頃はこの30分が苦行だったのに、 今はそれを好んで延々見ているわけですよ。

久しぶりにそのルートを走って、懐かしかったです。

週末元気があれば、 宇和海側のことも書きたい。

2016年8月 4日 (木)

Windows 10のコンテナ機能とDocker for Windowsを共存させる上での問題点(追記あり)

覚え書き。

前回のエントリで書いたように、 Windows 10 Anniversary Update(version 1607)では二種類のコンテナツールを利用できます。 (Windows 10 コンテナはまだ動かせていないけど)

ツールコンテナで動かすイメージ提供者
Windows 10 コンテナWindowsイメージMicrosoft
Docker for WindowsLinuxイメージDocker

これらを共存させ、 dockerコマンドで操ることができれば、 Windows 10上でLinux環境もWindows環境もさくさく立ち上げることができて便利だと思うわけです。

で、両者が共存できるか試してみました。

結論から言えば、「両者を同時に動かすことはできない」なんですが、 試して分かった点について書き留めます。

【2016/09/28 追記】 Docker for Windowsのベータ26以降、Docker for WindowsでLinuxイメージもWindowsイメージも両方取り扱うことができるようになりました。 「Windows 10上のコンテナでLinuxイメージもWindowsイメージも同時に扱えるようになった」を参照。

コンテナ機能の構造

これらのツールを、ざっくり以下の二つの部分に分けます。

  • CLI部分(要するにdockerコマンド部分)
  • エンジン部分(Docker Engine)

エンジン部分は両者ともサービスとして稼働し、 Hyper-Vを間に挟んでコンテナを動かします。 Windows 10コンテナはWindowsのイメージを動かしますし、 Docker for WindowsはLinuxのイメージを動かします。

Windowsコンテナには本来のコンテナに近い形態の「Windows Server Containers」と、 コンテナホストとコンテナのカーネルをHyper-Vで分離する形態の「Hyper-V Containers」があり、 Windows 10コンテナでは「Hyper-V Containers」のみがサポートされています。

両エンジンのWindowsサービスとしての名前は以下の通り。

  • Windows 10コンテナ: Docker Engine(いかにも仮の名前っぽいので、そのうち変更されそう)
  • Docker for Windows: Docker for Windows Service

一方、 CLI部分は両者ほぼ同じです。 Windows 10コンテナの方が少し新しいぐらい。 実際、 CLI部分を両者交換しても、 動作に影響はありませんでした。

ちなみに、docker versionコマンドを実行すると、 以下のような結果になります。

Windows 10コンテナの場合。

PS C:\Temp> docker version
Client:
Version: 1.13.0-dev
API version: 1.25
Go version: go1.6.3
Git commit: 87e48ec
Built: Wed Aug 3 20:33:19 2016
OS/Arch: windows/amd64

Server:
Version: 1.13.0-dev
API version: 1.25
Go version: go1.6.3
Git commit: 87e48ec
Built: Wed Aug 3 20:33:19 2016
OS/Arch: windows/amd64

Docker for Windowsの場合。

PS C:\Temp> docker version
Client:
Version: 1.12.0
API version: 1.24
Go version: go1.6.3
Git commit: 8eab29e
Built: Thu Jul 28 21:15:28 2016
OS/Arch: windows/amd64

Server:
Version: 1.12.0
API version: 1.24
Go version: go1.6.3
Git commit: 8eab29e
Built: Thu Jul 28 21:15:28 2016
OS/Arch: linux/amd64

問題点

両者ともCLIとエンジンの間の通信は名前付きパイプを通して行っています。 この名前付きパイプの名前が"//./pipe/docker_engine"に固定されています。 ざっと見、この名前を変更できる設定を見つけることはできなかった。

なので、 一方のエンジンが稼働中に、 もう一方のエンジンを起動しようとすると、 「名前付きパイプのオープンに失敗した」エラーで起動失敗します。 イベントログを見てみると、 "fatal: open //./pipe/docker_engine: Access is denied." とか出てます。

ということで、 両者を同時に稼働させることができません。 私は、両方のサービスの起動方法を「手動」に設定して、 手動でエンジンを切り替えてます。

あと、 直接不具合は経験していないけど、 両者ともに作業フォルダとして%ProgramData%\Docker以下を使うことがあるようで、 両者の作業が干渉しないかちょっと心配。

今後どうなる?

うーん。

CLI側はdockerコマンドの-Hオプションに名前付きパイプの名前を指定すれば、 それと通信するようになるんじゃないかな。

とすると、どちらかのエンジンが使う名前付きパイプの名前を変更するのかなあ。 デフォルトはどっちになるんだとか、 面倒にならなければいいんだけど。

希望としては、 同一のdockerコマンドで、 LinuxイメージもWindowsイメージも、 どっちのエンジンとか気にせずに操れるようになればうれしいんだけれども。

Windows 10のコンテナ機能(Docker for Windowsじゃないよ)が動かない話と気になった点

覚え書き。

Windows 10 Anniversary Updateが公開され、 それに伴い、Windows 10のコンテナ機能も一般利用可能になりました。

で、Windows 10のコンテナ機能を使ってみようとしてみたところ、

  • 手順通りにやっても動かない点
  • 気になった点

があったので、それを書き留めておきます。

Windows 10のコンテナ機能とは

Windows 10のコンテナ機能とは、

  • Microsoft純正の、
  • docker互換である、
  • 「Windowsコンテナ」(Windows Server 2016の機能)の、
  • サブセットをWindows 10に載せたものであり、
  • (プレビューではない「正式」なWindows 10としては)Windows 10 Anniversary Update(version 1607)以降で利用できます (でもまだ仕上がってない感触)。

前回のエントリで動かした Docker for Windowsとはまた別物です。

ツールコンテナで動かすイメージ提供者
Windows 10 コンテナWindowsイメージMicrosoft
Docker for WindowsLinuxイメージDocker

でも、どちらもdockerコマンドでコントロールできます。

Windows 10のコンテナ機能の有効化方法

コンテナ機能を利用できるのは、 Windows 10 (version 1607)のProまたはEnterpriseです。

有効化手順は、 「Windows コンテナーに関するドキュメント」の中の 「Windows 10 の Windows コンテナー」 の通り。

問題点

上記の「Windows 10 の Windows コンテナー」の手順中の、 「3.コンテナーの基本イメージのインストール」が動きません。

この手順は、 最初のイメージとしてNano Server(最小構成のWindows Server 2016)ベースイメージをダウンロードし、 それを登録するものです。 現状のWindows 10のコンテナ機能は、 リポジトリからのpullが実装されていないため、手動でこれを行うわけですね。

手順には以下のコマンドを実行しろとありますが、

docker load -i nanoserver.tar.gz

実際に実行してみると、エラーになります。

PS C:\Temp>docker load -i nanoserver.tar.gz
58684737b3d1: Loading layer [==================================================>] 358.4 MB/358.4 MB
re-exec error: exit status 1: output: ProcessUtilityVMImage C:\ProgramData\Docker\windowsfilter\facecd91a2eee5e77d3046e9
a4b63daffe037fc96725e6d6ca5b847ebde016ce\UtilityVM: The process cannot access the file because it is being used by anoth
er process.

素直に受け取ると、 一時ファイルをクローズせずに次の工程へ渡している単純ミスっぽいけど。

回避法

見つけられていません。 まあ、どうせすぐ直すだろうと諦めた。

MSDNの「Windows Containers」フォーラムで同じ問題が報告されていましたので、 Voteしました。

re-exec error when trying to load nanoserver image (MSDN "Windows Containers" Forum)

でも他にVote無いんだけど、みんなちゃんと動いているのかな。

他に気になる点

Windows 10のコンテナ機能に対し、 ユーザー権限(非管理者権限)でdockerコマンドを実行するとエラーになります。 こんな感じ。

PS C:\Temp> docker version
Client:
Version: 1.13.0-dev
API version: 1.25
Go version: go1.6.3
Git commit: 87e48ec
Built: Wed Aug 3 20:33:19 2016
OS/Arch: windows/amd64
An error occurred trying to connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.25/version: open //./pipe/docker_engin
e: Access is denied.

Docker Engine相当のものがWindowsサービスとして動いており、 それと通信するための名前付きパイプのアクセス権が管理者に限定されているのでしょう。

dockerコマンドによって危険なコンテナを動かすこともできますし、 dockerコマンドに管理者権限が必要だというのは分かります。 まあ、もうちょっとユーザー向けなエラーメッセージ出したほうがいいんじゃない、というのはあるけど。

でも、 Linuxでのdockerの使われ方を参考にするなら、 グループを作ってそのグループのユーザーのみアクセスできる、 という形態にしないと、 使い勝手が悪くなるんじゃないかなあ。

一方、 Docker for Windowsは、 現状ユーザー権限でdockerコマンドが問題なく動いてしまいます。 こっちはこっちで心配になる。

Docker for Windowsで"Network timed out"と言われてイメージを取ってこれない問題

覚え書き。

問題点

典型的には、 「Getting Started with Docker for Windows」の「Step 4. Explore the application and run examples」の手順にある、

PS C:\Work> docker run hello-world

を実行しようとすると、以下のようなエラーが出ます。 (問題の個所を赤字にしている)

PS C:\Work> docker run hello-world
Unable to find image 'hello-world:latest' locally
Pulling repository docker.io/library/hello-world
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Network timed out while trying to connect to https://index.dock
er.io/v1/repositories/library/hello-world/images. You may want to check your internet connection or if you are behind a
proxy..

See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.

今回はリポジトリからイメージをpullしようとしているところだけど、 外部のネットワークに接続に行く局面で同じ問題が出るのではないかな。

発生条件

今回問題が起きて、対処した環境は以下。

  • OS: Windows 10 Pro (x64) version 1607 (build 14393.10)
  • Docker for Windows 1.12.0 (「プログラムと機能」上で表示されるバージョンは2.0.5968)

回避法

IPv6を無効にしたら通るようになりました。

Docker for WindowsはHyper-V必須ですので、 「コントロールパネル」-「ネットワークとインターネット」-「ネットワーク接続」へ行くと、 Hyper-V関連の接続を含めて色々な接続があります。 そこで、実際に外部に直接繋がっている接続の「プロパティ」を開き、 「ネットワーク」タブの「インターネットプロトコルバージョン6 (TCP/IPv6)」のチェックを外しました。

備考

なんでIPv6を無効にしてみる気になったかというと、 ログファイル(Docker for Windowsの「Diagnose & Feedback」から出せる)に以下が出ていたからです。 (注目点を赤字にしています。各行のヘッダ部は省略)

Found dns server xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
Forward DNS query on udp to xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:53
Exchange error: dial udp: too many colons in address xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:53

※ "xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx"は実際には私のマシンのDNSアドレス

内部でアドレスをどういう形式で持っているかわからないけど、 これ、"[xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]:53"となっているべきだよなあ。 というわけで、なんかバグってるんじゃなかろうかと疑いました。

余談

Docker for WindowsはPrivate Beta時代から試しているんだけど、 実はずっとまともに動かせていませんでした。 今日、Windows 10 Anniversary Updateを入れて、 新機能のWindows 10のコンテナ機能を試すついでにまじめに調べてみました。

で、今度はWindows 10のコンテナ機能の方がまだうまく動かせていない。orz

« 2016年7月 | トップページ | 2016年9月 »