今回は、仮想環境のちょっとした記事です。
Windows10で、Dockerをインストールしたのはいいけど、
Windowsのコマンドプロンプトの操作から脱出したかったのがきっかけでした。(別にWindowsが嫌いとかではもちろんなく、ただ使い慣れた環境操作が良かった!笑)
なので、Windows標準で使用できるWindows Subsystem for Linux (WSL)で、
WindowsにインストールしたDockerを操作できるようにしたメモ記事です!
細かい個々のツールに関しては解説はしません。 不具合があった際は、適宜ヴァージョンなどを確認してみてください!
では、さっそく。
環境
- Windows10 : version 1903
- Docker (Windows側: 19.03.5, WSL側: 18.09.7)
- docker-compose (Windows側: 1.25.2, WSL側: 1.25.3)
- WSL(Ubuntu) : 18.04
- apt: 1.6.10
Windows側
Dockerをインストールしていく
まずは、公式からDockerをインストールします。
※インストールには、Dockerのアカウントが必要かもしれません。
手順通りインストールすれば問題ないでしょう。
インストールが完了したら、コマンドプロンプトを立ち上げて、以下を実行してみます。
> docker -v Docker version 19.03.5, build 633a0ea > docker-compose -v docker-compose version 1.25.2, build 698e2846
ヴァージョンが表示されればおkです。
試しにhello-world(docker run hello-world
)もやってみたくなりますが、わたしは敢えてスキップしました。
別に今やってもいいのですが、あとでWSLからdocker ps -a
でコンテナがあるか確認します。
特に意味はないのですが、WSLにもWindowsにもコンテナが今はないほうがスッキリするだけです笑
プロキシの設定をする
社内環境などで使用する場合、プロキシの設定をしないとDockerが外へ出ることができません。
なので、もし必要な場合が設定をしましょう。
- タスクバーにあるDockerをクリック
- Settings
- Resources-> PROXIES
- 環境に合わせてプロキシサーバーのURLを入力 (ex.. hoge.proxy.co.jp:8080)
- 入力したら、"Apply&Restart"
Cドライブをマウント
こちらもDockerのSettingsから確認できます。
- タスクバーにあるDockerをクリック
- Settings
- Resources-> FIRE SHARING
- "C" にチェック
- 入力したら、"Apply&Restart"
WSLからDocker for Windowsのデーモンを呼び出す設定
こちらもDockerのSettingsから確認できます。
- タスクバーにあるDockerをクリック
- Settings
- General
- "Expose daemon on tcp://localhost:2375 without TLS" にチェック
- 入力したら、"Apply&Restart"
WSL側
WSLを立ち上げて設定やらインストールやらしていきます。
.bashrc
.bashrcに以下を追記します。
DOCKER_HOST=tcp://localhost:2375
もし、.bashrcを今回新規作成していたら、.bash_profileに以下を追記します。
if [[ -f ~/.bashrc ]] ; then . ~/.bashrc fi
プロキシ
もしプロキシサーバーがあれば、以下を設定していきます。
aptの設定
もしapt.confというファイルがなければ作成します。
$ sudo vim /etc/apt/apt.conf # 以下を追記 (ドメインのところはご自身のものに編集) Acquire::http::Proxy "http://hoge.foo.com:8080"; Acquire::http::Proxy "https://hoge.foo.com:8080";
curlの設定
ホームディレクトリに.curlrcファイルを作成し、編集する。
$ vim .curlrc # 以下を追記 (ドメインのところはご自身のものに編集) proxy = http://hoge.proxy.co.jp:8080
Dockerのインストール
今回のわたしの環境は、Ubuntuです。
公式にUbuntuへのDockerのインストールがあるので、参考にします。
Get Docker Engine - Community for Ubuntu | Docker Documentation
公式に手順があるので、ここではざっくりとした手順のみ記述します。
# アップデート $ sudo apt-get update # aptがHTTPS経由でリポジトリを使用できるようにする $ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common # Dockerの公式GPGキーを追加 $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - # フィンガープリントを確認 $ sudo apt-key fingerprint 0EBFCD88 # リポジトリの設定 $ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" # 再度アップデート $ sudo apt-get update
- GPGキーとは?
GPG(GNU Privacy Gard)とは、暗号化・復号化のツールのキー。Dockerのパッケージを復号化するために使用します。
- add-apt-repository
aptのリポジトリというものがあります。リポジトリは複数あり、リポジトリを設定することでそのリポジトリからパッケージをインストールすることができます。
今回の設定では、Dockerをインストールするために、stable
を選択しました。
続いて、Dockerをインストールしていきますが、
わたしがインストールしていくとき、公式のコマンドでエラーが出てしまいました。
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
docker-ce
がどうしてもインストールできませんでした。docker-ceは、コミュニティヴァージョン(無償)です。
まだ、きちんと確認できてはいないのですが、エラーをみるとdocker.io
をインストールしろとのこと。
ここで疑問が浮かび上がりました。
docker-ceとdocker.ioの違いとは?
先程も書いたとおり、docker-ceは世間一般で言うDockerのことらしい。
docker-eeは有償版らしい。
docker.ioはUbuntuがメンテナンスしているパッケージのことらしい。
What is the difference between docker-engine and docker.io packages? - Quora
インストール(docker.io)
つまり、エラーのとおり、UbuntuでDockerをインストールしたい場合は、パッケージ名としてdocker.ioを指定するといいのかもしれない。
$ sudo apt-get install docker.io
docker-composeをインストール
docker-composeをインストールする。
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.25.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose # 確認 $ docker-compose -v
WSLの再起動
WSLを再起動をします。
これをしないとうまく設定が反映されないと思うので、実行します。
このコマンドは、PC自体を再起動しなくとも、WSLのみ再起動させることができるので、便利です!
WSLのウィンドウを閉じるだけでは、再起動していることにならないので、注意してください!
> net stop LxssManager > net start LxssManager
確認
確認の方法はどうでもいいと思うのですが、この記事の冒頭で書いたとおり、
Windows側のコマンドプロンプトで> docker run hello-world
をして、hello-worldのイメージとコンテナが作成されるはずです。
Dockerの簡単なコマンドです。
# コンテナを全て表示 $ docker ps -a # 稼働中のコンテナを表示 $ docker ps # イメージを表示 $ docker images
runさせたら、Windowsのコマンドプロンプトでコンテナを確認します。
次は、WSLの方で、Windows側で作成されたコンテナとイメージが確認できるかdocker ps -a
を叩いて確認してみましょう。
無事、コンテナが確認できたらおkです!!
以上.