Mac OS下Docker的安装与配置

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
  • 27
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值