Я столкнулся с проблемой, что память, используемая контейнером, продолжает увеличиваться, когда приложение внутри контейнера записывает журнал в файл в смонтированном каталоге.
Я ожидаю, что использование памяти от этого не увеличится. Кто-нибудь знает, почему он увеличивается? Спасибо !!
Вот что я сделал:
Напишите приложение, которое просто пишет "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 .
Докерфайл
FROM golang RUN mkdir -p /home/mylog COPY main.go /go WORKDIR /go CMD ["go","run","main.go"]
- Запустите контейнер с параметром -v, отключив текущий каталог.
docker run -d -v $PWD:/home/mylog mylog
- Проверить использование памяти
docker stats
- Он использует 527 МБ.
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
- Через несколько секунд это 844,8 МБ.
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
- Он продолжает увеличиваться, и хост в конце концов падает.