布団が俺を呼んでいる

丘山大一のぶろぐ

Windows Server 2019 で Windows Subsystem for Linux

注意!
執筆時点で、Windows Server 2019 は公開停止中です。
ホスト、dockerイメージともに大幅に変わる可能性があります。

とりあえず入れてみた編。

公式ドキュメント

この辺り参照


手順その1:機能追加

Windows Subsystem for Linux の機能を追加。


手順その2:ディストリビューションインストール(配置)

ストアから入れます。……と思っていたら違いました。
私、最後に使っていたサーバはWindows Server 2012 R2 で、その後2016を飛ばして、今は2019を触っています。で、2012 R2 はデスクトップエクスペリエンスを入れればストアが使えました。
なので、ドキュメントを読む前まで延々とデスクトップエクスペリエンスを入れる方法を探していたのですが……なくなっているじゃないですか!
で、どうやって入れるのかなーと思っていたらまさかの手動ダウンロード。ストアの安全性とは一体……それに手動ダウンロードでは有料のディストリビューションは入れられませんね(別PCから引っこ抜けば、仕組み的にはいけるのかもしれませんが、ライセンス的にダメだと思う)

余談でした。

というわけで下記を参照してディストリビューションを探します。
Downloading distros に記載されている中から、今回は基本的なUbuntu 18.04を選択。ダウンロードが終わったら解凍します。
※powershellでExpand-Archiveコマンドレットで解凍する場合、拡張子を「appx」から「zip」に変更しておく必要があります。


手順その3

WSLを管理するフォルダを決めます。これは後から変更するのは大変なので先に決めておきます。
具体的には、公式ドキュメントの中に
Usually this is your C: drive. For example: C:\Distros\Ubuntu
とさらっと書かれていますが、ようは管理しやすいシステムフォルダを切ってくれということだと私は解釈しています。
私は 下記のように配置しました。



手順その4:実行

解凍が終わったら、その中に入っているディストリビューション.exeを実行します。直接叩いても、powershellからでも、cmdからでもOKです。


手順その5:ファイルについて

ディストリビューションの「rootfs」フォルダの中に、ディストリビューションで使うファイル群が入っています。
ストア版に比べると分かりやすくアクセス可能ですね。

UNIX独習への近道 (Software Design別冊)

新品価格
¥2,095から
(2018/10/9 22:43時点)

コメントを書く

布団が俺を呼んでいる | Windows Server2019(公開停止中) で Windows Server コンテナ

布団が俺を呼んでいる

丘山大一のぶろぐ

Windows Server2019(公開停止中) で Windows Server コンテナ

注意!
執筆時点で、Windows Server 2019 は公開停止中です。
ホスト、dockerイメージともに大幅に変わる可能性があります。

Windows Server 2019 公開停止中。公開停止前に入れたヤツで色々試す。


しかし、いざ試そうと思ってもWindows Server2019 の公式ドキュメントが見つからなかったでござる。
なので適当にやってみる。
役割と機能の追加で「Contiranes」をインストール。
しかしインストールしただけではスタートメニューにこれといって利用可能なアプリは増えなかった。


古い記事だけど、下記をやってみる。


まずはPowerShellを管理者権限で実行。
下記コマンドレットを実行する。
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
なんかエラーが出てきた。


フーン。とりあえず入れましょ。おもむろにY。
しかしエラーが返ってくる。


んん?そのままでは実行できないのか……
で、クライアントのWindows 10 で実行して気が付いたのですが、powershellが実行して入れようとしているのは2.8.5.201ですが、実はバージョン 2.8.5.208 があるみたいです。
というわけで、
Install-PackageProvider -Name Nuget -RequiredVersion 2.8.5.208 -Force
を入れたら通りました。(バージョン指定しなくても通ったかもしれない)
この状態で、再度試しても、まだ「リポジトリ'PSGallery'が見つかりません」と言われてしまうので、今度はリポジトリをデフォルトで登録する。
Register-PSRepository -Default


ふむ、ここまでできたら通るやろ……と思って実行するも「ギャラリーは現在利用できません」のエラーになってしまう。
むむ。
ここでコマンドレットを若干変更し、
Install-Module -Name DockerMsftProvider
にするとメッセージが変わる。


おそらく、先に登録したプロバイダが Untrusted なせいで「信頼されていないリポジトリ」になっています。
でも「Y」でインストール自体は進む。
いったいなんだったんだ……
ともかく、これでようやく手順の一つ目のコマンドレットが完了。
続いて二つ目。
Install-Package -Name docker -ProviderName DockerMsftProvider
こちらは特に問題なく進めました。

ここで再起動しろ、とのこと。スタートから再起動してもよいですが、せっかくコマンドレットが提示されているので実行してみます。
Restart-Computer -Force
再起動後、Dockerが使えるようになっています。
※今回はDockerのバージョンは変えないため、アップデートはしません……

基本的なコマンドを叩く



それっぽいですね。

続いて、お約束を確認します。
docker run hello-world


失敗します。
ここでdocker inspectを使ってimageの中身を見てます。


hello-worldの中身がlinuxだから失敗したんじゃね?
と思いましたが、しっかりWindowsでした。
ただし、OSのバージョンが古い(14393なので、Anniversary Update相当?)
ので動かない……のかどうか確信はありませんが、Windows Server コンテナはバージョンが違うと動かないという仕様だと聞いたので多分そういうことでしょう。

今度はdotnet-samplesにチャレンジしてみます。
docker run microsoft/dotnet-samples
こっちは動きますね。OSバージョンが同じだから、ということでしょう、多分。


下記は
docker run microsoft/dotnet
で動かしているところを出した図。ちゃんとupになっています。



オマケ1

ubuntu を動かそうとすると


なるほど、こういうエラーになるんですね。


オマケ2

pullしたイメージは、見た感じここらに入るみたいです。
C:\ProgramData\docker\windowsfilter



プログラマのためのDocker教科書 第2版 インフラの基礎知識&コードによる環境構築の自動化

新品価格
¥3,240から
(2018/10/8 22:25時点)


コメントを書く