nuits.jp blog

C#, Xamarin, WPFを中心に書いています。Microsoft MVP for Development Technologies。

Windows Subsystem for Linux(Hyper-Vなし)でDockerを動かす

Docker for Windowsは非常に便利なのですが、Hyper-V前提になっていることが多くの足かせを生んでいます。Hyper-VはCPUの仮想化支援機能を占有してしまうため、VMwareなどの他の仮想化ソフトウェアや、Intel HAXMを利用したAndroid Emulatorと同時に動かすことができません。

もちろん、切り替えれば(簡単に切り替える方法がありますが)良いのですが、PCの再起動が必要ですし、同時に動かしたい事もままあるはずです。

私も絶賛困っていたのですが、このツイートを見てDockerをHyper-Vなしで動かせることを知りました。

実際やってみたところ、少々はまり処もあったのでここに具体的な設定方法をまとめておきます。ただし、docker-composeはネットワーク絡みで、まだ正しく動かないようです。

参考文献:https://www.reddit.com/r/bashonubuntuonwindows/comments/8cvr27/docker_is_running_natively_on_wsl/

続きを読む

MarkdownからRe:VIEWを利用し簡単にPDF生成できるツールをリリースしました

MarkdownからPDFを簡単に生成できるDockerのContainerイメージを作成し、DockerHubに公開しました。

コマンドを2行実行するだけで作成できます。

中身的にはRe:ViewのContainerイメージをベースにmd2reviewをインストールし、サポートのシェルスクリプトをいくつか用意した形です。

本エントリーはWindowsのコンソールで実行するケースで紹介していますが、それ以外の環境で実行する場合は、以下のリンク先もご覧ください。

続きを読む

Dockerでホストのフォルダをゲストとシェアする場合にFirewallで弾かれてエラーになる場合の対処方法

ポイントはシェアを許可してエラーになったあと、PCを再起動するだけです。

一応もう少し丁寧に手順を記載しておきます。

バージョンが変更になると事象や対処方法が変わる可能性があります。

環境

  • Windows 10 Professional 1803
  • Docker for Windows Version 18.03.1-ce-win65 (17513)

手順

ホストとゲストでフォルダを共有する設定で、Dockerのインスタンスを起動します。

例えば次のコマンドではAlpine Linuxを起動時にカレントディレクトリをAlpine Linuxの/workというパスでシェアするように指定しています。

docker run -it --rm -v %cd%:/work alpine

すると、画面の右下に次のような通知が表示されます。

f:id:nuitsjp:20180706105330p:plain

ここで「Share It」を選択すると、初回は管理者のアカウントパスワードを求められます。

f:id:nuitsjp:20180706105508p:plain

これでAlpine Linuxが起動するはずなのですが、場合によってはFirewallがどうちゃらとエラーがでてAlpine Linuxが起動できません。起動出来ちゃった環境もあるので詳細は不明です。

エラーが出た後、一度PCを再起動して再度実行すれば正しく動作するはずです。多分。

それでダメだった場合は、Dockerの設定画面を開いてShare Drivesで、シェアしたいドライブを選択し「Apply」を押して「エラーになった後」PCを再起動すればShare設定が有効になります。多分ね。。。

以上です。

Docker for Windowsで"could not read CA certificate"エラーが発生した時の対応方法

Docker for Windowsのバージョンを上げた時などで、つぎのようなエラーメッセージがでてDockerがほぼ使えない状態になってしまいます。

could not read CA certificate "C:\Users\\.docker\machine\machines\default\ca.pem": open C:\Users\.docker\machine\machines\default\ca.pem: The system cannot find the path specified.

私はDocker Toolbox(Docker for Windowsの前身)を同居させようとしたら、ぶっ壊れて上の状態になりました。現在、開発中のバージョンでは対応されているようですが、まだリリースされていないため、現在発症した場合は、手動で対応する必要があります。という訳で、以下に手順を纏めます。

続きを読む

Xamarin.Forms.GoogleMaps.Bindings 2.2.0リリースしました

Xamarin.Forms.GoogleMapsのバインディング対応ライブラリを更新しました。

更新内容はひとまず以下の通り。

  • UpdateRegionBehaviorの追加
  • UpdateCameraPositionBehaviorの追加
  • MoveToRegionBehaviorでanimatedを指定できるように変更

近いうちに、もう少し本体へ追従するよう修正します。

UpdateRegionBehaviorの追加

こんな感じで、地図の表示場所をバインドで更新できるようにしました。

<googleMaps:Map x:Name="MyMap" HorizontalOptions="Fill" VerticalOptions="FillAndExpand" MyLocationEnabled="True">
    <googleMaps:Map.Behaviors>
        <bindings:UpdateRegionBehavior Region="{Binding Region}" Animated="{Binding Animated}"/>
    </googleMaps:Map.Behaviors>
</googleMaps:Map>

UpdateCameraPositionBehaviorの追加

同様にカメラアングルもバインドで変更できるようにしました。

<googleMaps:Map x:Name="MyMap" HorizontalOptions="Fill" VerticalOptions="FillAndExpand" MyLocationEnabled="True">
    <googleMaps:Map.Behaviors>
        <bindings:UpdateCameraPositionBehavior CameraUpdate="{Binding CameraUpdate}" Duration="{Binding Duration}"/>
    </googleMaps:Map.Behaviors>
</googleMaps:Map>

Durationを指定しない、もしくはnullを指定するとアニメーションなしでカメラアングルが変更されます。

MoveToRegionBehaviorでanimatedを指定できるように変更

完全に認識外で漏れていたので追加しました。こんな感じで利用します。

public MoveToRegionRequest Request { get; } = new MoveToRegionRequest();

public Command MoveToTokyoCommand => new Command(() =>
{
    Request.MoveToRegion(
        MapSpan.FromCenterAndRadius(
            new Position(35.681298, 139.766247),
            Distance.FromKilometers(2)),
        Animated);
});

ドキュメントの正式な更新はまた今度。

以上です。

InfragisticsさんとCData Software Japanさんから頂いた肉セットを食べてみた

de:code大喜利の景品でお肉をいただいたのですが、頂いたらレポ要求を頂きました。

f:id:nuitsjp:20180526234835p:plain

そういう訳で、先日到着したのでレポを書きました。

www.nuits.jp

レポかいたら書いたで今度は

お、おう。

ということで、贅沢にも焼き豚丸ごと一つ使って、妻と二人で豚丼作って食べました!

f:id:nuitsjp:20180530101651j:plain

米より肉の方が多くなりました。

さてお味ですが、甘辛く調理されておりタレがとても美味しかったです。味付けが濃すぎることもなく、肉のそのものと、油のうま味が感じられ、良いお肉なんだろうなあと実感じました。

自腹で買ったらこんな贅沢な食べ方はできませんでしたね!

という訳で、InfragisticsさんCData Software Japanさんありがとうございました!

...レポはこんなもんで良いですかね?w