WSLでDockerを操作するよ – オレオレアドベントカレンダー5日目

そろそろネタが無くなってきました

だいじょうぶ、何とか書きますよ。
今日は、ベアメタルUbuntuサーバ上のDockerを、Windows上のWSLで動かす方法について書きましょう。

WSL?

まあ、Windowsユーザはすべからく使っているであろう、WSLことWindows Subsystem for Linuxですが、当然のようにUbuntu18.04使ってます。「WSLで始めるUbuntu 」ってコラムもやってますしね(ダイマ)。
さて、WSLでもちゃんとDocker動きます。ちょっとdockerサービス起動時にWSLをWindows管理者権限で起動しないとハマるんですが、ちゃんと動きます。ただ、最近500GBしかないSSDだとちょっと厳しくなってきたので、余ってた小さい子にUbuntu入れて、こっちでDockerやろうと思いました。まあ、250GBしかSSD無いし、2 threadしかないCeleron N3000だけど、16GBという基本的人権のあるメモリ積んでるし、Dockerそれほど重くないから平気平気。

ウチの小さい子近影。下の子はNUC(Win10Pro)

Ubuntu側設定

普通に、Ubuntu18.04いれて、apt update&upgradeして、apt install docker.io インストールして、ユーザにdockerグループつけただけで、何もしてません。

WSL側設定

WSL側では、apt install docker.とdocker-composeを入れておきましょう。以下のコマンドでdocker-machineをインストールします。sudo を使うので、自分のパスワードを入れましょう。

$ base=https://github.com/docker/machine/releases/download/v0.16.0 &&   curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&   sudo install /tmp/docker-machine /usr/local/bin/docker-machine

あとは、sshの秘密鍵ペアをed25519かecdsaで作って、公開鍵をubuntu側に登録しておきます。
その後、以下のコマンドでDocker-machineをインストールします。相手がubuntuなので、ジェネシックもといgenericドライバーを使用します。逸般ユーザで接続するので、–generic-ssh-user と–generic-ssh-key の設定も必須ですね。

$ docker-machine create --driver generic --generic-ip-address=192.168.XX.YY --generic-ssh-key=$PWD/.ssh/id_ed25519 --generic-ssh-user s-miyaza ubuntu

はい、これだけでちゃんと登録されます。ちょろい。

$ docker-machine ls
NAME     ACTIVE   DRIVER    STATE     URL                        SWARM   DOCKER        ERRORS
ubuntu   *        generic   Running   tcp://192.168.XX.YY:2376           v18.06.1-ce

Docker-machineを動かす

さて、Docker machineを動かすには以下のようにします。

$ eval $(docker-machine env ubuntu)
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
$ docker run hello-world

はい、だいたい動きますね。簡単。ちなみに、直接DOCKER_HOSTとDOCKER_TLS_VERIFY=1を設定して上げる方法もありますが、サーバ鍵とクライアント鍵を用意しないといけないので、めちゃくちゃ面倒くさいです(やった)。

これでKUSANAGI RoDも動きますね

某KUSANAGI RoDは、docker-machineとdocker-composeを使用することが前提なので、これで容赦なくRoD使えますね。
え?早く正式版出せ?さーせん、PHP7だけ新しくしたんで許してください。

Follow me!

Leave a Reply

Your email address will not be published. Required fields are marked *