DockerToolbox学习教程【转载】
最近在研究虚拟化,容器和⼤数据,所以从Docker⼊⼿,下⾯介绍⼀下在Windows下怎么玩转Docker。
Docker本⾝在Windows下有两个软件,⼀个就是Docker,另⼀个是Docker Toolbox。这⾥我选择的是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
然后再输⼊:
mysql下载后为什么不是一个安装包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⽂件去了。
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配置国内的加速地址。我看了⼀下,DaoCloud和阿⾥云的镜像加速还不错,另外还有⽹易的蜂巢。选⼀个就⾏了。以DaoClound为例,注册账号,然后在就可以看到DaoClound提供给您的镜像加速的URL。然后到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访问】

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。