当容器内的应用程序将日志写入安装目录中的文件时,容器使用的内存不断增加,因此我正面临一个问题。当写入安装目录中的文件时,docker容器不断增加内存使用量
我希望内存使用不会因此而增加。 有没有人知道它为什么会增加? 谢谢!
这里是我做过什么:
写刚刚写的 “Hello World” 到 “/home/mylog/test.txt” 的应用程序。
func main(){ file, _ := os.OpenFile("/home/mylog/test.txt", os.O_WRONLY|os.O_CREATE, 0666) defer file.Close() for { fmt.Fprintln(file, "hello world") } }
构建搬运工图像
docker build -t mylog .
Dockerfile
FROM golang RUN mkdir -p /home/mylog COPY main.go /go WORKDIR /go CMD ["go","run","main.go"]
- 运行带-v选项的容器mouting当前目录。
- 检查存储器使用
- 它使用527MiB。
- 几秒钟后,它是844.8 MIB
- 它不断增加和主机落井下石。
docker run -d -v $PWD:/home/mylog mylog
docker stats
CONTAINER CPU% MEMUSAGE/LIMIT MEM% NET I/O BLOCK I/O PIDS 100.41% 527MiB/15.5GiB 3.32% 648B /0B 72.3MB/0B 15
CONTAINER CPU% MEMUSAGE/LIMIT MEM% NET I/O BLOCK I/O PIDS 100.15% 844.8MiB/15.5GiB 5.32% 648B /0B 72.3MB/0B 15
这难道不是造成永远的循环,你做? –
@DharmaSaputra:永久循环只是将数据打印到文件中。它不会持续使用内存。 – Flimzy
我尝试了我的机器上的代码。实际上'推迟file.Close()'从不执行,文件'test.txt'越来越大。因为它保持附加。 –