在重新启动期间持久化Docker数据根



在运行的Ubuntu系统中,我可以通过使用daemon.json或服务成功地将Docker的默认数据位置从/var/snap/docker/common/var-lib/docker更改为/dockerdata。但是,只有当我在引导系统后停止并启动服务时,这种情况才会改变。在常规启动时,服务从快照位置开始。

停止Docker

sudo systemctl stop docker

编辑/etc/docker/daemon.json

{
"data-root": "/dockerdata"
}

或者,编辑/lib/systemd/system/doker.service(不是两者都编辑!(

...
ExecStart=/usr/bin/dockerd --data-root /dockerdata -H fd:// --containerd=/run/containerd/containerd.sock
...

然后运行

sudo systemctl daemon-reload
sudo systemctl start docker

在重新启动系统之前,此操作一直有效。当它恢复时,Docker使用原始根目录运行。如上所述重新启动Docker,然后根据所需设置更改根目录。docker versiondocker info的输出如下。

Client: Docker Engine - Community
Version:           19.03.12
API version:       1.40
Go version:        go1.13.10
Git commit:        48a66213fe
Built:             Mon Jun 22 15:45:44 2020
OS/Arch:           linux/amd64
Experimental:      false
Server: Docker Engine - Community
Engine:
Version:          19.03.12
API version:      1.40 (minimum version 1.12)
Go version:       go1.13.10
Git commit:       48a66213fe
Built:            Mon Jun 22 15:44:15 2020
OS/Arch:          linux/amd64
Experimental:     false
containerd:
Version:          1.2.13
GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
runc:
Version:          1.0.0-rc10
GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version:          0.18.0
GitCommit:        fec3683
Client:
Debug Mode: false
Server:
Containers: 2
Running: 1
Paused: 0
Stopped: 1
Images: 2
Server Version: 19.03.12
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd
init version: fec3683
Security Options:
apparmor
seccomp
Profile: default
Kernel Version: 5.4.0-40-generic
Operating System: Ubuntu 20.04 LTS
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 15.27GiB
Name: dockerhost
ID: NFF6:PGBA:AD2O:GEET:MYS5:NF23:SW5F:7T6E:XYFI:XNIH:7KRQ:B3NA
Docker Root Dir: /dockerdata
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false

TL;DR:在安装Docker之前,请在基线Ubuntu Server 20.04 LTS上运行sudo snap remove docker && sudo apt remove docker

Ubuntu现在在两个地方安装Docker。有快照和适当的版本。当重新启动守护程序时,它使用apt版本。按照Docker文档中的安装说明,只删除了apt版本并将其重定向到Docker存储库。运行sudo snap remove docker并重新启动后,守护进程现在以正确的根目录启动。

为了证明安装正确,我移除了所有容器并重新构建了它们。它们正确地从/dockerdata中提取数据,并与以前的容器完全一样。此外,它们现在出现在docker ps中,而以前没有出现过。

感谢易赵提供线索。

2020年11月->如果您使用的是windows10,请安装wsl2并安装docker for windows。

这要容易得多。

Docker作为wsl2的一个独立容器运行,因此配置已经预先准备好了。您只需要将ext.hdd重新定位到非C驱动器即可。

如果在linux上,那么是的,所有这些配置。

下载发行版https://learn.microsoft.com/en-us/windows/wsl/install-manual

安装在其他驱动器中https://kontext.tech/column/tools/308/how-to-install-windows-subsystem-for-linux-on-a-non-c-drive

在另一个驱动器中安装docker在Windows 10 Home中使用WSL2时,如何更改docker映像的位置?https://serverfault.com/questions/975980/how-to-move-docker-images-to-other-drive-in-windows

最新更新