阿毛
It's me !
想你所想
Docker Toolbox之Mac配置加速镜像源

不妨先了解下Docker Toolbox Mac运行大致原理


一般情况下,我们mac本地安装了Docker Toolbox,并已经开始使用,而在使用过程中,发现从默认的官方镜像源DockerHub拉取镜像速度堪忧(docker info可以看到默认镜像源的信息)

https://file.blog.humh.cn/2021/03/d2b5ca33bd970f64a6301fa75ae2eb22-2.png

所以此时需要使用国内的加速镜像源,本文总结下,如何在这种情况去修改默认镜像源。


按照Docker Toolbox在mac上的使用方法,安装Docker Toolbox成功后,应用列表中会出现两个应用,一个VirtualBox虚拟机,一个就是Docker终端程序,我们只需要点击如下这个终端应用即可。

https://file.blog.humh.cn/2021/03/d2b5ca33bd970f64a6301fa75ae2eb22.png

随后就会打开本地的默认终端,启动docker服务。在终端的输出信息中,在开头部分,可以发现这样的内容

Last login: Tue Mar  2 17:34:19 on ttys005
You have new mail.
bash --login '/Applications/Docker/Docker Quickstart Terminal.app/Contents/Resources/Scripts/start.sh'
[oh-my-zsh] Insecure completion-dependent directories detected:
drwxrwxrwx  3 humh  admin  102  7  8  2020 /usr/local/share/zsh
drwxrwxrwx  5 humh  admin  170  7 16  2020 /usr/local/share/zsh/site-functions

可以理解,这个/Applications/Docker/Docker Quickstart Terminal.app/Contents/Resources/Scripts/start.sh是启动docker服务的主要脚本。查看该脚本内容,可以看到docker-machine创建docker虚拟主机的过程。而我们正可以在创建docker虚拟主机时,通过指定参数配置镜像源,这样启动后的docker服务就可以使用加速镜像源了。

1、修改脚本,配置镜像源参数

在脚本中找到docker-machine create的一行,因为脚本中已将docker-machine抽象成一个变量,所以这里找到下面一行即可。

https://file.blog.humh.cn/2021/03/d2b5ca33bd970f64a6301fa75ae2eb22-1.png

在“create”后追加参数--engine-registry-mirror=<your accelerate address>
注意,这里的<your accelerate address>是你需要配置的加速镜像源地址,以阿里云举例,https://ubggxtiw.mirror.aliyuncs.com,所以配置后的结果为

https://file.blog.humh.cn/2021/03/d2b5ca33bd970f64a6301fa75ae2eb22-5.png

然后保存,这里可能编辑需要权限sudo。

2、停止并删除原先的Docker虚拟机

docker-machine ls查看现有Docker虚拟机情况

humh@MacBook-Pro  ~  docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER      ERRORS
default   *        virtualbox   Running   tcp://192.168.99.101:2376           v19.03.12

默认会创建一个名为“default”的虚拟机。

停止并删除正在运行的Docker虚拟机

humh@MacBook-Pro  ~  docker-machine stop default
Stopping "default"...
Machine "default" was stopped.
humh@MacBook-Pro  ~  docker-machine rm default
About to remove default
WARNING: This action will delete both local reference and remote instance.
Are you sure? (y/n): y
Successfully removed default

这里之所以删除旧的Docker镜像,而不仅仅停止运行,是因为我们配置新镜像源的方式就是通过在创建虚拟机(docker-machine create)时,指定参数生效的。而从脚本内容可以看到,它的逻辑是会先判断是否已存在Docker镜像,不存在才会创建新的虚拟机,触发docker-machine create

https://file.blog.humh.cn/2021/03/d2b5ca33bd970f64a6301fa75ae2eb22-6.png

就是上图这部分,如果已存在镜像,则圈红部分命令执行结果会是0,就不会走入下面紧接着的if逻辑中。

3、验证配置结果

重启点击Docker终端的app,会新打开的一个终端窗口(其实是重新创建一个Docker虚拟机并启动)。

键入docker info

https://file.blog.humh.cn/2021/03/d2b5ca33bd970f64a6301fa75ae2eb22-7.png

在输出信息中,可以看到生效的加速镜像源。


除了上面这种配置方式,其实还可以通过登录已创建的Docker虚拟机来修改配置,只不过本人未尝试,不在此赘述。

大致过程可能如下(引用自阿里云文档:https://help.aliyun.com/document_detail/60750.html?spm=a2c4g.11186623.6.558.64f963daspwkWO

执行docker-machine ssh <machine-name>命令以登录虚拟机。

修改/var/lib/boot2docker/profile文件,将--registry-mirror=<your accelerate address>添加到EXTRA_ARGS中。

执行sudo /etc/init.d/docker restart命令以重启Docker服务。

本文参考

发表评论

textsms
account_circle
email

想你所想

Docker Toolbox之Mac配置加速镜像源
不妨先了解下Docker Toolbox Mac运行大致原理 一般情况下,我们mac本地安装了Docker Toolbox,并已经开始使用,而在使用过程中,发现从默认的官方镜像源DockerHub拉取镜像速度堪忧(do…
扫描二维码继续阅读
2021-03-02