阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

在Windows中玩转Docker Toolbox

130次阅读
没有评论

共计 3326 个字符,预计需要花费 9 分钟才能阅读完成。

最近在研究虚拟化,容器和大数据,所以从 Docker 入手,下面介绍一下在 Windows 下怎么玩转 Docker。

Docker 本身在 Windows 下有两个软件,一个就是 Docker,另一个是 Docker Toolbox。这里我选择的是 Docker Toolbox,为什么呢?参见官方文档:

https://blog.docker.com/2015/08/docker-toolbox/

首先我们从官网下载最新版的 Windows Docker Toolbox。安装后会安装一个 VirtualBox 虚拟机,一个 Kitematic,这是 GUI 管理 Docker 的工具,没有发布正式版,不推荐使用,另外还有就是我们在命令行下用到的 docker-machine 和 docker 命令了。

基本使用

安装完成 Toolbox 后会有一个 Docker Quickstart Terminal 的快捷方式,双击运行如果报错,那可能是因为你已经安装了 Hyper-v,所以 VirtualBox 无法用 64 位的虚拟机。需要卸载 Hyper-v。

运行后会在 Virtualbox 中创建一个叫做 default 的虚拟机,然后很有可能会卡在 waiting for an IP 的命令下,然后就死活不动了。我的做法是彻底放弃 Docker Quickstart Terminal,根本不用这玩意儿,关掉,我们用 PowerShell 进行虚拟机的管理。

打开 PowerShell,输入:

docker-machine ls

我们可以看到我们当前的 Docker 虚拟机的状态。如果什么都没有的话,那么我们可以使用以下命令创建一个 Docker 虚拟机。

docker-machine create –driver=virtualbox default

创建完毕后,我们在用 docker-machine ls 确认我们的 Docker 虚拟机在运行中。

然后使用以下命令获得虚拟机的环境变量:

docker-machine env default

然后再输入:

docker-machine env default | Invoke-Expression

这样我们就把当前的 PowerShell 和虚拟机里面的 Docker Linux 建立的连接,接下来就可以在 PowerShell 中使用 docker 命令了。

比如我们要查看当前有哪些镜像:

docker images

当前有哪些容器:

docker ps –a

其他各种 docker 命令我就不在这里累述了。

Docker 虚拟机文件地址修改

默认情况下,docker-machine 创建的虚拟机文件,是保存在 C 盘的 C:\Users\ 用户名 \.docker\machine\machines\default 目录下的,如果下载和使用的镜像过多,那么必然导致该文件夹膨胀过大,如果 C 盘比较吃紧,那么我们就得考虑把该虚拟机移到另一个盘上。具体操作如下:

1. 使用 docker-machine stop default 停掉 Docker 的虚拟机。

2. 打开 VirtualBox,选择“管理”菜单下的“虚拟介质管理”,我们可以看到 Docker 虚拟机用的虚拟硬盘的文件 disk。

3. 选中“disk”,然后点击菜单中的“复制”命令,根据向导,把当前的 disk 复制到另一个盘上面去。

4. 回到 VirtualBox 主界面,右键“default”这个虚拟机,选择“设置”命令,在弹出的窗口中选择“存储”选项。

5. 把 disk 从“控制器 SATA”中删除,然后重新添加我们刚才复制到另外一个磁盘上的那个文件。

这是我设置好后的界面,可以看到我在步骤 3 复制的时候,复制到 E:\VirtualBox\default\dockerdisk.vdi 文件去了。

在 Windows 中玩转 Docker Toolbox

6. 确定,回到 PowerShell,我们使用 docker-machine start default 就可以启动新地址的 Docker 虚拟机了。确保新磁盘的虚拟机没有问题。就可以把 C 盘那个 disk 文件删除了。

【注意:不要在 Window 中直接去复制粘贴 disk 文件,这样会在步骤 5 的时候报错的,报错的内容如下,所以一定要在 VirtualBox 中去复制!】

Failed to open the hard disk file D:\Docker\boot2docker-vm\boot2docker-vm.vmdk. Cannot register the hard disk ‘D:\Docker\boot2docker-vm\boot2docker-vm.vmdk’ {9a4ed2ae-40f7-4445-8615-a59dccb2905c} because a hard disk C:\Users\ 用户名 \.docker\machine\machines\default\disk.vmdk’ with UUID {9a4ed2ae-40f7-4445-8615-a59dccb2905c} already exists. Result Code: E_INVALIDARG (0x80070057) Component: VirtualBox Interface: IVirtualBox {fafa4e17-1ee2-4905-a10e-fe7c18bf5554} Callee RC: VBOX_E_OBJECT_NOT_FOUND (0x80BB0001)

镜像加速

在国内使用 Docker Hub 的话就特别慢,为此,我们可以给 Docker 配置国内的加速地址。然后到 PowerShell 中去依次执行:

docker-machine ssh default 
sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror= 加速地址 |g" /var/lib/boot2docker/profile 
exit 
docker-machine restart default

这样重启 Docker 后就可以用国内的镜像来加速下载了。

试一下下载一个 mysql 看看快不快:

docker pull mysql

下载完镜像,我们运行一个容器:

docker run -d -p 3306:3306 –name mysql -e MYSQL_ROOT_PASSWORD=123 mysql:latest

接下来我们打开 windows 下的 mysql 客户端,服务器地址填 docker 虚拟机的 IP 地址,通过 docker-machine env 可以看到,我这里是 192.168.99.100,然后用户名 root,密码 123,这样我们就可以连接到 docker 容器里面的 mysql 了。

【注意,Docker 容器是在 VirtualBox 的虚拟机里面,不是在 Windows 里面,所以不能用 127.0.0.1 访问】

 

更多 Docker 相关教程见以下内容

 

Docker 安装应用(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm

 

Ubuntu 14.04 安装 Docker  http://www.linuxidc.com/linux/2014-08/105656.htm

 

Ubuntu 使用 VNC 运行基于 Docker 的桌面系统  http://www.linuxidc.com/Linux/2015-08/121170.htm

 

阿里云 CentOS 6.5 模板上安装 Docker http://www.linuxidc.com/Linux/2014-11/109107.htm

 

Ubuntu 15.04 下安装 Docker  http://www.linuxidc.com/Linux/2015-07/120444.htm

 

在 Ubuntu Trusty 14.04 (LTS) (64-bit)安装 Docker http://www.linuxidc.com/Linux/2014-10/108184.htm

 

在 Ubuntu 15.04 上如何安装 Docker 及基本用法 http://www.linuxidc.com/Linux/2015-09/122885.htm

 

Docker 的详细介绍:请点这里
Docker 的下载地址:请点这里

 

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-12/138565.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3326字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中