(一)docker Toolbox使用——1虚拟机和镜像地址配置
目录1.基本使用1.1 安装遇到问题1.1.1 Docker Quickstart Terminal运行报错1.1.2 创建虚拟机后卡在waiting for an IP1.2 安装过程1.2.1命令创建一个Docker虚拟机1.2.2 确认我们的Docker虚拟机在运行中1.2.3 获得虚拟机的环境变量1.2.4 PowerShell和虚拟机里面的Docker Linux建立的连接1.2.5 其
目录
1.1.1 Docker Quickstart Terminal运行报错
1.1.2 创建虚拟机后卡在waiting for an IP
1.2.4 PowerShell和虚拟机里面的Docker Linux建立的连接
1.3.2 复制当前Docker虚拟机用的虚拟硬盘的文件disk
1. 基本使用
1.1 安装遇到问题
1.1.1 Docker Quickstart Terminal运行报错
安装完成Toolbox后会有一个Docker Quickstart Terminal的快捷方式,双击运行如果报错,那可能是因为你已经安装了Hyper-v,所以VirtualBox无法用64位的虚拟机。需要卸载Hyper-v。
1.1.2 创建虚拟机后卡在waiting for an IP
运行后会在Virtualbox中创建一个叫做default的虚拟机,然后很有可能会卡在waiting for an IP的命令下,然后就死活不动了。我的做法是彻底放弃Docker Quickstart Terminal,根本不用这玩意儿,关掉,我们用PowerShell进行虚拟机的管理。
1.2 安装过程
1.2.1 命令创建一个Docker虚拟机
打开PowerShell,输入:
docker-machine ls
我们可以看到我们当前的Docker虚拟机的状态。如果什么都没有的话,那么我们可以使用以下命令创建一个Docker虚拟机。
docker-machine create --driver=virtualbox default
或者 创建一台安装有Docker环境的Linux虚拟机,指定机器名称为default,同时配置Docker加速器地址。(阿里云加速镜像)https://cr.console.aliyun.com/cn-qingdao/instances/mirrors
docker-machine create --engine-registry-mirror=https://mvnxjwh5.mirror.aliyuncs.com -d virtualbox default
1.2.2 确认我们的Docker虚拟机在运行中
创建完毕后,我们在用docker-machine ls确认我们的Docker虚拟机在运行中。
docker-machine ls
1.2.3 获得虚拟机的环境变量
然后使用以下命令获得虚拟机的环境变量:
docker-machine env default
1.2.4 PowerShell和虚拟机里面的Docker Linux建立的连接
然后再输入:
docker-machine env default | Invoke-Expression
这样我们就把当前的PowerShell和虚拟机里面的Docker Linux建立的连接,接下来就可以在PowerShell中使用docker命令了。
1.2.5 其他命令
比如我们要查看当前有哪些镜像:
docker images
当前有哪些容器:
docker ps –a
其他各种docker命令我就不在这里累述了。
1.3 Docker虚拟机文件地址修改
默认情况下,docker-machine创建的虚拟机文件,是保存在C盘的C:\Users\用户名\.docker\machine\machines\default 目录下的,如果下载和使用的镜像过多,那么必然导致该文件夹膨胀过大,如果C盘比较吃紧,那么我们就得考虑把该虚拟机移到另一个盘上。具体操作如下:
1.3.1 停掉Docker的虚拟机
使用docker-machine stop default停掉Docker的虚拟机。
docker-machine stop default
1.3.2 复制当前Docker虚拟机用的虚拟硬盘的文件disk
(1)打开VirtualBox,选择“管理”菜单下的“虚拟介质管理”,我们可以看到Docker虚拟机用的虚拟硬盘的文件disk。
(2)选中“disk”,然后点击菜单中的“复制”命令,根据向导,把当前的disk复制到另一个盘上面去。
(3)回到VirtualBox主界面,右键“default”这个虚拟机,选择“设置”命令,在弹出的窗口中选择“存储”选项。
(4)把disk从“控制器SATA”中删除,然后重新添加我们刚才复制到另外一个磁盘上的那个文件。
(5)确定,回到PowerShell,我们使用docker-machine start default就可以启动新地址的Docker虚拟机了。确保新磁盘的虚拟机没有问题。就可以把C盘那个disk文件删除了。
docker-machine start default
【注意:不要在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)
1.4 docker镜像加速
如果已经在 1.2.1章节创建过加速镜像,此处就不需要。
1.4.1 简要步骤
在国内使用Docker Hub的话就特别慢,为此,我们可以给Docker配置国内的加速地址。我看了一下,DaoCloud和阿里云的镜像加速还不错,另外还有网易的蜂巢。选一个就行了。以DaoClound为例,注册账号,然后在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
1.4.2 详细步骤
(1)在没有配置镜像之前,输入docker info 命令是看不到 Registry Mirrors相关配置的(本人用的是docker toolbox工具)
(2)执行命令:
sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=https://mvnxjwh5.mirror.aliyuncs.com |g" /var/lib/boot2docker/profile
http://aad0405c.m.daocloud.io为镜像地址,可根据需要配置。可以使用阿里云加速镜像中心 https://mvnxjwh5.mirror.aliyuncs.com
阿里操作地址:(https://cr.console.aliyun.com/cn-qingdao/instances/mirrors)
(3)exit 命令退出虚拟机后执行命令:docker-machine restart default重启
(4)进入default主机后再次执行docker info 命令,可查看到Registry Mirrors为所配置的镜像地址,表示配置成功
这样重启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了。
1.5 docker访问
1.5.1 无法直接通过127.0.0.1访问docker
【注意,Docker容器是在VirtualBox的虚拟机里面,不是在Windows里面,所以不能用127.0.0.1访问】
1.5.2 通过虚拟转发端口实现本地访问
更多推荐
所有评论(0)