要修改 Docker 的存储路径至 /data/docker
,您可以按照以下步骤操作:
打开终端,使用以下命令停止 Docker 服务:
sudo systemctl stop docker.socket
sudo systemctl stop docker
一开始只执行一条停不了:
sudo mkdir -p /data/docker
编辑 Docker 的 daemon 配置文件 /etc/docker/daemon.json
。如果该文件不存在,您需要创建它。
sudo vi /etc/docker/daemon.json
在文件中添加或修改以下内容:
{
"data-root": "/data/docker"
}
保存并关闭文件。
注意:某些设备,比如我的盒子,打开后是这样的:
添加后变这样:
sudo rsync -aP /var/lib/docker/ /data/docker
rsync -aP /var/lib/docker/ /data/docker
命令解析rsync
: 是一种非常强大的文件和目录同步工具,常用于备份和镜像。-aP
: 这是rsync
命令中的选项,通常组合使用来达到特定的同步效果。
-a
(–archive): 这个选项是多个选项的组合,主要包括保持符号链接(-l),保持权限(-p),保持文件时间戳(-t),保持用户和组信息(-o和-g),以及递归复制目录(-r)。简单来说,就是以“归档模式”来复制,尽量保持原有文件的属性和结构。-P
: 这个选项是--partial --progress
的简写,允许部分文件传输和显示传输过程中的进度信息。如果传输被中断,已传输的部分不会被删除,下次传输时会从中断处继续。显示进度信息可以让用户知道当前传输状态。/var/lib/docker/
: 这是Docker的默认数据存储目录,包括容器、镜像、卷等数据。/data/docker
: 这是目标目录,你想将Docker数据同步到这个位置。这个命令常用于以下几种情况:
这个命令是管理和维护Docker环境时一个非常实用的工具,可以有效地帮助管理员管理大量的容器数据。
使用以下命令重新启动 Docker 服务:
sudo systemctl start docker.socket
sudo systemctl start docker
检查 Docker 是否正确使用新的存储路径,可以查看 Docker 信息:
docker info | grep 'Docker Root Dir'
在 Docker 中,这种警告通常不会影响 Docker 容器的正常运行,它只意味着 Docker 无法强制限制容器的交换内存使用量。这通常与 Linux 内核的某些配置有关,特别是 cgroup 的配置。
注意:如果不放心,可以执行mv /var/lib/docker /var/lib/docker_old
备份检测下
通过使用一下两条命令:
date
df -BM
/
Available 27445M)root@ai-video-ecs-01:/userdata/tmp# date
Thu 11 Jul 2024 01:33:57 PM CST
root@ai-video-ecs-01:/userdata/tmp#
root@ai-video-ecs-01:/userdata/tmp#
root@ai-video-ecs-01:/userdata/tmp# df -BM
Filesystem 1M-blocks Used Available Use% Mounted on
udev 32078M 0M 32078M 0% /dev
tmpfs 6425M 4M 6422M 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 38122M 8911M 27445M 25% /
tmpfs 32124M 0M 32124M 0% /dev/shm
tmpfs 5M 0M 5M 0% /run/lock
tmpfs 32124M 0M 32124M 0% /sys/fs/cgroup
/dev/loop1 64M 64M 0M 100% /snap/core20/2318
/dev/loop0 64M 64M 0M 100% /snap/core20/1828
/dev/loop2 50M 50M 0M 100% /snap/snapd/18357
/dev/loop3 39M 39M 0M 100% /snap/snapd/21759
/dev/vda2 1946M 109M 1719M 6% /boot
/dev/loop4 92M 92M 0M 100% /snap/lxd/24061
/dev/sda1 749867M 4140M 707565M 1% /ky
/dev/sda2 9401234M 2884M 8924482M 1% /data
tmpfs 6425M 0M 6425M 0% /run/user/1000
overlay 9401234M 2884M 8924482M 1% /data/docker/overlay2/c385332babdae4ee85601ffa1dd1ebe6c36fc1f618389ace09b2051731d5fa8c/merged
overlay 9401234M 2884M 8924482M 1% /data/docker/overlay2/31a24b6f39c2ea25d700754b5c9ea78574e772589690437fd60e4b60fac15c0c/merged
overlay 9401234M 2884M 8924482M 1% /data/docker/overlay2/88149e56439d9bad5b2b785f12ff77b6052c5ba369f53f9e12a38698c34615ce/merged
overlay 9401234M 2884M 8924482M 1% /data/docker/overlay2/b2171ae8eaa2b4b6bf61de50165b2e885f6e2d4373d02fd1e492cc1d2158bd9b/merged
overlay 9401234M 2884M 8924482M 1% /data/docker/overlay2/3e9af67e01934706a6712e2a6601292b105c26d5fecf82218f8d7ef65ca30b3d/merged
overlay 9401234M 2884M 8924482M 1% /data/docker/overlay2/341e8bc8f48a17d24ee4005c45cda9e121bececd2b0fea5463b337acbce64f04/merged
overlay 9401234M 2884M 8924482M 1% /data/docker/overlay2/6ee97fa0e1597535d0d70be41d5a3220c6f58ff033dba5388a53034afbeb8f5f/merged
root@ai-video-ecs-01:/userdata/tmp#
/
Available 27444M)hw@ai-video-ecs-01:~$ date
Thu 11 Jul 2024 04:04:38 PM CST
hw@ai-video-ecs-01:~$
hw@ai-video-ecs-01:~$ df -BM
Filesystem 1M-blocks Used Available Use% Mounted on
udev 32078M 0M 32078M 0% /dev
tmpfs 6425M 4M 6422M 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 38122M 8911M 27444M 25% /
tmpfs 32124M 0M 32124M 0% /dev/shm
tmpfs 5M 0M 5M 0% /run/lock
tmpfs 32124M 0M 32124M 0% /sys/fs/cgroup
/dev/loop1 64M 64M 0M 100% /snap/core20/2318
/dev/loop0 64M 64M 0M 100% /snap/core20/1828
/dev/loop2 50M 50M 0M 100% /snap/snapd/18357
/dev/loop3 39M 39M 0M 100% /snap/snapd/21759
/dev/vda2 1946M 109M 1719M 6% /boot
/dev/loop4 92M 92M 0M 100% /snap/lxd/24061
/dev/sda1 749867M 4141M 707564M 1% /ky
/dev/sda2 9401234M 2886M 8924479M 1% /data
tmpfs 6425M 0M 6425M 0% /run/user/1000
/
Available 27444M)root@ai-video-ecs-01:/userdata/tmp# date
Fri 12 Jul 2024 01:51:59 PM CST
root@ai-video-ecs-01:/userdata/tmp#
root@ai-video-ecs-01:/userdata/tmp# df -BM
Filesystem 1M-blocks Used Available Use% Mounted on
udev 32078M 0M 32078M 0% /dev
tmpfs 6425M 4M 6422M 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 38122M 8911M 27444M 25% /
tmpfs 32124M 0M 32124M 0% /dev/shm
tmpfs 5M 0M 5M 0% /run/lock
tmpfs 32124M 0M 32124M 0% /sys/fs/cgroup
/dev/loop1 64M 64M 0M 100% /snap/core20/2318
/dev/loop0 64M 64M 0M 100% /snap/core20/1828
/dev/loop2 50M 50M 0M 100% /snap/snapd/18357
/dev/loop3 39M 39M 0M 100% /snap/snapd/21759
/dev/vda2 1946M 109M 1719M 6% /boot
/dev/loop4 92M 92M 0M 100% /snap/lxd/24061
/dev/sda1 749867M 4154M 707550M 1% /ky
/dev/sda2 9401234M 2903M 8924463M 1% /data
tmpfs 6425M 0M 6425M 0% /run/user/1000
overlay 9401234M 2903M 8924463M 1% /data/docker/overlay2/c385332babdae4ee85601ffa1dd1ebe6c36fc1f618389ace09b2051731d5fa8c/merged
overlay 9401234M 2903M 8924463M 1% /data/docker/overlay2/31a24b6f39c2ea25d700754b5c9ea78574e772589690437fd60e4b60fac15c0c/merged
overlay 9401234M 2903M 8924463M 1% /data/docker/overlay2/88149e56439d9bad5b2b785f12ff77b6052c5ba369f53f9e12a38698c34615ce/merged
overlay 9401234M 2903M 8924463M 1% /data/docker/overlay2/b2171ae8eaa2b4b6bf61de50165b2e885f6e2d4373d02fd1e492cc1d2158bd9b/merged
overlay 9401234M 2903M 8924463M 1% /data/docker/overlay2/3e9af67e01934706a6712e2a6601292b105c26d5fecf82218f8d7ef65ca30b3d/merged
overlay 9401234M 2903M 8924463M 1% /data/docker/overlay2/341e8bc8f48a17d24ee4005c45cda9e121bececd2b0fea5463b337acbce64f04/merged
overlay 9401234M 2903M 8924463M 1% /data/docker/overlay2/6ee97fa0e1597535d0d70be41d5a3220c6f58ff033dba5388a53034afbeb8f5f/merged
root@ai-video-ecs-01:/userdata/tmp#
etc/systemd/system/docker.service.d/override.conf
和修改etc/docker/daemon.json
)在修改 Docker 的存储位置时,可以通过修改 etc/docker/daemon.json
或 etc/systemd/system/docker.service.d/override.conf
来实现,两种方式都是正确的,但它们有不同的用途和适用情况:
修改 /etc/docker/daemon.json
:
daemon.json
文件中设置 data-root
属性,指向新的存储路径。例如:{
"data-root": "/new/path/to/docker-data"
}
修改 /etc/systemd/system/docker.service.d/override.conf
:
override.conf
文件,添加一个新的 ExecStart
行,指定新的存储位置。例如:[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --data-root /new/path/to/docker-data
ExecStart
设置(ExecStart=
),然后重新定义。这样可以确保使用你的自定义设置启动 Docker。总结:选择哪种方法取决于你的具体需求和你对系统的控制级别。如果你希望通过 Docker 自身的配置来管理,使用 daemon.json
是更直接的方法。如果你需要更复杂的配置或者想要控制服务的启动参数,使用 systemd 的 override.conf
方法会更合适。
参考文章:KYSL算能盒子适配soc、emmc系统服务软链接问题ky-check-mounts-and-start-services.service内存不足seaweed传输失败docker.service
因篇幅问题不能全部显示,请点此查看更多更全内容