2019独角兽企业重金招聘Python工程师标准>>>
安装完成Toolbox后会有一个Docker Quickstart Terminal的快捷方式,双击运行如果报错,那可能是因为已经安装了Hyper-v,所以VirtualBox无法用64位的虚拟机。需要卸载Hyper-v。
1.使用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-machine创建的虚拟机文件,是保存在C盘的C:\Users\用户名\.docker\machine\machines\default 目录下的,该将虚拟机移到另一个盘上。具体操作如下:
1.使用docker-machine stop default停掉Docker的虚拟机。
2.打开VirtualBox,选择“管理”菜单下的“虚拟介质管理”,找到Docker虚拟机用的虚拟硬盘的文件disk。
3.选中“disk”,然后点击菜单中的“复制”命令,根据向导,把当前的disk复制到另一个盘上面去。
4.回到VirtualBox主界面,右键“default”这个虚拟机,选择“设置”命令,在弹出的窗口中选择“存储”选项。
5.把disk从“控制器SATA”中删除,然后重新添加复制到另外一个磁盘上的文件。
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配置国内的加速地址。注册账号,然后在https://www.daocloud.io/mirror 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后就可以用国内的镜像来加速下载了。
docker pull mysql
下载完镜像后,接下来运行:
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123 mysql:latest
docker-machine ip default 可以看到容器的ip, 之后通过IP,用户和密码就可以连接mysql了