docker 在提取过程中将临时文件存储在哪里?

问题描述 投票:0回答:3

在您因为我拥有 12 GB 映像而责备我之前,请知道这是我们处理此特定场景并仍然自动化构建过程的唯一方法。当我完成这个项目时,我会让自己暂停 - 我保证。

现在,我正在使用 Opsworks 开发一个项目,我需要拉下我提到的那个非常大的图像。但是,除非我们使用 AWS 控制台,否则我们无法更改 Opsworks 中 EC2 实例上根卷的大小。因此,我在启动时在

/var/lib/docker/
处安装了 50 GB 卷。然而,Docker API 仍然说我在图像提取过程中磁盘空间不足(50 GB 远远超出了所需)。我猜测 docker 将这些临时文件存储在
/var/lib/docker/
之外的其他地方,但对于我来说,我无法弄清楚在哪里。

天啊,如果有人能想出一种方法来增加 Opsworks EC2 实例的根卷大小而不创建自定义映像,那也太好了。

如有任何帮助,我们将不胜感激。

amazon-web-services docker amazon-ec2 aws-opsworks
3个回答
4
投票

默认情况下,Docker 将使用

/var/lib/docker/tmp
作为临时目录。这可以使用 docker 守护进程的
DOCKER_TMP
环境变量覆盖。


0
投票

运行任一“

  1. sudo systemctl cat docker.service
  2. sudo systemctl show docker.service
    并寻找
    --data-root
    • sudo systemctl show docker.service |grep ExecStart
  3. systemctl show --property=Environment docker
  4. 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

  • 注意:记下以前的值
  • 自 Docker 版本
    24.0.5
    构建
    24.0.5-0ubuntu1~22.04.1
    .
  • 以上脚本用于步骤文档,尚未作为整个脚本进行测试。

-1
投票

我在 Ubuntu 上使用 Docker,需要将临时目录移动到另一个驱动器以避免损坏 USB 磁盘。

以下方法对我有用。

  1. 停止泊坞窗
  2. 移动目录和内容。
  3. 创建从原始位置到新位置的符号链接。
  4. 启动docker。
© www.soinside.com 2019 - 2024. All rights reserved.