LoginSignup
5
4

More than 5 years have passed since last update.

Windows上でMoby/LinuxKitを使ってみる

Last updated at Posted at 2017-07-19

最近、流行りつつある(?)、Moby/LinuxKitをWindows10上で起動してみたので手順メモ。LinuxKitを起動するところまで確認しました。

Dockerは普段使ってますが、Go言語は全く使ったことがないし、Moby/LinuxKitの情報にもあまり詳しくないので、とりあえず動くところまで、という感じでまとめました。

動作環境

  • Windows 10 Pro(1703) 64bit
    • Hyper-Vを使うためHome不可。Pro以上が必要。
  • Docker 17.06.0-ce
  • Go 1.8.3 windows/amd64

インストール

Go言語のインストール

Moby/LinuxKitをGo言語を使ってインストールするので、まずはGo言語のインストールを行う。Go言語のダウンロードページからパッケージをダウンロードしてインストールすればよい(2017-07-19現在では1.8.3だった)。

Gitのインストール

Moby/LinuxKitビルド時にGitを使用するのでGit for Windowsのインストールを行う。

MobyおよびLinuxKitをビルド

Goコマンドを使えば簡単にインストールできる。

Moby

C:\> go get -u github.com/moby/tool/cmd/moby

LinuxKit

C:\> go get -u github.com/linuxkit/linuxkit/src/cmd/linuxkit

Docker for Windowsのインストール

MobyでLinuxKit用のイメージをビルドする際にはDockerが必要になるので、Docker for Windowsをインストールする。公式のインストールページからパッケージをダウンロードしてインストールすればよい。

インストールしたら起動しておく。

以上で準備は整った。

使ってみる

とりあえず最小限のイメージをビルドし、起動を試す。昔の人なので、DOS窓を使って作業した。linuxkitを起動する際に、Must be run from an elevated prompt or user must be in the Hyper-V Administrator roleと怒られるので、管理者権限でコマンドラインプロンプトを開く(PowerShellでも同じ)。

minimalイメージのビルド

GitHubのlinuxkitリポジトリからminimal.ymlを適当なディレクトリにダウンロードする。ここではC:\mobyディレクトリで作業したとする。

mobyの実体であるmoby.exeは%USERPROFILE%\go\binにあるのでパスを通す。

C:\moby> PATH=%USERPROFILE%\go\bin;%PATH%

mobyでビルドする。WindowsではHyper-Vに仮想PCを作成して起動するようだが、そのときEFI-ISOファイルを使うようなので、mobyのオプションで-output iso-efiを指定する。以前はmoby buildで-efi.isoファイルも作成していたようだが、最近変わったのかな?

ビルドするときにDockerが必要である。

C:\moby> moby build -output iso-efi minimal.yml
Extract kernel image: linuxkit/kernel:4.9.38
Add init containers:
Process init image: linuxkit/init:d049e7b2074da5cd699a27defb47eb101142455d
Process init image: linuxkit/runc:d5cbeb95bdafedb82ad2cf11cff1a5da7fcae630
Process init image: linuxkit/containerd:b6ffbb669248e3369081a6c4427026aa968a2385
Add onboot containers:
  Create OCI config for linuxkit/dhcpcd:4b7b8bb024cebb1bbb9c8026d44d7cbc8e202c41
Add service containers:
  Create OCI config for linuxkit/getty:0a2955f3d7a10a0e71972791c3ba6400118f327e
Create outputs:
  minimal-efi.iso

これでminimal-efi.isoが作成された。このイメージを使い起動する。起動する際にはDockerは不要。おそらくlinuxkit.exeだけで動作する(のかな?)。

C:\moby> linuxkit run minimal-efi.iso
FATA[0001] Could not find an external switch

…外部スイッチがない、と怒られる(環境によると思う)。これを回避するために、Hyper-Vマネージャーの仮想スイッチマネージャーを使い、適当に内部用仮想スイッチを作成する。ここではLinuxKitNATという名前で仮想スイッチを作成した。

C:\moby> linuxkit run -switch LinuxKitNAT minimal-efi.iso
Creating VM: minimal
Configure VM: minimal
Setting up boot from ISO
Set up COM port
Start the VM
Connected
         [    0.000000] Linux version 4.9.38-linuxkit (root@e1ede117fb1e) (gcc version 6.3.0 (Alpine 6.3.0) ) #1 SMP Tue Jul 18 09:12:54 UTC 2017
[    0.000000] Command line: console=tty0 console=ttyS0 rootdelay=300 noautodetect
[    0.000000]
...(略)...
[    4.584461] Freeing unused kernel memory: 152K (ffff8a842e7da000 - ffff8a842e800000)
[    4.612413] Freeing unused kernel memory: 1400K (ffff8a842eaa2000 - ffff8a842ec00000)

Welcome to LinuxKit

                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
          {                       /  ===-
           \______ O           __/
             \    \         __/
              \____\_______/

eth0: waiting for carrier

という感じで起動できた(^^)。

参考サイト

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4