zsb*_*ppa 32 bash docker windows-subsystem-for-linux
我能够安装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?
Run Code Online (Sandbox Code Playgroud)
有什么建议可以解决这个问题吗?
Ram*_*ine 31
在这篇文章中找到了解决方案:https://blog.jayway.com/2017/04/19/running-docker-on-bash-on-windows/
在另一台机器上对引擎运行docker实际上非常简单,因为Docker可以公开CLI可以附加到的TCP端点.
默认情况下,此TCP端点处于关闭状态; 要激活它,请右键单击任务栏中的Docker图标,然后选择"设置",并勾选"在tcp上展开守护程序:// localhost:2375,不使用TLS"旁边的框.
完成后,我们需要做的就是指示Bash下的CLI连接到在Windows下运行的引擎,而不是连接到在Bash下运行的不存在的引擎,如下所示:
$ docker -H tcp://0.0.0.0:2375 images
Run Code Online (Sandbox Code Playgroud)
有两种方法可以使这个永久化 - 为上面的命令添加别名或导出一个环境变量,指示Docker在哪里找到主机引擎(注意:确保使用下面的单个撇号):
$ echo "export DOCKER_HOST='tcp://0.0.0.0:2375'" >> ~/.bashrc
$ source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
现在,从Bash运行docker命令就像他们应该的那样工作.
$ docker run hello-world
Run Code Online (Sandbox Code Playgroud)
成功回复:
Hello from Docker!This message shows that your installation appears to be working correctly.
Run Code Online (Sandbox Code Playgroud)
对我来说,这适用于 Windows 的 WSL:
假设您已经为 Windows 安装了 docker 桌面,并且在没有 TLS 的情况下勾选了 tcp://localhost:2375 上的 Settings->General->Expose daemon
如果您正在运行Windows 10版本1803或更高版本,则现在可以在没有Docker Desktop for Windows的情况下在WSL中完全安装并运行Docker客户端和服务器。我在以下WSL上工作:
OS: Ubuntu 18.04 bionic [Ubuntu on Windows 10]
Kernel: x86_64 Linux 4.4.0-17763-Microsoft
Run Code Online (Sandbox Code Playgroud)
只需按照相同的说明在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
Run Code Online (Sandbox Code Playgroud)
要使Docker服务器在安装后在WSL中运行,请关闭所有打开的终端并以管理员身份启动新的Ubuntu终端(即,右键单击Ubuntu快捷方式,然后单击“以管理员身份运行”)。最后,运行以下命令:
sudo cgroupfs-mount
sudo service docker start
Run Code Online (Sandbox Code Playgroud)
sudo service docker startWindows每次重新启动时都必须运行。但是,如果希望避免这种情况,可以按照此处列出的步骤,使用Task Scheduler和Shell脚本将其自动化。
使用以下命令测试一切是否正常:
docker run hello-world
Run Code Online (Sandbox Code Playgroud)
参考:https : //medium.com/faun/docker-running-seamlessly-in-windows-subsystem-linux-6ef8412377aa
注意:如果您使用的是WSL(Linux的Windows子系统)中的Ubuntu,请务必了解Docker客户端正在运行,而不是Docker服务器(守护程序)正在运行。
对于服务器,您仍然只需要使用适用于Windows的Docker及其Hyper-V VM。
然后,Microsoft / WSL问题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 build似乎现在可以正常工作,我稍后会尝试使用docker-compose。
请参阅以下脚本(来自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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21502 次 |
| 最近记录: |