K8s不在永久卷上挂载文件

时间:2019-02-26 23:58:53

标签: docker kubernetes persistent-volumes

我有一个Docker映像,我想在Kubernetes上的一个卷(一个持久卷)上共享整个目录。

Dockerfile

FROM node:carbon
WORKDIR /node-test
COPY hello.md /node-test/hello.md
VOLUME /node-test
CMD ["tail", "-f", "/dev/null"]

基本上,它会复制文件hello.md并将其作为图像的一部分(简称为my-image)。

在Kubernetes部署配置中,我从my-image创建一个容器,并将特定目录共享到一个卷。

Kubernetes部署

# ...
 spec:
    containers:
    - image: my-user/my-image:v0.0.1
      name: node
      volumeMounts:
      - name: node-volume
        mountPath: /node-test
    volumes:
    - name: node-volume
      persistentVolumeClaim:
        claimName: node-volume-claim

我希望在持久卷的目录中看到hello.md文件,但是什么也没显示。

如果我不将容器绑定到卷,则可以看到hello.md文件(带有kubectl exec -it my-container bash)。

我没有做任何与此official Kubernetes example不同的事情。实际上,我可以更改mountPath并切换到正式的Wordpress图片,它可以按预期工作。

Wordpress image如何将所有文件复制到卷目录中?

我自己缺少的Wordpress Dockerfile中有什么?

1 个答案:

答案 0 :(得分:1)

为了不覆盖现有文件/内容,可以使用子路径在现有Container文件系统中挂载testdir目录(在以下示例中)。

 volumeMounts:
  - name: node-volume
    mountPath: /node-test/testdir
    subPath: testdir
volumes:
- name: node-volume
  persistentVolumeClaim:
    claimName: node-volume-claim

有关更多信息,请点击using-subpath