我已经运行free -h
,看到我有29G的交换空间。
total used free shared buff/cache available
Mem: 15G 6.9G 8.8G 17M 223M 8.9G
Swap: 29G 2.0M 29G
我还启用了100个交换。
$ sudo sysctl vm.swappiness=100
vm.swappiness = 100
$ cat /proc/sys/vm/swappiness
100
但是,docker build --memory-swap=20g
似乎没有使用交换空间。这是整个docker构建中htop
的输出。
1 [|||||||||||||||| 18.7%]
2 [||||||| 7.3%]
3 [|||||||||||||||||||||| 26.5%]
4 [||||||||||||||| 18.0%]
Mem[||||||||||||||||||||||||||||||||||| 6.47G/15.9G]
Swp[| 2.00M/29.6G]
这是docker build命令:
docker build --build-arg NODE_OPTIONS="--max-old-space-size=325" \
--memory=600m --memory-swap=20g \
--cpu-period=100000 --cpu-quota=50000 \
--no-cache --tag farm_app_image:latest --file Dockerfile .
docker构建似乎正在用完RAM,因为构建的内部进程(NodeJS)耗尽了堆空间并崩溃。另外,在崩溃之前,内存已满:
shaun@DESKTOP-5T629JB:/mnt/c/Users/bigfo$ docker ps -q | xargs docker stats --no-stream
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
66bdf8efb492 charming_maxwell 51.72% 562.2MiB / 600MiB 93.70% 46.8MB / 1.53MB 277MB / 230MB 94
为什么不使用交换空间就用完RAM?我们如何利用可用的交换空间?
答案 0 :(得分:1)
也许您应该尝试使用--privileged
标志来运行它。
docker run -ti --privileged yourimage
但是请确保您知道自己在做什么。