在Linux容器中如何添加或挂载目录

时间:2019-04-29 03:17:16  来源:igfitidea点击:

如何在两个linux容器之间共享数据。其中一个跑Nginx,另一个用于处理数据。如何在两个目录之间添加或挂载共享目录?

创建一个名为c1的新容器

lxc launch images:centos/8/amd64 c1
lxc list c1

在容器中创建一个名为/dest/的新目录,

lxc exec c1 -- "mkdir -pv /var/www/html/"
lxc exec c1 -- "ls -ld /var/www/html/"

挂载目录

挂载目录到容器中的语法为:

lxc config device add {container-name} {name} disk source={/path/to/source/dir/} path={/path/to/dest/onto/container/}

例如 要将主机的 **/wwwdata/**目录挂载到容器c1 中的目录 /var/www/html/,执行下面的命令

lxc config device add c1 sharedwww disk source=/wwwdata/ path=/var/www/html/
lxc config show c1

修改容器目录读写权限

注意,挂载以后是只读的。重新映射用户ID,以便对挂载的文件夹可以进行读写。

如何允许容器在主机上重新映射用户ID

修改从属用户id文件和从属组id文件 /etc/subuid/etc/subgid

echo "root:1000:1" | sudo tee -a /etc/subuid /etc/subgid

如何在容器内重新映射用户ID

登录到容器,查看用户的id

lxc exec c1 bash
grep ^ykbj /etc/passwd

将主机的用户uid和容器的用户uid 进行映射

lxc config set c1 raw.idmap "both 1000 1000"

重启容器使设置生效:

lxc restart c1

查看容器上的设备,确认磁盘(目录)是否已经加上

lxc config device show c1

重启容器,使用新增目录

lxc restart c1

登录到容器

lxc exec c1 bash

cd /var/www/html/
ls -l
mkdir foo

如何从容器中删除/卸载目录

如果要删除容器的目录(磁盘)可以执行下面的命令

lxc config device show c1
lxc config device remove c1 sharedwww