我已经成功地能够在使用卷的docker容器之间共享文件夹
docker run -v /host/path:/container/path ...
Run Code Online (Sandbox Code Playgroud)
但我的问题是这与使用VOLUMEDockerfile中的命令有什么区别
VOLUME /path
Run Code Online (Sandbox Code Playgroud)
我正在使用一个有VOLUME命令的图像,我想知道如何与我的主机共享它.我使用-v上面的命令完成了它,但我不知道我是否需要-v和VOLUME.
我正在尝试将nodev添加到我的/etc/fstab文件中.我正在使用下面的Ansible命令,但没有运气.我的问题在于正则表达式,我不是正则表达式的专业人士.
- name: Add nodev to /etc/fstab
lineinfile:
dest=/etc/fstab
backup=yes
backrefs=yes
state=present
regexp='(^/dev[\w/_-]+(\s+(?!nodev)[\w,]+)*)'
line='\1,nodev'
Run Code Online (Sandbox Code Playgroud)
/etc/fstab我试图添加的其中一条线nodev是:
/dev/mapper/ex_sys-ex_home /home /ext4 rw,exec,auto,nouser,sync 1 2
Run Code Online (Sandbox Code Playgroud) 有没有办法将命名卷挂载为非root用户?我试图避免chown在每个Dockerfile中运行一个但我需要非root用户可以写入mount才能编写由映像中的构建创建的工件
这就是我正在尝试的
docker run --rm -it -v /home/bob/dev/:/src/dev -v builds:/mnt/build --name build hilikus/build /bin/bash
Run Code Online (Sandbox Code Playgroud)
但是对于第二个山,我得到了
[user@42f237282128 ~]$ ll /mnt
total 4
drwxr-xr-x 2 root root 4096 Sep 18 19:29 build
Run Code Online (Sandbox Code Playgroud)
我的另一个mount(/src/dev/)由用户拥有,而不是root用户所以它提供了我需要的东西; 但是,我无法对命名卷做同样的事情.
我在本地安装了一个远程驱动器(请参阅GetVolumeNameForVolumeMountPoint()的用户/密码问题(Windows远程驱动器安装?))
问题:WNetAddConnection2()和之间的区别是什么NetUseAdd()? 看来它们每个都允许您为提供用户名和密码的本地驱动器号分配远程驱动器路径.
此外,我可以调用WNetAddConnection2()指定本地驱动器号(工作),或为本地驱动器号指定"NULL",并且控制台net use命令将显示成功将远程驱动器安装到本地"无" - 正如您所期望的那样 - 但是我不确定这种结果的目的.我希望它能在本地系统/进程和远程计算机之间建立"登录凭据",以便其他调用::GetVolumeNameForVolumeMountPoint()具有正确的用户名/密码上下文,但这对我不起作用.
最终目标是在没有本地驱动器号的情况下本地安装远程驱动器(类似于本地GUID路径共享,因为所有26个本地驱动器号都已在使用中),但所有调用都::GetVolumeNameForVolumeMountPoint()失败Logon failure: unknown user name or bad password,即使我成功安装到远程驱动器之后也是如此提供远程用户名和密码(当前使用WNetAddConnection2())的本地驱动器号.
我想知道所有挂载点的存储位置; 即在任何特定目录下?
我希望能够使用C程序列出所有现有的挂载点.我应该使用哪个系统调用或函数?
如果问题的措辞有误,请告诉我.这可能解释了为什么我找不到答案.
我想使用如下命令在主磁盘上找到用法:
du -sh /*
Run Code Online (Sandbox Code Playgroud)
问题是我在根级别有多个挂载点,我想du跳过这些.
我认为-x应该选择这样做,但要么我误解了它的作用,要么我错误地使用它.
如何du在不遍历其他安装的情况下仅应用于根磁盘?
谢谢
我有以下 yaml:
volumeMounts:
- name: app-secret
mountPath: /app
readOnly: true
volumes:
- name: app-secret
secret:
secretName: app-secret
items:
- key: app-secret.json
path: appsettings.secret.json
Run Code Online (Sandbox Code Playgroud)
我希望秘密已安装,/app/appsettings.secret.json但事实并非如此。我不知道它安装在哪里,容器崩溃了,我没有机会kubectl exec进入容器检查安装机密的位置。我的猜测是它会清除/app. 任何建议和见解表示赞赏。
在相当复杂的 Makefile 中,我偶尔会希望仅在目标确实存在时才调用某些规则。例如,我可能创建了一个本地目录并用于losetup将文件挂载到其中。我想在处理挂载点和目录时将其保持打开状态,但在某些操作之前自动关闭它们。
当需要打包时,我想要sync安装文件,umount然后对底层文件执行一些操作。是否有办法反转规则的含义,以便仅在存在特定目标时才执行规则?
目前我正在尝试为客户设置一个用于开发的虚拟机。三个带有 PHP 代码的 SVN 存储库必须合并在一个文件夹中(我知道这很丑,但这就是它们的运行方式)。我用谷歌搜索了一下,发现了mhddfs。所以我检查了一个名为的文件夹中的三个存储库branches:
branches/branch1
branches/branch2
branches/branch3
Run Code Online (Sandbox Code Playgroud)
mhddfs我用at安装了三个分支/mnt/dev。在文件系统级别,一切都按预期工作,因此ls可以正确显示所有三个文件夹的内容(它们是不相交的)。但是,尝试使用 Apache 启动文档根会导致403 Forbidden错误。我也尝试过其他位置/mnt/dev,但没有发现任何差异。
[Mon Feb 06 17:44:41 2012] [error] [client 192.168.56.1]
(13)Permission denied: access to / denied
Run Code Online (Sandbox Code Playgroud)
当我不安装这三个文件夹而只是将index.php文件放入 时/mnt/dev,一切都会按预期进行。我错过了什么吗?
提前感谢您的帮助。
编辑:有关该问题的更多数据:当我创建两个目录时,世界都可以访问......
root@devbox:/tmp > ls -lha
drwxrwxrwt 6 root root 4,0K 6. Feb 20:11 .
drwxr-xr-x 21 root root 4,0K 6. Feb 10:07 ..
drwxrwxrwx 2 www-data vboxsf 4,0K 6. Feb 20:11 test1 # includes …Run Code Online (Sandbox Code Playgroud) 我需要使用个人挂载点(mountpoint =“/my/path/而不是/var/lib/docker...)创建一个带有“docker卷”的卷,但我不能使用像local-persist这样的插件
docker volume create -d local-persist -o mountpoint=/data/images --name=images
Run Code Online (Sandbox Code Playgroud)
我需要这样的东西,但没有插件,也许可以用 --opt= 和之后的东西来完成,但我是 docker 和 linux 的新手。我希望有人可以帮助我,请注意:我需要“docker volume create”,而不是让我在 docker-compose.yml 或类似的东西中使用个人路径的东西。
编辑
我的 docker compose 是这样的
version: '3.1'
services:
grafana:
image: grafana/grafana:5.3.4
ports:
- 3000:3000
volumes:
- grafanasql:/var/lib/grafana
- grafanaconf:/etc/grafana
...
...
volumes:
grafanasql:
external: true
grafanaconf:
external: true
Run Code Online (Sandbox Code Playgroud)
如果我让 docker 创建卷一切正常,但是当我尝试使用外部卷时,使用您的 docker 卷创建它不起作用。
我正在尝试安装一个目录以https://drive.google.com/drive/folders/my_folder_name在 google colab 笔记本中使用。
安装文件夹的说明显示了以 /content/drive 开头的目录示例:
from google.colab import drive
drive.mount('/content/drive')
Run Code Online (Sandbox Code Playgroud)
但我的目录不以 开头/content/drive,并且我尝试过的以下操作均导致ValueError: Mountpoint must be in a directory that exists:
drive.mount("/content/drive/folders/my_folder_name")
drive.mount("content/drive/folders/my_folder_name")
drive.mount("drive/folders/my_folder_name")
drive.mount("https://drive.google.com/drive/folders/my_folder_name")
Run Code Online (Sandbox Code Playgroud)
如何安装不以 开头的 google 驱动器位置/content/drive?
mount-point ×11
docker ×3
mount ×3
linux ×2
ansible ×1
apache ×1
app-secret ×1
c ×1
c++ ×1
du ×1
filesystems ×1
gnu-make ×1
kubernetes ×1
makefile ×1
php ×1
python ×1
regex ×1
volumes ×1
windows ×1