Mac OS上Docker Desktop 安装与配置
Docker Desktop 下载
Docker 的安装文件可以通常docker.com官方网站直接下载,官方提供了不同操作系统版本的Docker安装文件。点击下边的地址可进入下载页面
链接: Download Docker Desktop
如上图所示,Docker 提供了4个版本的Docker Desktop, 其中Mac版本需要大家根据自己的MacBook的芯片进行选择。
开发人员的Docker日常
本人是一名服务端开发人员,Docker在开发的日常工作中扮演了重要的角色,如果你还没有在开发中使用过Docker,强列建议大家使用,因为在云原生应用时代,容器是大家必须要学会使用的一个工具。
- 试想一下,在容器还未出现的年代,如果我们想在自己的Mac电脑上安装某个中间件组件,比如Redis,那么我们通常使用Mac下比较有名的安装工具Homebrew 来进行安装,而Homebrew也是需要安装的。
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
brew install redis
- 如果你所负责的项目中,有些项目使用Mysql 5.7, 而有一些使用Mysql 8.0,你要怎么在这两个版本间切换?
- 有时候想在项目中引用某一个开源组件,比如EMQX。
- 想在本地搭建一个Nexus 私服
- 想构建自己的容器应用
以上就是一些常见的Docker使用场景,我们可以使用Docker来快速且轻松的解决,我们只需要安装好Docker Desktop后,执行Docker pull 命令下载相应的镜像,然后执行docker run 命启来启动相应容器就可以了。
以mysql 为例,如果想下载最新版本的mysql,使用如下命令
docker pull mysql
如果想下载某一个版本的mysql,使用如下命令
docker pull mysql:5.7
关键在于,可以同时运行两个版本的mysql 服务,使用docker大大的简化了不同版本需要同时存在的问题。
如何正确修改Docker的配置
Mac OS下Docker Desktop的默认配置
通常来讲安装好后,也不需要进行什么配置,直接启动Docker Desktop 即可。但本人的MacBook 碰盘空间有限,而且在安装OS时,还特意将磁盘划分为了系统盘和数据盘,其中给到系统盘的空间较少。默认情况下,如果不在修改配置,我们所下载的镜像,以及为容器创建的持久化卷都是保存在系统盘底下,如图所示:
大家可以在安装完DockerDesktop后去检查一下这个目录:
~/Library/Containers/com.docker.docker/Data/vms/0
在data目录下你会找到一个Docker.raw的文件,当我们pull image时我们可以看到该文件的访问时间会产生变化,文件默认大小约64GB(实际为60GB多一点,在终端下查看,可以看到该文件大小为63999836160 字节, 使用 ls -lh 查看,则显示约为60GB。
这里补充一个关于在 Mac OS沙盒机制的一点小知识,在MacOS下,~/Library/Containers 是一个存储 macOS 沙盒应用程序容器的目录。沙盒是一种安全机制,可限制应用程序对系统的访问。每个应用程序都在容器中运行,该容器包含应用程序的代码、数据和配置。
~/Library/Containers 目录中的每个文件夹都代表一个应用程序容器。文件夹的名称是应用程序的唯一标识符。例如,com.apple.Safari 是 Safari 应用程序的容器。
Docker Desktop修改Disk Image Location无效
所以我们安装的Docker Desktop也要遵循这个规则。我们进入Docker Desktop 上配置页面,可以对列如CPU, 磁盘空间等的调整,如下图所示:
这里我们可以看到:Disk image location这个配置:
大家可以检查一下默认配置是什么,是不是就是下面这个路径?
~/Library/Containers/com.docker.docker/Data/vms/0/data/xxxx/DockerDesktop
虽然我们看到这个地方可以修改Disk image location的值,但总会遇到很神奇的事情,即使我们在这里修改成了新的目录,并且重启了DockerEngine,但我们在新的目录下并没有发现任何文件,我尝试了很多次,都是同样的结果,大家可以尝试一下,看看是不是也会如此神奇。不知道这是不是Docker Desktop的一个小小的BUG.
而且当我们退出DockerDesktop应用,然后重启应用并进入设置界面,我们会发现DockerImageLocation的值还原了
怎样才是正确的姿势?
我们回想一下MacOS的沙箱机制,在~/Library目录下,存在这样一个目录:Group Containers,我们可以找到group.com.docker这个目录,底下有一个settings.json文件。
我们通过vim编辑该文件,找到 dataFolder 这一个key,然后修改目录到我们指定的目录就可以了。以下两点需要注意一下,:
- 请先关闭DockerDesktop应用,再进行修改。
- 将默认目录下的Docker.raw文件移至我们新指定的目录
"dataFolder": "/Volumes/Data/01_HOME/DockerDesktop",
重启DockerDesktop后,发现Disk Image Location的值已经变成了我们指定的目录,当我们再pull新的镜像时,数据就会保存到新的位置了,这样我们就节省了不少的宝贵的系统盘空间。
还有哪些坑
- 关于Docker.raw文件大小,最小值似乎是32GB,不能再小了。
- 调整涉及的参数为:“diskSizeMiB”: 32000,
- 向下调整大小要谨慎,因为会导致镜像和容器丢失
- 请不要通过docker volume create命令来创建数据卷
- 请通过-v 参数指定持久化数据卷,可以指定本地盘的某个目录进行挂载 参数说明 :-v [本地目录]:[容器目录]
docker run -d -p 8081:8081 --name nexus -v /Volumes/Data/01_HOME/Nexus:/nexus-data sonatype/nexus3
版权归原作者 txzq 所有, 如有侵权,请联系我们删除。