docker - 让 docker build --memory-swap=20g 使用可用的交换空

我运行了 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 swappiness。

$ 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 构建命令:

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 build 似乎用完了 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?我们怎样才能让它使用可用的交换空间?

最佳答案

也许您应该尝试使用 --privileged 标志运行它。

docker run -ti --privileged yourimage

但请确保您知道自己在做什么。

您还应该阅读 docker-tips-privilaged-flag

关于docker - 让 docker build --memory-swap=20g 使用可用的交换空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58895103/

相关文章:

google-cloud-platform - 使用 --allow-unauthenticated

javascript - 如何使用 ngx-export-as 中的选项

amazon-web-services - 您应该使用客户端凭据授权类型来验证服务器到服务器吗?

python - 如何使用需要使用 MLflow 的二维以上输入形状的模型进行预测?

apache-spark - 使用来自 s3 存储桶的数据在 AWS EMR 上使用 pyspark

javascript - 单击通知打开已安装的 PWA

java - 如何设置不需要凭据的 Localstack 容器?

gradle - pivotal/LicenseFinder 为 Gradle 项目返回 "No d

leaflet - 校正 Rayshader 的卫星图像覆盖

linux - Podman (libpod) 在使用 SELinux 上下文挂载 shm 时无法运