Docker pullが失敗する

仕事で機械学習を覚えるように言われ、手探りで始めることに。とりあえずdocker+tensorflow+jupyter notebook環境を構築すべく仮想マシンにubuntuを入れ、dockerをインストール。次にtensorflow-notebookを入れようとすると、
$ sudo docker pull jupyter/tensorflow-notebook
Using default tag: latest
latest: Pulling from jupyter/tensorflow-notebook

693502eb7dfb: Pull complete
a3782c2efb41: Pull complete
9cb32b776a40: Pull complete
e539f5722cd5: Pull complete
b4690d4047c6: Pull complete
121dc465f5c6: Pull complete
c352772bbcfd: Pull complete
0057b9e76c8a: Extracting    568 B/568 B                                                                 
e63bd87d75dd: Download complete
055904fbc069: Download complete
d336770b8a83: Download complete
d61dbef85c7d: Download complete
6c4990ff8475: Download complete
e5968c6a2a7f: Download complete
bedf924ebae8: Download complete
b52514c7f277: Download complete
335ed19f8aeb: Download complete
0d61bb7891a3: Download complete
17c31ceff0f0: Download complete
de094493e821: Download complete
4d60ed225ef8: Download complete
4e17fd01128d: Download complete
c6a0f58de8b1: Download complete
7fea7b1d8bb9: Download complete
failed to register layer: open /var/lib/docker/aufs/layers/3dd85cabcd0d7bc18c5ccee0e071e2a7f8956765e84498c580d9b180f1433bce: no such file or directory

となり失敗。何回繰り返しても同じ。

この出力だけ見ると最後の'failed to register layer'に目が行きますが、途中を見ていると'0057b9e76c8a: Extracting 568 B/568 B'の行がずっと止まったままなので、以降がダウンロード完了しても展開が始まらないように見える。だいたい568バイトって何よ、あり得ないとは言えないけど小さすぎ。

とりあえず以下の方法で回復しましたが、何分初心者なので正しい対処か分かりませんので、参考程度に。

  1. 裏でdocker pullが動いているなら止める。
  2. Extractingで止まっている0057b9e76c8aで検索。今回は1個だけ出てきましたが(sha256:の後にヒットしています)、複数出てきた場合は内容で判断(まぁレアケースでしょうけど)。
  3. $ sudo grep -r 0057b9e76c8a /var/lib/docker
    /var/lib/docker/image/aufs/distribution/v2metadata-by-diffid/sha256/cda29d030c7debb657eaf6a780dc926d7d1ea900f5e87e79b205bdff35f95ec7:[{"Digest":"sha256:0057b9e76c8a523a63a6418fdfc9580811083be2a505468a24eaf06348151f9b","SourceRepository":"docker.io/jupyter/tensorflow-notebook"}] 
    
  4. 出てきたディレクトリを削除 or どこかに退避
  5. $ sudo rm -rf /var/lib/docker/image/aufs/distribution/v2metadata-by-diffid/sha256/cda29d030c7debb657eaf6a780dc926d7d1ea900f5e87e79b205bdff35f95ec7
    
  6. dockerデーモンを再起動
  7. $ sudo service docker restart
    
  8. 再度pull
  9. $ sudo docker pull jupyter/tensorflow-notebook
    

ちなみに/var/lib/docker/aufs/layers/3dd85cabcd0d7bc18c5ccee0e071e2a7f8956765e84498c580d9b180f1433bceはno such file or directoryとある通り本当に無いので、探すだけ無駄です。

[参考]

— posted by mu at 12:04 am   commentComment [0]  pingTrackBack [0]

ADO.NET Parameterized SQLにDateTime.Maxを渡すとデータが来ない

備忘録。

ADO.NETで以下のようなParameterized SQLを設定、@EndにDateTime.Maxを設定すると検索件数が0になってしまう。
SELECT DISTINCT(name) FROM persons WHERE @Start<=releasedate AND releasedate<@End

@Endを'9999/12/31 23:59:59.9999999'Link としてMySQLのコマンドラインからこの文を打ち込むとデータが来る一方、'10000/1/1 0:00:00'とすると件数0。5桁の西暦で不具合起こすのはまぁあり得る話かなとは思いますが、DateTime.Maxもこの辺の際どい扱いを受けているのかも。

環境としてはサーバーはDebianのMySql 5.7.16、クライアントはMySql.Data 6.9.9、.NET Framework 4.5なのですが、この現象は私の開発マシン(Windows 8.1)や仮想マシン上のWindows 7では問題なかった実行ファイル一式が、別人のPC(Windows 8.1)だと不具合になったことで発覚。サーバーもクライアントも同じプログラム使っているのになぜ発生の有無があるのだろう。

@End=DateTime.Maxということは事実上releasedate上限無しということなので、WHERE句から外してやると正常に。面倒くさいけど@EndがDateTime.Maxの時はWHERE句に入れないようにクエリー文を切り替えたほうが無難そう。

— posted by mu at 10:14 am   commentComment [0]  pingTrackBack [0]

CIFS共有先MercurialレポジトリにAddするとAccess is denied

blog20170207-FreeNAS_ShowHiddenFiles

備忘録ではあるのですが、再現実験したらエラーが出なくなったのであくまで参考に。

FreeNAS (9.10.1-U2)に作成したMercurialレポジトリにWindows側からファイルをaddしようとすると、
abort: ¥¥server¥folder¥.hg¥.dirstate-lk0nhu: Access is denied
みたいなメッセージが出て失敗する場合、FreeNAS側の共有フォルダ詳細設定で隠しファイルを表示する設定にすると解決しました。

— posted by mu at 11:40 am   commentComment [0]  pingTrackBack [0]

フォルダ内のファイルが消えた!?

私しか使ってないFreeNASを9.10.2-U1にアップデートしたところ、あるフォルダ内のファイルが全部消え失せて目を疑う。

フォルダ構成は
pool1 (ZFSプール)
 +- Dataset1 (ZFSデータセット)
 |    +- Share1 (ディレクトリ/CIFS共有)
 |    |   +- Share1-1
 |    |   +- Share1-2
 |    |   ...
 |    |   +- Share1-n
 |    +- NoShare1 (ディレクトリ/Jail用)
 |        + NoShare1-1 (Share1-1をNullFSでマウント)
 ...
 +- DatasetN (ZFSデータセット)

これがアップデート後にShare1-1の中身が空っぽに。Share1-1にはサイズの大きいファイルがたくさんあったので本当に消えたのならpool1の空き容量が増えているはずだけど、その様子もなく。各種状態もエラーなし、scrubかけても正常。

ダメ元でfindコマンドでpool0内をファイル検索かけたところ…Share1-2の下にShare1-1フォルダが入っていたよ Σ(゚Д゚)

もちろんした覚えはないけど、間違いでWindowsからのファイル共有操作でフォルダを移動させてしまった可能性はある。ただ…元の場所に空のShare1-1フォルダは確かに存在したんだよなぁ。間違いでもご丁寧にフォルダ移動させたうえで、Share1-1作り直すなんてことはやらない。

今回FreeNASのアップデートは無罪でしょうけど、前回Link とか過去に何回かトラブル経験しているので、アップデートはヒヤヒヤものです。やっぱり不具合無い限り更新しない方が良いかなぁ…

— posted by mu at 03:54 pm   commentComment [0]  pingTrackBack [0]

NDロードスターのオーディオユニット交換

去年購入したNDロードスターLink は最安のSタイプだったので、カーオーディオも最低限。納車されたら早いうちに交換するつもりだったのですが、クラウドファウンディングで注文したドライブレコーダーLink が到着してからまとめてやろうとしたら、案の定レコーダーの到着が遅れて1年塩漬けになったという。

ネットで検索すれば先人たちの記録が示すように、交換させる気がさらさらない車体デザインなのでそれなりの工作スキルが必要。車体本体には加工してないので、戻すことは可能です。

購入した物

パイオニア DEH-7100Link オーディオユニット。選定理由は1) 日本語表示ができる 2) ディスプレイパネルが分離できる
ENDY EPP-043ZLink 車側のコネクタから線を引き出すため。オーディオ・電源線だけなら反対側がギボシ端子になったやつの方が便利ですが、ステアリングに付いてるリモコンスイッチからの線を引き出すため、他にいいものが見つかりませんでした。
マツダ C900V6014 ラジオアンテナのコネクタ変換。マツダ純正品なのでディーラーで購入可能かも。
アルミ板 100×300×1.5mm オーディオユニット本体の固定のため。曲げ・切断が大変なら1mm厚でもいいかも。
スチール製L字金具 ホームセンターで購入。
5mm厚スポンジ ホームセンターで購入。クッション目的ですが、気休め(^^;)
オーディオステレオミニプラグ DEH-7100のリモコン接続用。
フラットケーブル 20線 分離するオーディオユニット本体とフロントパネル間の信号線を結ぶため。
MILコネクタ 20ピン 上記フラットケーブルの途中を切り離しできるようにするため。無くてもいいが、作業が面倒になる。
途中の写真は残してなかったので、いきなり取り付け直前の状態。写真はユニット上下がひっくり返されてます(CD挿入口が下側になっている)
  • このページLink を参照に回路基板から線は引き出し済み。
  • アルミ板を50mm-180mm-50mmサイズでコの字に曲げ、側面にねじ穴を開けユニットに取り付け。300mm長の板だと20mm余るので60-180-60に曲げたいところですが、車体に入らなくなるおそれあり。
  • アルミ板の底面にL字金具を取り付け。購入した金具の短辺には4mm径の穴が2個開いているだけだったので、6mmの穴を追加。ステンレス製買わなくて良かった(^_^)
Blog2016_DEH7100a

Blog2016_DEH7100b

ステレオミニプラグをユニット背面のW/Rに差し込み。
ミニプラグ側 EPP-043Z側
L(先端) 15番
R(中央) 接続無し
GND(根本) 16番
Blog2016_DEH7100c

が、いざ車体にユニットを入れようとすると入らない。理由は赤いケーブル分岐パーツと使わない白いコネクタ(写真右側)が大きすぎるため。
Blog2016_DEH7100d

要らない白コネクタを取り去り、分岐パーツの使用をやめてスリム化。これで難なく入るようになりました。
Blog2016_DEH7100e

元のユニットがあった場所にDEH-7100本体を設置。L字金具に開けた6mm穴を使ってM6ボルトで固定。
Blog2016_DEH7100f

動作確認。
  • アクセサリ電源をOnにして起動することを確認。
  • ユニットの操作パネルで全ボタン・ダイヤルが機能することを確認。最初半田の一か所が隣の端子にショートしていたようで、ダイヤルだけが機能しないことを経験したので、全ボタンが動くことを確認しましょう。
  • ラジオ・USBなどの使う予定の音源が鳴ることを確認。
  • システム設定のステアリングリモコン設定を開き、プリセット→マツダを選択。VOL+とVOL-の長押しを求められるので、ハンドルのスイッチを操作する。完了後、音量調整・MUTE・チャンネル切り替えが機能することを確認。
フロントパネルの取り付け後。
  • 元のディスプレイがあった場所にそのまま置くとBANDとDISPボタンが押しにくかったので、3mm厚のアクリル板と1mm厚の両面テープで約4mmのかさ上げ。
  • 丸で囲んだところがMILコネクタ(この場所はエアコンの通風道なので最終的には別の場所においてます)。
  • USBケーブルはDEH-7100付属の物を使用。フロントパネルの裏側(EJECTボタン辺り)にコネクタを張り付け。変速レバー近くにある元のUSBコネクタはお飾りとなりました(コネクタ作るのが面倒だったので…)
Blog2016_DEH7100g

取り外したパネルをすべて戻して完成。
Blog2016_DEH7100h

事前調査と一部の品物は購入してあったのに、実作業&ホームセンター通いでこの前の3連休含めて5日かかりました orz。まぁ内3日は使わなくてもよかった(元のUSBコネクタを有効にしようとした、DEH-7100がマツダのリモコンに対応していると知らず変換回路を作ろうとした、ラジオアンテナの形状が予想外で慌てた)時間ですが。

…この時間と情熱をなぜ大掃除と年賀状に向けられないのか? > 自分

[参考]

[2016/12/29 追記] 特に問題なく動いてますが、やはりプジョーのステアリングリモコンは便利だったなと思う次第。オーディオユニット本体を隠れた場所に設置するためCDプレーヤーは使用できないのですが、ユニット内にあるCDドライブはケーブルを抜いても他の機能は動作するようなので、完全に外してしまっても大丈夫そうです。この空間に他の物も入れたい場合や、1グラムでも削るライトウェイトスポーツを目指す方はどうぞ。

— posted by mu at 05:30 pm   commentComment [0]  pingTrackBack [0]

T: Y: ALL: Online:
ThemeSwitch
  • Basic
Created in 0.0250 sec.
prev
2017.11
next
      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