我的主要问题始于我试图将Docker映像部署到GCP并收到错误No Space Left On Device。经过一段时间的研究,我发现我需要删除/var/lib/docker并重新拉取映像。
sudo umount /var/lib/docker/
sudo systemctl stop docker
sudo umount /var/lib/docker/
sudo rm -rf /var/lib/docker/
sudo systemctl restart docker
docker pull myImage
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v "$PWD:/rootfs/$PWD" -w="/rootfs/$PWD" docker/compose:1.26.0 up -d
当我想要清除之前的镜像/容器等时,我运行
docker system prune -a
,但貌似没有什么被清除。每当我想要部署另一个镜像时,同样的问题就会重复出现。由此导致了两个严重的问题,在过去的三天里变得更加糟糕:
- 服务器变得极其缓慢,我收到502 Bad Gateaway(nginx,我认为是服务器停止响应)的错误消息。我收到了一条建议我提高性能的消息:This instance has had high memory utilization recently. Consider switching to the machine type: custom (1 vCPU, 6.25 GB memory)
- 服务器成本大幅增加。每当我部署新的镜像时,我都会被收取20-30欧元的GCP存储egress费用,这个费用不断增加。在过去的三天里,即使我没有部署任何内容,我仍然被收取这个费用。为了做个比较,我的预计服务器总成本从150欧元增加到925欧元。
我的docker镜像总大小约为400 MB,因此不应该导致磁盘满。我的机器类型是custom (1 vCPU, 4.75 GB memory),有一个10 GB标准持久磁盘。
我该如何解决这些问题?我特别关心第一个问题,但我认为第一个问题的答案也应该能够帮助解决第二个问题。
注意:我的VM在德国,因此从gcr.io拉取镜像的成本很高(它是从NA拉取的。我不知道如何从德国拉取)。