Docker绑定通过权限和传播安装不同的行为

问题描述

这是Vagrantfile:

ARG mysql_version

FROM mysql/mysql-server:$mysql_version

RUN mkdir -p /var/log/mysql  && \
    touch /var/log/mysql/mysqld.log && \
    touch /var/log/mysql/mysqld.error.log && \
    chown -R mysql:mysql /var/log/mysql && \
    mkdir -p /var/lib/mysql && \
    touch /var/lib/mysql/temp.file4host.permissions && \
    chown -R mysql:mysql /var/lib/mysql

使用8.0.21标签创建图像。将其命名为bm_my_sql

启动容器而不进行安装:

$ docker run --name no_volumes -d bm_my_sql:8.0.21

并对其进行调查:

$ docker exec -it no_volumes bash
bash-4.2# ls -lan /var/log/mysql
...
-rw-r--r-- 1 27 27    4045 Aug 26 09:40 mysqld.error.log
-rw-r--r-- 1 27 27 6091946 Aug 26 09:57 mysqld.log

bash-4.2#ls -lan /var/lib/mysql
total 183772
-rw-r----- 1 27 27   196608 Aug 26 09:42 #ib_16384_0.dblwr
-rw-r----- 1 27 27  8585216 Aug 26 09:40 #ib_16384_1.dblwr
drwxr-x--- 2 27 27     4096 Aug 26 09:40 #innodb_temp
drwxr-x--- 6 27 27     4096 Aug 26 09:40 .
drwxr-xr-x 1  0  0     4096 Jul 13 05:31 ..
-rw-r----- 1 27 27       56 Aug 26 09:40 auto.cnf
-rw-r----- 1 27 27      179 Aug 26 09:40 binlog.000001
-rw-r----- 1 27 27      361 Aug 26 09:40 binlog.000002

...

在两个文件夹/var/log/mysql/var/lib/mysql中都有文件。文件夹和文件的权限:27:27(属于mysql用户和组)

在主机上创建2个空文件夹:

mkdir -p /home/alex/a/b/empty
mkdir -p /home/alex/a/b/empty2

在一个映射/home/alex/a/b/empty->/var/lib/mysql在另一个映射/home/alex/a/b/empty2->/var/log/mysql

中创建具有绑定安装的容器
docker run --name bm_em_2_nem_lib --mount type=bind,src=/home/alex/a/b/empty,dst=/var/lib/mysql -d bm_my_sql:8.0.21
docker run --name bm_em_2_nem_log --mount type=bind,src=/home/alex/a/b/empty2,dst=/var/log/mysql -d bm_my_sql:8.0.21

现在调查本地文件夹:

$ ls -lan /home/alex/a/b
drwxrwxr-x 6   27   27 4096 Aug 26 11:46 empty
drwxrwxr-x 2 1000 1000 4096 Aug 26 11:46 empty2
$ ls -lan /home/alex/a/b/empty
-rw-r----- 1   27   27 ...
$ ls -lan /home/alex/a/b/empty2
total 8
drwxrwxr-x 2 1000 1000 4096 Aug 26 11:46 .
drwxrwxr-x 7 1000 1000 4096 Aug 26 11:46 ..

我们看到,来自容器中/var/lib/mysql的内容和权限已复制到主机上的/home/alex/a/b/emtpy

但是使用/var/log/mysql/home/alex/a/b/emtpy2并没有发生。在这两种情况下,主机上都存在空文件夹。在容器上-具有相同权限且不为空的文件夹。 但是在一种情况下,文件夹传播了,在一种情况下-不是。

还有什么可能会影响它?我想念什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...