在Windows上的Bash上运行Docker容器

在Windows上从Bash运行Docker

Docker需要访问相当多的系统调用,这些调用不一定都是在Windows上实现的,因此在WSL下Docker可能并不那么容易,相反,我可以在Windows上运行Docker Engine,并从Bash连接到Docker 。

1.在Windows上安装Docker

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

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

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 运行

二、在WSL上安装Docker,Ubuntu系统的安装方法如下

# 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引擎,但它们都没有启动。

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

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

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

$ 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机器使用的证书,运行如下命令

$ 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通信,必须打开以下黄色背景的选项!操作如下截图

5ce798914f41fc16172ea899f24492098bb.jpg

您可能还想共享您的驱动器(土话:盘符)。这一步不是必须的,但如果需要用到某个盘符的文件,建议勾选对应选项,转到“共享驱动器(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文件访问软件是无法找到的

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

563c7d4591cd19b6df75d1990f7ac195e8a.jpg

保存后重新启动bash控制台执行docker相关命令可以照常执行了。

参考博文:

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

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

转载于:https://my.oschina.net/u/2402140/blog/2887352

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值