【问题标题】:How to increase the swap space available in the boot2docker virtual machine?如何增加 boot2docker 虚拟机中可用的交换空间?
【发布时间】:2015-06-25 21:38:53
【问题描述】:

我想在没有太多 RAM 的机器上运行需要大量内存的 docker 容器。我一直在尝试增加可用于容器的交换空间,但无济于事。这是我尝试的最后一个命令:

docker run -d -m 1000M --memory-swap=10000M --name=my_container my_image

按照这些tips 了解如何检查内存指标,我发现了以下内容:

$ boot2docker ssh

docker@boot2docker:~$ cat /sys/fs/cgroup/memory/docker/35af5a072751c7af80ce7a255a01ab3c14b3ee0e3f15341f7bb22a777091c67b/memory.stat
cache 454656
rss 65015808
rss_huge 29360128
mapped_file 208896
writeback 0
swap 0
pgpgin 31532
pgpgout 22702
pgfault 49372
pgmajfault 0
inactive_anon 28672
active_anon 65183744
inactive_file 241664
active_file 16384
unevictable 0
hierarchical_memory_limit 1048576000
hierarchical_memsw_limit 10485760000
total_cache 454656
total_rss 65015808
total_rss_huge 29360128
total_mapped_file 208896
total_writeback 0
total_swap 0
total_pgpgin 31532
total_pgpgout 22702
total_pgfault 49372
total_pgmajfault 0
total_inactive_anon 28672
total_active_anon 65183744
total_inactive_file 241664
total_active_file 16384
total_unevictable 0

是否可以在只有 4G 物理内存的机器上运行需要 5G 内存的容器?

【问题讨论】:

  • 在使用交换之前您不必耗尽内存吗? ...除非系统配置了可交换性。
  • 我需要写一个快速测试来明确内存不足。我想我需要增加 boot2docker-vm 中的交换空间。 carlboettiger.info/2014/08/25/…

标签: memory docker boot2docker


【解决方案1】:

GitHub issue 非常有助于弄清楚如何增加 boot2docker-vm 中的可用交换空间。为了适应我的情况,我使用以下命令 ssh 进入 boot2docker-vm 并设置一个新的交换文件:

boot2docker ssh
export SWAPFILE=/mnt/sda1/swapfile
sudo dd if=/dev/zero of=$SWAPFILE bs=1024 count=4194304
sudo mkswap $SWAPFILE
sudo chmod 600 $SWAPFILE
sudo swapon $SWAPFILE
exit

【讨论】:

  • 对于任何感兴趣的人:要在每个docker-machine 启动时挂载交换文件,您需要通过 ssh 连接到机器并将swapon /mnt/sda1/swapfile 附加到/var/lib/boot2docker/bootsync.sh(或/var/lib/boot2docker/bootlocal.sh)。如果缺少(很有可能),请创建所需的 *.sh 文件。 more info(tl;dr:修改 fstab 不会在 docker 机器的启动之间持续)
猜你喜欢
  • 1970-01-01
  • 2014-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多