docker 导出_在Windows 子系统wsl ubuntu上运行Docker容器

当的Windows子系统为Linux(WSL) -或者,因为大多数人甚至在微软经常提到它- 在Ubuntu在Windows巴什 -在宣布对微软的BUILD大会2016年,新工具的世界打开了我们的Windows开发者。就个人而言,当我要编写脚本时,我喜欢能够在PowerShell,Bash或普通的旧cmd之间进行选择。一直困扰着我,直到现在我都无法让Docker在Windows上的Bash中运行。

这篇文章的原始标题是“在Windows上从Bash运行Docker”,但这可能有点夸张。Docker需要访问很多系统调用,这些调用不一定全部在Windows上实现,因此让引擎在WSL下运行可能并不那么容易。相反,我们将在Windows上运行Docker Engine,然后从Bash连接到它。这也有,你可以开始从PowerShell的一个容器内,用它从Bash或周围的其他方式进行交互的优势-换句话说,你的电脑将仍然感觉就像一台机器。

方法如下:

1.在Windows上安装Docker

要在Windows上安装Docker引擎,只需转到docker.com并下载适当的发行版。另外,请确保启用了硬件虚拟化并安装了Hyper-V,以免引擎无法启动。

快捷方式:安装Windows 10 Creators Update

借助Windows 10 Creators Update,完成所有这些操作变得更加简单,因为它允许您从Bash运行Windows可执行文件。只需将这两行添加到您的.bashrc(并重新加载您的环境)中,就可以完成!

export PATH =“ $ HOME / bin:$ HOME / .local / bin:$ PATH”export PATH =“ $ PATH:/ mnt / c / Program  Files / Docker / Docker / resources / bin”别名docker = docker.exe别名docker-compose = docker-compose.exe

您现在可以docker --version 从Bash 运行,甚至不必阅读本博客文章的其余部分:)

在Windows 10周年纪念版上使其正常运行

要将Docker安装在WSL上,您需要跳过另外几个步骤。还有的Ubuntu一般的描述在这里,这对于WSL以及工作,与一些可选步骤例外。这是我所做的:

#安装软件包以允许apt通过HTTPS使用存储库$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common#添加Docker的官方GPG密钥$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt键添加-#设置存储库sudo add-apt-repository“ deb [arch = amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs)稳定”#更新源列表sudo apt-get更新#安装Docker须藤apt-get install docker-ce

当然,也可以选择下载并解压缩我们需要的二进制文件,然后将它们放在您的中PATH。有说明这里的如何获取最新版本。

那是从哪里得到的?

现在,我们实际上已经在Windows和WSL上都安装了Docker引擎,但两者均未启动。Windows安装程序在桌面和/或“开始”菜单中帮助创建了Docker快捷方式-使用该快捷方式启动Docker引擎。然后,您可以尝试docker images从PowerShell和Bash 运行例如:

电源外壳:

PS C:>码头工人图像储藏标签图像ID尺寸增加

我们还没有创建任何图像,所以很好。

重击:

$码头图片无法通过unix:///var/run/docker.sock连接到Docker守护程序。泊坞窗守护程序正在运行吗?

显然不满意。但是,通过额外的一两个步骤,我们将使其全部正常工作。

2.将WSL上的Docker连接到Windows上的Docker

docker实际上,在另一台机器上的引擎上运行很容易,因为Docker公开了CLI可以附加到的TCP端点。端点使用TLS,这意味着我们必须在WSL端设置客户端以识别Windows端Docker机器使用的证书(感谢Alan 的提示!):

export DOCKER_HOST = tcp://192.168.99.100:2376 //您的Docker IP导出DOCKER_CERT_PATH = / mnt / c / Users / YOUR_USERNAME / .docker / machine / certs导出DOCKER_TLS_VERIFY = 1

完成之后,我们要做的就是指示Bash下的CLI连接到Windows下运行的引擎,而不是连接到Bash下运行的不存在的引擎,如下所示:

$ docker -H tcp://0.0.0.0:2376图像储藏标签图像ID尺寸增加

好多了!

但是,必须始终指定该标志很烦人。幸运的是,有更好的方法(感谢Dave!)–导出一个环境变量,该变量指示Docker在哪里找到主机引擎:

导出DOCKER_HOST ='tcp://0.0.0.0:2376'

当然,我们希望在.bashrc 中进行这些更改以使其具有粘性:

$ echo >>〜/ .bashrc << EOF#在Windows上连接到Docker导出DOCKER_CERT_PATH = / mnt / c / Users / YOUR_USERNAME / .docker / machine / certs导出DOCKER_TLS_VERIFY = 1导出DOCKER_HOST ='tcp://0.0.0.0:2375'紧急行动$ source〜/ .bashrc

现在,从Bash运行docker命令的工作原理与预期的一样。

docker 导出_在Windows 子系统wsl ubuntu上运行Docker容器_第1张图片

你可能感兴趣的:(docker,导出,docker安装windows,docker查看正在运行的容器,docker退出容器保持运行,windows安装docker)