如何告诉 Docker 在外部驱动器上存储和运行容器

Sun*_*arc 5 ubuntu docker

我在 Ubuntu Linux 上运行 Docker。我有一个Dockerfile从其他地方带来大量数据的数据。我把它Dockerfile放在我已经安装到本地文件系统 (ext4) 的外部驱动器上。然后我从该外部驱动器文件系统中运行构建。

docker build -t mycontainer .
Run Code Online (Sandbox Code Playgroud)

我在容器构建时观察了驱动器的使用情况。所有驱动器使用都在根文件系统上,而不是连接的驱动器上。

我已经阅读了一些关于将 Docker 根/基从/var/lib/docker另一个位置更改的文章,但到目前为止我得到的只是docker.service: Failed with result 'exit-code'.

我也尝试-g options/lib/systemd/system/docker.service文件中添加:

ExecStart=/usr/bin/dockerd -H fd://  # original
ExecStart=/usr/bin/dockerd -g /new/path/docker -H fd://  # updated
Run Code Online (Sandbox Code Playgroud)

这也没有帮助。

如何告诉 Docker 使用外部驱动器?

Sun*_*arc 7

有几件事帮助我完成了这项工作。首先,我将外部文件系统安装在主目录中,这可能会导致一些权限问题。所以我重新安装了文件系统/mnt并更新了权限和所有权,如下所示:

# chown -R root:root /mnt/external-drive/docker-base
# chmod 701 /mnt/external-drive/docker-base
Run Code Online (Sandbox Code Playgroud)

然后我/etc/docker/daemon.json用这些内容创建了文件:

{
    "graph": "/mnt/external-drive/docker-base"
}
Run Code Online (Sandbox Code Playgroud)

我重新启动了 docker 服务,一切似乎都很好。做一个docker build和外部驱动器正在接收所有内容。

  • 请注意,此标志现在是 --data-root https://docs.docker.com/engine/deprecated/#-g-and---graph-flags-on-dockerd (2认同)