在Mac OSX Yosemite上为Docker提供更多的交换空间

我正在尝试在docker中添加更多的交换空间以避免安装oracle数据库时出现此错误:

该系统不符合交换空间的最低要求。 根据系统上可用的物理内存量,Oracle数据库11g速成版需要2048 MB的交换空间。 这个系统有1023 MB的交换空间。 在系统上configuration更多的交换空间并重试安装。

我正在按照这里的说明进行评论:

https://forums.docker.com/t/docker-for-mac-configure-swap-space/20656/2但是当我执行mkswap我得到“命令未find”:

mkswap /var/swap.file 

任何想法?

Mac版Docker运行一个Alpine Linux虚拟机来托pipe容器。

这是一个预置的启动镜像,它易于使用,并且随着时间的推移而更新,所以很难定制一些时间,因为大多数configuration在重新启动时会被重置。

在这种情况下,您可以保留交换文件更改,但是像这样的configuration有可能在不通知的情况下更改版本。 运行一个自定义的虚拟机可能会更好,因此交换configuration会挂起。

Docker for Mac 17.06.0

交换由VM中/etc/init.d/automount初始化脚本中的do_swapfile函数控制。 如果交换文件存在,它将按原样使用。 由于交换文件存储在/var因此在重新启动时会持续存在,并且可以手动进行自定义。

screen的mac连接到虚拟机的tty(如果没有它,可以使用brew install screen

 screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty 

然后在VM中,用所需大小的新大小replace现有的交换文件并重新启动该框。 文件的大小是块大小bs * count

  swapoff -a dd if=/dev/zero of=/var/spool/swap bs=1k count=2097152 chmod 600 /var/spool/swap mkswap /var/spool/swap reboot 

当虚拟机重新启动后,您应该能够再次连接,并免费查看虚拟机Swap空间的新大小。

  $ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty / # free total used free shared buffers cached Mem: 3526164 389952 3136212 165956 20968 208160 -/+ buffers/cache: 160824 3365340 Swap: 2097148 0 2097148