【问题标题】:Install Docker on a specific volume在特定卷上安装 Docker
【发布时间】:2016-02-09 15:53:57
【问题描述】:

有没有办法在特定卷上安装 Docker?

当我使用以下命令在 Amazon Linux 上安装 Docker 时:

sudo yum install docker

然后使用 :

启动 docker 服务
sudo service docker start

它创建了两个数据空间:

  • 数据文件:/dev/loop0
  • 元数据文件:/dev/loop1

我怎样才能让这些空间位于给定的卷上,例如/mnt/docker

【问题讨论】:

    标签: docker


    【解决方案1】:

    这些是设备文件。它们将始终位于/dev 中(实际上不是,但为了简单起见,我们在这里假设一下)。 loop0loop1 是由实际 Docker 卷文件支持的循环设备。您可以使用losetup -l 轻松看到这一点:

    > losetup -l
    NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
    /dev/loop0         0      0         1  0 /var/lib/docker/devicemapper/devicemapper/data
    /dev/loop1         0      0         1  0 /var/lib/docker/devicemapper/devicemapper/metadata
    

    您可能想要做的(取决于您的文件系统布局)将 Docker 运行时目录移动到其他位置(默认为 /var/lib/docker;所有 Docker 卷和图像都存储在那里)。为此,您可以将 -g 标志提供给 Docker 守护进程。

    CentOS/Fedora/RHEL(可能,因为它基于 RHEL,还有 Amazon Linux),您可以为此修改 /etc/sysconfig/docker 文件(看对于OPTIONS 变量)。在 Ubuntu/Debian 中,/etc/default/docker 是可以查看的地方。

    【讨论】:

    • 除了移动 docker 运行时目录没有别的办法吗?
    • @Charlesthk,我仍然不确定您真正想要实现什么。您是否真的试图将 设备文件 移动到另一个位置?如果是这样,为什么?他们自己不占用任何磁盘空间。请原谅我这么说,但这看起来像是XY problem 的情况。
    • 我的问题是我安装了带有大量图像的 docker,最终得到了一个完整的磁盘,没有更多可用空间。这个想法是附加另一个磁盘并在该磁盘上安装 docker 及其所有图像。我不知道 XY 问题,不错的概念 ;-)
    • 你想要 -g 选项,正如我在另一个答案中发布的那样。
    【解决方案2】:

    我能够通过编辑 /etc/sysconfig/docker 让 docker 将其所有数据(容器及其数据卷)存储在文件系统(我的 EBS 卷)中的不同位置

    其中有一行:

    OPTIONS="--default-ulimit nofile=1024:4096"
    

    我添加了 -g 选项,记录在 here

    OPTIONS="--default-ulimit nofile=1024:4096 --graph=/home/ec2-user/myvolume"
    

    其中 myvolume 是我挂载 EBS 卷的目录。当然,您需要停止并重新启动 docker daemon 才能使其生效。

    这是在 Amazon Linux 上。显然,在某些 Linux 上,docker 配置文件是 /etc/default/docker。

    【讨论】:

      猜你喜欢
      • 2014-10-08
      • 2020-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-15
      • 1970-01-01
      • 1970-01-01
      • 2019-09-14
      相关资源
      最近更新 更多