目录

隐藏
  1. 装完 Docker Toolbox 后发现下载镜像速度太慢,是不是需要修改什么配置文件?
  2. 如何在 Docker Toolbox 中创建的 default 虚拟机中添加DOCKER_OPTS之类的配置?
  3. docker-machine 创建的主机怎么直接 ssh 进去?改了 root 密码好像也没用?
  4. docker-machine 使用 -d generic 时,指定用户 --generic-ssh-user 后发现要 sudo 密码,结果报错退出,这是怎么回事?
装完 Docker Toolbox 后发现下载镜像速度太慢,是不是需要修改什么配置文件?
安装 Docker Toolbox 时,安装程序会使用 docker-machine 为你创建一个名为 default 的虚拟机:

docker-machine create -d virtualbox default
这个虚拟机没有加任何参数,因此对于拥有伟大的墙的国内网络来说,有些不方便使用。所以最简单的做法是在安装完 Docker Toolbox 后,删掉默认的虚拟机,然后重新创建该虚拟机,创建时加入有中国特色的配置。

docker-machine rm default
docker-machine create -d virtualbox \
--engine-registry-mirror https://jxus37ac.mirror.aliyuncs.com \
--engine-insecure-registry 192.168.99.0/24 \
--engine-storage-driver overlay2 \
default
删除 default 虚拟机的时候要注意,其中镜像、容器等内容都会被删除。

如何在 Docker Toolbox 中创建的 default 虚拟机中添加DOCKER_OPTS之类的配置?
其实在最初创建该docker host时,就可以利用 docker-machine 指定引擎配置参数,如果不要紧,可以直接rm掉这个虚拟机,重新建立。

如果不方便 rm 掉这个虚拟机,可以 docker-machine ssh 进入这个虚拟机,然后修改 /var/lib/boot2docker/profile 文件,修改里面的 EXTRA_ARGS 参数即可。

docker-machine 创建的主机怎么直接 ssh 进去?改了 root 密码好像也没用?
docker-machine 创建的主机,会遵循安全最佳实践,因此一般不会允许 root 登录,而且一般不会允许密码登录,只允许密钥登录(也就是很多国内文章称为的免密登录,其实并非免密)。

因此,使用密钥 ~/.docker/machine/machines/<机器名>/id_rsa 登录即可。

ssh -i ~/.docker/machine/machines/default/id_rsa \
-o UserKnownHostsFile=/dev/null \
-o StrictHostKeyChecking=no \
docker@$(docker-machine ip default)
这个例子中连接的是 default 这个机器,需要连接其它的机器换成别的即可。另外的两个 -o 的参数是让其不要校验服务器密钥,这当然是不安全的,不过这里只是试验的虚拟机,所以没关系。

docker-machine 使用 -d generic 时,指定用户 --generic-ssh-user 后发现要 sudo 密码,结果报错退出,这是怎么回事?
你应该再仔细看看 generic 的官方文档:https://docs.docker.com/machine/drivers/generic/#/sudo-privileges

里面说的很清楚,默认用户是 root,但如果通过 --generic-ssh-user 指定其它用户的话,该用户必须拥有无密码sudo的能力,换句话说,就是在 sudoers 文件中对该用户配置 NOPASSWD。