Docker、docker-compose、docker-machineをインストールできます
ただし、実行しようとすると
root@DESKTOP-51NFMIM:~# docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
この問題を解決するための提案はありますか?
この投稿で解決策を見つけました: https://blog.jayway.com/2017/04/19/running-docker-on-bash-on-windows/
DockerはCLIが接続できるTCPエンドポイントを公開できるため、実際には別のマシンのエンジンに対してdockerを実行するのは非常に簡単です。
このTCPエンドポイントはデフォルトでオフになっています。有効にするには、タスクバーのDockerアイコンを右クリックして[設定]を選択し、[TLSを使用せずにtcp:// localhost:2375でデーモンを公開する]の横のボックスをオンにします。
これが完了したら、次のように、Bashで実行されている存在しないエンジンではなく、Windowsで実行されているエンジンに接続するようにBashでCLIに指示するだけです。
$ docker -H tcp://0.0.0.0:2375 images
これを永続化するには、2つの方法があります。上記のコマンドのエイリアスを追加するか、ホストエンジンを見つける場所をDockerに指示する環境変数をエクスポートします(注:必ず単一のアポストロフィを使用してください)。
$ echo "export DOCKER_Host='tcp://0.0.0.0:2375'" >> ~/.bashrc
$ source ~/.bashrc
現在、Bashからdockerコマンドを実行すると、本来の動作と同じように機能します。
$ docker run hello-world
成功した応答:
Hello from Docker!This message shows that your installation appears to be working correctly.
注: WSL(Linux用Windowsサブシステム) からUbuntuを使用している場合、Dockerサーバー(デーモン)ではなく、Dockerクライアントが機能していることを理解してください。
Microsoft/WSL issue 2114 および このスレッド を参照してください。
サーバーの場合は、 Docker for Windows とそのHyper-V VMのみを使用する必要があります。
次に、 Microsoft/WSL issue 2102 を追加:
DOCKER_CERT_PATH
環境変数(eval $(docker-machine.exe env --Shell bash)
の実行から取得)を "C:\C:\Users\mmarchini\.docker\machine\machines\default
"から "/mnt/c/Users/mmarchini/.docker/machine/machines/default/
"に変更することにより、WSL内からTLSを機能させることができました。
少なくともdockerビルドは現在動作しているようです。後でdocker-compose
を使用してみます。
このスクリプト (from Matheus Marchini )を参照して、正しい設定でdocker-machine bashを起動します。
#!/usr/bin/env python3
from subprocess import run, PIPE
completed_process = run(["docker-machine.exe", "env", "--Shell", "bash"], stdout=PIPE)
docker_env = completed_process.stdout.decode("ascii")
for line in docker_env.split("\n"):
if "DOCKER_CERT_PATH" in line:
env_var, path, _ = line.split('"')
path = path.replace("\\", "/")
drive, path = path.split(":", 1)
path = "/mnt/{}{}".format(drive.lower(), path)
line = '{}"{}"'.format(env_var, path)
print(line)
Windows 10バージョン1803以降を実行している場合、Dockerクライアントとサーバーをインストールして、Docker Desktop for Windowsなしで純粋にWSLで実行できます。次のWSLで動作しています:
OS: Ubuntu 18.04 bionic [Ubuntu on Windows 10]
Kernel: x86_64 Linux 4.4.0-17763-Microsoft
同じ instructions に従ってUbuntuにインストールしますが、インストールする特定のバージョンを選択してください。現在、バージョン18.06.1〜ce〜3-0〜ubuntuは正常に動作しますが、それ以降のバージョン5まで: 18.09.6〜3-0〜ubuntu-bionicには、コンテナの起動に関する問題があります。次のコマンドは、最新の作業バージョンをインストールします。
apt-get install docker-ce=18.06.1~ce~3-0~ubuntu
インストール後にWSLでDockerサーバーを実行するには、開いているすべてのターミナルを閉じて、管理者として新しいUbuntuターミナルを起動します(つまり、Ubuntuショートカットを右クリックし、「管理者として実行」をクリックします)。最後に、次のコマンドを実行します。
Sudo cgroupfs-mount
Sudo service docker start
Sudo service docker start
は、Windowsを再起動するたびに実行する必要があります。ただし、それを避けたい場合は、 here に記載されている手順に従って、タスクスケジューラとシェルスクリプトを使用して自動化できます。
以下を使用して、すべてが機能していることをテストします。
docker run hello-world
リファレンス: https://medium.com/faun/docker-running-seamlessly-in-windows-subsystem-linux-6ef8412377aa
私にとっては、これはWindows用のWSLで機能しました:
dockerデスクトップをWindows用にインストールし、TLSを使用せずにtcp:// localhost:2375に[設定]-> [一般]-> [デーモンを公開]をオンにしていると仮定します