在特定卷上安装Docker

在特定卷上安装Docker,docker,Docker,有没有办法在特定卷上安装Docker 当我使用以下命令在Amazon Linux上安装Docker时: sudo yum install docker 然后使用以下命令启动docker服务: sudo service docker start 它创建两个数据空间: 数据文件:/dev/loop0 元数据文件:/dev/loop1 如何使这些空间位于给定卷(例如/mnt/docker)上?这些是设备文件。它们将始终位于/dev中(实际上不是,但是为了简单起见,让我们假设一下)loop0和l

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

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

sudo yum install docker
然后使用以下命令启动docker服务:

sudo service docker start
它创建两个数据空间:

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

如何使这些空间位于给定卷(例如
/mnt/docker
)上?

这些是设备文件。它们将始终位于
/dev
中(实际上不是,但是为了简单起见,让我们假设一下)
loop0
loop1
是由实际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卷和图像都存储在那里)。为此,您可以向Docker守护进程提供
-g
标志


CentOS/Fedora/RHEL(可能是因为它基于RHEL,也Amazon Linux),您可以为此修改
/etc/sysconfig/docker
文件(查找
选项
变量)。通过编辑/etc/sysconfig/docker,我可以让docker将其所有数据(容器及其数据卷)存储在文件系统的不同位置(我的EBS卷)

其中有一行:

OPTIONS="--default-ulimit nofile=1024:4096"
我添加了-g选项,如文档所示

其中myvolume是我装入EBS卷的目录。当然,您需要停止并重新启动docker守护进程才能使其生效


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

除了移动docker运行时目录之外,没有其他方法吗?@Charlesthk,我仍然不确定您实际想要实现什么。您是否真的试图将设备文件移动到其他位置?若然,原因为何?它们本身没有占用任何磁盘空间。恕我直言,但这看起来像是一个案例。我的问题是,我安装了带有大量图像的docker,结果是磁盘已满,没有更多可用空间。其想法是连接另一个磁盘,并在该磁盘上安装docker及其所有映像。我不知道XY问题,概念不错;-)那么你想要-g选项,正如我在另一个答案中所发布的那样。
OPTIONS="--default-ulimit nofile=1024:4096 --graph=/home/ec2-user/myvolume"