标签: mounted-volumes

孤岛Docker挂载主机卷?

我只是检查了我的/ var/lib/docker/volumes文件夹,发现它正在破坏名为Docker UUID的文件夹,每个文件夹都包含一个config.json文件,其中的内容沿着

{"ID":"UUID","Path":"/path/to/mounted/volume","IsBindMount":true,"Writable":true}
Run Code Online (Sandbox Code Playgroud)

哪里

/path/to/mounted/volume
Run Code Online (Sandbox Code Playgroud)

是主机上的文件夹的路径,该文件夹在某个时刻使用-v开关安装到docker容器上.我有这样的文件夹可以追溯到我使用Docker进行实验的开始,即大约3周前.

有问题的容器很久以前就被停了下来,并且很久以前就停泊了这些容器,所以我看不出那些条目没有超过他们的销售日期.这引出了一个问题 - 剩下的就是我看到了一个错误,还是需要从/ var/lib/docker/volumes手动丢弃这些条目?

docker mounted-volumes

62
推荐指数
3
解决办法
2万
查看次数

更改安装在投影卷上的kubernetes机密文件的默认文件所有者和组所有者

我是K8S的新手。我有一个yaml文件,该文件生成安装在投影卷上的kubernetes机密。执行后,我发现秘密文件(与秘密一起打包)将“ root”显示为文件所有者和组所有者。我想将文件所有者和组所有者更改为同一特定用户(例如450)。

我曾尝试从初始化容器中使用“ chown”(尝试过但失败了),但出现错误,提示“只读文件系统”,并且无法修改文件和组所有者。我不想在securitycontext下使用“ fsGroup”。我观察到使用fsGroup时,“ items”下的“ mode:”选项的行为无法预测。

有什么方法可以修改通过计划卷安装的kubernetes秘密文件的默认文件和组所有者吗?

我在下面提供示例代码。假设我想在以下示例中更改“密码”文件(在“ mysecret2”下)的文件和组所有者。如何实现呢?

apiVersion: v1
kind: Pod
metadata:
  name: volume-test
spec:
  containers:
  - name: container-test
    image: busybox
    volumeMounts:
    - name: all-in-one
      mountPath: "/projected-volume"
      readOnly: true
  volumes:
  - name: all-in-one
    projected:
      sources:
      - secret:
          name: mysecret
          items:
            - key: username
              path: username
      - secret:
          name: mysecret2
          items:
            - key: password
              path: password
              mode: 511
Run Code Online (Sandbox Code Playgroud)

kubernetes mounted-volumes kubernetes-secrets

10
推荐指数
2
解决办法
3055
查看次数

Kubernetes 中的两个卷是否可以具有相同的 PVC?

我的 Pod 声明了两个不同的卷。

我使用一些定义模板,并且根据某些情况的环境,我想对两个卷重复使用相同的声明。

这会导致错误:

    Unable to mount volumes for pod "task-pv-pod_<...>": timeout expired waiting for volumes to attach/mount for pod "<...>"/"task-pv-pod". list of unattached/unmounted volumes=[task-pv-storage1]
Run Code Online (Sandbox Code Playgroud)
  • 它适用于两种不同的声明。
  • 可以在多个 Pod 中重复使用相同的声明。

这是一个简化的 pod 定义:

kind: Pod
apiVersion: v1
metadata:
  name: task-pv-pod
spec:
  volumes:
    - name: task-pv-storage1
      persistentVolumeClaim:
       claimName: task-pv-claim
    - name: task-pv-storage2
      persistentVolumeClaim:
       claimName: task-pv-claim
  containers:
    - name: task-pv-container
      image: nginx
      ports:
        - containerPort: 80
          name: "http-server"
      volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: task-pv-storage1
        - mountPath: "/usr/share/nginx/something-else"
          name: task-pv-storage2
Run Code Online (Sandbox Code Playgroud)

那么为什么它不起作用呢?

mount kubernetes mounted-volumes persistent-volumes persistent-volume-claims

8
推荐指数
2
解决办法
5690
查看次数

Windows Docker mongo 容器不适用于卷挂载

我有以下 docker 命令

docker run -v //c/data:/data/db mongo
Run Code Online (Sandbox Code Playgroud)

我从 docker / mongo 得到以下错误响应

MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=8706cbf1b78f
db version v3.4.2
git version: 3f76e40c105fc223b3e5aac3e20dcd026b83b38b
OpenSSL version: OpenSSL 1.0.1t  3 May 2016
allocator: tcmalloc
modules: none
build environment:
    distmod: debian81
    distarch: x86_64
    target_arch: x86_64
options: {}
wiredtiger_open config: create,cache_size=478M,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
WiredTiger error (1) [1489982988:687653][1:0x7fec9df0ccc0], connection: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted
Assertion: 28595:1: Operation not permitted src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 267
exception in initAndListen: 28595 1: Operation not permitted, terminating
shutdown: going …
Run Code Online (Sandbox Code Playgroud)

mongodb docker mounted-volumes docker-compose

5
推荐指数
1
解决办法
6700
查看次数

Docker 绑定挂载卷不传播由 angular `ng serve` 执行监视的更改事件

遵循以下步骤:

  1. 定义 Dockerfile:

    FROM node:alpine
    
    RUN yarn global add @angular/cli
    RUN yarn global add node-sass
    
    RUN mkdir /volumes
    
    WORKDIR /volumes
    
    EXPOSE 4200
    
    ENTRYPOINT ["ng"]
    
    Run Code Online (Sandbox Code Playgroud)
  2. 从这个 Dockerfile 构建一个镜像:

    docker build -t my_angular_image .
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使用图像创建一个新的 angular 应用程序:

    // Create the new app
    docker run --rm --mount type=bind,src=$PWD,dst=/volumes my_angular_image new my-app --directory app --style scss
    // Change ownership of the generated app
    sudo chown -R $USER:$USER .
    
    Run Code Online (Sandbox Code Playgroud)
  4. 根据镜像,运行一个容器绑定挂载应用程序卷:

    docker run -p 4200:4200 --mount type=bind,src=$PWD/app,dst=/volumes my_angular_image serve --host 0.0.0.0
    
    Run Code Online (Sandbox Code Playgroud)

结果: 第一次编译按预期工作,容器为应用程序提供服务。但是,当更改必须ng serve在容器中监视的文件的值(来自主机)时,不会触发新的角度构建(因此,不会更新服务的应用程序)。 …

docker dockerfile mounted-volumes angular-cli angular

5
推荐指数
1
解决办法
1734
查看次数

Docker Desktop 2.2+ 在主机卷挂载时性能极其缓慢

我有一个在文件 io 方面非常密集的构建。它涉及 70k 个松散文件以及相当数量的压缩/解压缩。

当使用主机卷挂载在 Docker Desktop 2.2+ 容器内运行时,此构建的性能会直线下降。

12 分钟 - 直接 Windows 10

19 分钟 - Docker Desktop 2.1.0.5 针对主机安装的卷(Windows /c 驱动器)

71 分钟 - Docker Desktop 2.3.0.2 针对主机安装的卷(Windows /c 驱动器)

2 分钟 - Docker Desktop 2.1.0.5 对抗容器文件系统

2 分钟 - Docker Desktop 2.3.0.2 对抗容器文件系统

即使使用 Docker 2.1.0.5 对抗主机卷挂载,性能也不是很好。但是随着 DD 2.3 从 ~19 分钟到 ~71 分钟是头脑麻木。

还有其他人在文件 io 密集型任务中看到这种性能下降吗?

windows docker mounted-volumes

5
推荐指数
1
解决办法
1849
查看次数

使用Swift获取已装入的卷列表?

有谁知道如何获得使用Swift安装的所有可移动卷的列表?

我已经尝试了这个,但它返回了外部驱动程序的所有文件和子文件夹的列表:

let filemanager:NSFileManager = NSFileManager()
        let files = filemanager.enumeratorAtPath("/Volumes")


        while let file = files?.nextObject() {
            println(file)
            menu.addItem(NSMenuItem(title: file as! String, action: Selector(""), keyEquivalent: ""))
        }
Run Code Online (Sandbox Code Playgroud)

macos cocoa swift mounted-volumes

4
推荐指数
1
解决办法
2674
查看次数

在 Azure DevOps 中运行 yaml-pipeline 时将存储库挂载到 docker 映像中

我正在使用容器步骤在 Azure Devops yaml-pipeline 中运行 docker 映像。但是,我在安装存储库内容时遇到问题,以便可以从 docker 映像内部访问它。

Azure Devops pipeline.yml 文件如下:

container:
  image: 'image-name'
  endpoint: 'foo'
  options: '-v $(Build.SourcesDirectory):/testing'

steps:
- script: echo Hello, world!
  displayName: 'Run a one-line script inside docker image'
Run Code Online (Sandbox Code Playgroud)

此操作失败并显示错误消息:

Error response from daemon: create $(Build.SourcesDirectory): "$(Build.SourcesDirectory)" includes 
invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended 
to pass a host directory, use absolute path
Run Code Online (Sandbox Code Playgroud)

我还尝试替换$(..)$$[..](请参阅此处,但这会导致相同的错误。此外,${{..}}管道甚至不会启动(错误:UI 中的“在此上下文中不允许使用模板表达式”)

如果我删除options脚本运行,但存储库未安装。 …

docker mounted-volumes azure-devops

4
推荐指数
1
解决办法
2353
查看次数

Docker 卷安装问题到已安装的文件夹

我们已经使用 (docker-compose) 卷将 Linux 机器中的文件夹挂载到我们的 docker 容器应用程序: - /mnt/share:/mnt/share

/mnt/share 是机器中的一个挂载文件夹(不是机器中的真正文件夹,它是我们的文件服务器)。如果由于某种原因该安装丢失然后再次重新安装。在容器重新启动之前,在 docker 容器中运行的应用程序无法访问已安装的文件夹。

unix mount docker mounted-volumes docker-compose

4
推荐指数
1
解决办法
214
查看次数

Docker 问题:删除绑定安装的卷

对于我犯的这个简单错误,我无法在网上找到任何帮助,所以我正在寻求一些帮助。我正在使用服务器在容器中运行 docker 映像,但我输入错误,给自己带来了烦恼。我运行了命令

docker run --rm -v typo:location docker_name
Run Code Online (Sandbox Code Playgroud)

由于我在安装目录时出现了拼写错误,因此它在主机上创建了一个目录,当容器结束时,该目录仍然存在。我尝试删除它,但我收到错误

rm -rf typo/
rm: cannot remove 'typo': Permission denied
Run Code Online (Sandbox Code Playgroud)

我现在知道我应该使用--mount而不是-v为了安全,但损害已经造成;如何在无法访问创建该目录的容器的情况下删除该目录?

我提前道歉,我对 docker 的了解相当有限。我学习它主要是为了使用特定的图像,然后我通过谷歌搜索来完成剩下的工作。

command-line docker mounted-volumes docker-volume

4
推荐指数
1
解决办法
2041
查看次数