在Windows上的Bash上运行Docker容器

在Windows上从Bash运行Dockerhtml

Docker须要访问至关多的系统调用,这些调用不必定都是在Windows上实现的,所以在WSL下Docker可能并不那么容易,相反,我能够在Windows上运行Docker Engine,并从Bash链接到Docker 。linux

1.在Windows上安装Docker

要在Windows上安装Docker引擎,只需访问docker.com并下载相应的发行版(win10下载docker for windows)。此外,请确保已启用硬件虚拟化并安装Hyper-V,以避免引擎没法启动。docker

1、从Bash运行Windows可执行文件。只需将这两行添加到您的.bashrc(并从新加载您的环境)ubuntu

export PATH="$HOME/bin:$HOME/.local/bin:$PATH"
export PATH="$PATH:/mnt/c/Program\ Files/Docker/Docker/resources/bin"
alias docker=docker.exe
alias docker-compose=docker-compose.exe

你如今能够docker --version 从Bash 运行windows

2、在WSL上安装Docker,Ubuntu系统的安装方法以下bash

# Install packages to allow apt to use a repository over HTTPS
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
# Add Docker's official GPG key
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# Set up the repository
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# Update source lists
sudo apt-get update
# Install Docker
sudo apt-get install docker-ce

如今已经在Windows和WSL上安装了Docker引擎,但它们都没有启动。ssh

windows的docker只要点击快捷方式启动,启动后在PowerShell上执行命令以下:curl

PS C:\> docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

WSL上的Docker启动不了,bash命令以下tcp

$ service docker start
docker: unrecognized service
$ docker images
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

将WSL上的Docker链接到Windows上的Docker

docker在另外一台机器上运行实际上很是简单,由于Docker公开了CLI能够附加到的TCP端点。端点使用TLS,这意味着咱们必须在WSL端设置客户端以识别Windows端Docker机器使用的证书,运行以下命令this

$ export DOCKER_HOST=tcp://192.168.99.100:2376  // your Docker IP
$ export DOCKER_CERT_PATH=/mnt/c/Users/YOUR_USERNAME/.docker/machine/certs
$ export DOCKER_TLS_VERIFY=1

完成后,咱们须要作的就是将Bash下的CLI链接到在Windows下运行的引擎,而不是链接到在Bash下不能运行的dockers,以下所示:

$ docker -H tcp://0.0.0.0:2376
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

若是不是使用TLS,不使用证书,要公开没有TLS的守护进程。此步骤是必需的,以便守护程序在TCP端点上进行侦听。若是你不这样作,那么你将没法从WSL链接,因此为了让客户端和docker通讯,必须打开如下黄色背景的选项!操做以下截图

您可能还想共享您的驱动器(土话:盘符)。这一步不是必须的,但若是须要用到某个盘符的文件,建议勾选对应选项,转到“共享驱动器(Shared Drives)”设置并启用它。

将WSL配置为链接到Docker for Windows

执行命令:export DOCKER_HOST=tcp://127.0.0.1:2375

 如今执行docker命令不会再出现如下提示:

Cannot connect to the Docker daemon. Is the docker daemon running on this host?

可是,该环境变量只会持续到会话结束。每次打开bash时都必须从新设置它。所以,为了不这种状况,您须要在主目录中的一个名为.bash_profile或者 .bashrc的文件中设置该变量,

这两个文件只支持ssh命令终端用vi打开

在FileZilla文件访问软件是没法找到的

打开这两个文件中有数据的那个并在结尾处添加

保存后从新启动bash控制台执行docker相关命令能够照常执行了。

参考博文:

一、在Linux的Windows子系统上(WSL)使用Docker(Ubuntu)

二、https://blog.jayway.com/2017/04/19/running-docker-on-bash-on-windows/

相关文章
相关标签/搜索