在您因为我拥有 12 GB 映像而责备我之前,请知道这是我们处理此特定场景并仍然自动化构建过程的唯一方法。当我完成这个项目时,我会让自己暂停 - 我保证。
现在,我正在使用 Opsworks 开发一个项目,我需要拉下我提到的那个非常大的图像。但是,除非我们使用 AWS 控制台,否则我们无法更改 Opsworks 中 EC2 实例上根卷的大小。因此,我在启动时在
/var/lib/docker/
处安装了 50 GB 卷。然而,Docker API 仍然说我在图像提取过程中磁盘空间不足(50 GB 远远超出了所需)。我猜测 docker 将这些临时文件存储在 /var/lib/docker/
之外的其他地方,但对于我来说,我无法弄清楚在哪里。
天啊,如果有人能想出一种方法来增加 Opsworks EC2 实例的根卷大小而不创建自定义映像,那也太好了。
如有任何帮助,我们将不胜感激。
默认情况下,Docker 将使用
/var/lib/docker/tmp
作为临时目录。这可以使用 docker 守护进程的 DOCKER_TMP
环境变量覆盖。
运行任一“
sudo systemctl cat docker.service
sudo systemctl show docker.service
并寻找--data-root
sudo systemctl show docker.service |grep ExecStart
systemctl show --property=Environment docker
docker info
如何更改: 首先需要停止docker服务,然后
sudo systemctl edit docker.service
然后添加(不要忘记替换下面的
YOURNEWPATH
)
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --data-root=YOURNEWPATH
然后重新加载,然后验证,然后重新开始,等等
请参阅以下步骤以了解更大的情况:
set -exu
SERVICENAME="docker"
SERVICENAME_EXTRA="docker.socket"
NEW_TEMP="/mnt/volume_lon1_01/dockerd1"
echo "This script is never tested. You too, don't run it. It is for documentation purposes only."
exit 1
# keep a backup somewhere
sudo systemctl cat docker.service >$(mktemp --suffix=.docker-service-config-values-backup.txt -p .)
# Stop docker and related services
sudo systemctl stop $SERVICENAME_EXTRA
sudo systemctl stop $SERVICENAME
# {
sudo mkdir -p /etc/systemd/system/$SERVICENAME.service.d/
sudo tee /etc/systemd/system/$SERVICENAME.service.d/override.conf \
<< EOF_OVERRIDE.CONF
[Service]
# Added by Looking up from StackOverflow44010124
Environment="DOCKER_TMP=$NEW_TEMP"
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --data-root=$NEW_TEMP
EOF_OVERRIDE.CONF
# or manually:
# sudo systemctl edit docker.service
sudo mkdir $NEW_TEMP
# }
# Reloads the config, necessary before the start
sudo systemctl daemon-reload
# Verify changes by eye:
docker info
sudo systemctl cat docker.service
systemctl show --property=Environment $SERVICENAME
sudo systemctl start $SERVICENAME
sudo systemctl start $SERVICENAME_EXTRA
24.0.5
构建 24.0.5-0ubuntu1~22.04.1
.我在 Ubuntu 上使用 Docker,需要将临时目录移动到另一个驱动器以避免损坏 USB 磁盘。
以下方法对我有用。