目前,当我创建新的 docker 容器时,共享内存目录的大小限制为 64MB。但是,我需要增加这个大小,因为我的应用程序依赖于这个共享内存。 有没有办法增加docker容器中/dev/shm的大小? 我听说 64MB 是硬编码在 docker 代码中的,如何从源代码安装 docker 并更改 /dev/shm 的值?
如果您使用 docker-compose,如果您希望容器在
running或
your_service.shm_size
building时使用 /dev/shm 大小,则可以设置
your_service.build.shm_size
值。
示例:
version: '3.5'
services:
your_service:
build:
context: .
shm_size: '2gb' <-- this will set the size when BUILDING
shm_size: '2gb' <-- when RUNNING
您可以通过将可选参数
--shm-size
传递给docker run
命令来修改shm大小。默认为 64MB。
例如:
docker run -it --shm-size=256m oracle11g /bin/bash
如果有人使用 1.10.0 之前的旧版 docker,并且由于某种原因无法升级,我可以使用一个解决方法来设置 shm-size,这对我来说效果很好(您需要 sudo 权限才能在主机上创建挂载) :
sudo mkdir /mnt/dockershm
sudo mount -t tmpfs -o size=1G tmpfs /mnt/dockershm
docker run -d -v /mnt/dockershm:/dev/shm dockerimagetorun:latest
有时编辑 docker daemon 的全局配置可能更合适,而不是在 docker-compose.yml 或 cli 中设置值。
这里是守护进程配置文件
的文档选择一种编辑配置的方法:
Settings->[Docker Engine]
。/etc/docker/daemon.json
%programdata%\docker\config\daemon.json
~/.docker/daemon.json
编辑配置文件以更改
shm
默认大小。
示例:
{
...
"default-shm-size" : "128M"
...
}
更改后,可能需要重启docker来重新配置。