在特定的卷上安装Docker

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

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

sudo yum install docker 

然后使用以下命令启动泊坞窗服务:

 sudo service docker start 

它创build两个数据空间:

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

我怎么能有这些空间在一个给定的卷上,例如/mnt/docker

那些是设备文件 。 他们将永远在/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文件(查找OPTIONSvariables)。 在Ubuntu / Debian /etc/default/docker中将是需要查看的地方。

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

其中有:

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

我添加了-g选项,如此处所述

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

myvolume是我挂载EBS卷的目录。 当然,你需要停止并重启docker守护进程才能生效。

这是在亚马逊Linux上。 Dockerconfiguration文件显然是在一些Linux上的/ etc / default / docker。