文档章节

在Windows上的Bash上运行Docker容器

W
 WUBAOQUAN
发布于 2018/11/21 22:52
字数 987
阅读 75
收藏 0

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

您可能还想共享您的驱动器(土话:盘符)。这一步不是必须的,但如果需要用到某个盘符的文件,建议勾选对应选项,转到“共享驱动器(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相关命令可以照常执行了。

参考博文:

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

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

© 著作权归作者所有

共有 人打赏支持
W
粉丝 0
博文 8
码字总数 3931
作品 0
厦门
私信 提问
Docker使用总结

本地安装docker 如果是MAC系统,请从这里下载安装包并安装: https://docs.docker.com/docker-for-mac/ 如果是Windows系统,请从这里下载安装包并安装: https://docs.docker.com/docker-for...

neo4j
2016/12/26
80
0
Docker 安装使用(windows)

windows7安装(必须64bit) 创建虚拟机 3.常用命令 运行一个容器 查看运行的容器 将容器提交为镜像 7.推送镜像到docker-hub docker pull加速

JUKE
2016/12/20
15
0
docker 基础命令

docker 已经火了很长一段时间,现介绍一些基础命令,让大家0成本玩转docker。 首先安装 redhat/centos: yum install docker ubuntu/debian: apt-get install docker windows: 请到官网(dock...

Daniel风潇潇
2017/11/15
0
0
在win10 docker启动的centos容器中安装nginx

我是在win10机器上搭建了一个docker,在docker启动了centos容器,在centos中安装nginx。 安装配置docker 直接在官网下载docker for windows:https://store.docker.com/editions/community/d...

Jack088
01/06
0
0
Windows10 使用docker toolbox安装docker

一、介绍 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,...

_周小董
2018/05/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql 系统设置SQL

打开、关闭日志 SET GLOBAL general_log = 'Off'; SET GLOBAL general_log = 'On'; 查看日志是否打开 show variables like '%general%';...

jingshishengxu
49分钟前
2
0
转行学大数据,如何选择如何学习大数据开发?

大数据火了几年了,但是今年好像进入了全民大数据时代,本着对科学的钻(zhun)研(bei)精(tiao)神(cao),我在17年年初开始自学大数据,后经过系统全面学习,于这个月跳槽到现任公司。 现在已经...

董黎明
50分钟前
4
0
RadosClient OSDC

RadosClient.h class librados::RadosClient : public Dispatcher//继承自Dispatcher(消息分发类){public: using Dispatcher::cct; md_config_t *conf;//配置文件private: ......

banwh
今天
3
0
如果让你写一个消息队列,该如何进行架构设计?

面试题 如果让你写一个消息队列,该如何进行架构设计?说一下你的思路。 面试官心理分析 其实聊到这个问题,一般面试官要考察两块: 你有没有对某一个消息队列做过较为深入的原理的了解,或者...

李红欧巴
今天
6
0
错题

无知的小狼
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部