【发布时间】:2021-05-07 11:28:48
【问题描述】:
我有一个 docker-compose 项目,它启动了一个在容器目录上安装 CIFS 共享的服务。 以下是 docker-compose.yml 的一部分:
version: "2"
...
services:
myservice:
...
volumes:
- wr-imp:/opt/data
...
volumes:
wr-imp:
driver: local
driver_opts:
type: cifs
device: "//192.168.131.18/"
o: "addr=192.168.131.18,rw"
o: "username=abc,password=cba,domain=DOMINIO,file_mode=0777,dir_mode=0777"
基础 docker 镜像是 Alpine 3.9:https://dl-cdn.alpinelinux.org/alpine/v3.9/。
docker 容器 myservice 正确启动,一切正常。 如果我在 docker 容器中使用“docker exec -it -uroot myservice sh”和 cd on /opt/data 打开一个 shell,我可以正确列出(“ls”)共享 CIFS 中的所有文件,但前提是文件数为小。
例如,如果我将 355 个文件放入共享文件系统(例如来自 Windows 系统),我只会看到 ls 命令列出的 351 个文件(如果我运行“ls -1 | wc -l”或“ls - ls") 从 docker 容器内部(在 "docker exec -uroot -it myservice sh" 和 "cd /opt/data" 命令之后)
如果我使用 /etc/fstab 在 docker 主机(Red Hat 7.6 Maippo 发行版)上安装 CIFS:
//192.168.131.18 /DataTest cifs vers=1.0,username=abc,password=cba,domain=DOMINIO 0 0
如果我运行命令“ls”或“ls -la”或“ls -1 | wc -l”,我会看到 355 个文件。
这不是权限问题,因为
- 共享 CIFS 目录中的所有文件都相同
- 如果我从容器内打开一个隐藏文件,它会定期打开(例如使用 vi)
- 如果我使用“rm *”命令从容器内部删除共享目录中的所有文件,并且在运行“ls”后,我看到之前隐藏了 4 个文件
码头工人版本:
Client:
Version: 1.13.1
API version: 1.26
Package version: docker-1.13.1-109.gitcccb291.e17_7.x86_64
Go version: go1.10.3
Git commit: cccb291/1.13.1
Built: Thu Jan 30 06:20:45 2020
OS/Arch: linux/amd64
Server:
Version: 1.13.1
API version: 1.26 (minimum version 1.12)
Package version: docker-1.13.1-109.gitcccb291.e17_7.x86_64
Go version: go1.10.3
Git commit: cccb291/1.13.1
Built: Thu Jan 30 06:20:45 2020
OS/Arch: linux/amd64
Experimental: false
docker-compose 版本:
docker-compose version 1.24.1, build 4667896b
docker-py version 3.7.3
CPython version 3.6.8
OpenSSL version: OpenSSL 1.1.0j 20 Nov 2018
【问题讨论】:
标签: linux docker-compose ls cifs