首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨容器共享文件系统

跨容器共享文件系统
EN

Stack Overflow用户
提问于 2020-02-23 14:47:53
回答 2查看 832关注 0票数 0

有没有一种方法可以共享多容器吊舱中的两个容器的文件系统?,而不使用共享卷

我有下面的舱位清单

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: pod 
  name: pod
spec:
  replicas: 1
  selector:
    matchLabels:
      app: pod 
  template:
    metadata:
      labels:
        app: pod 
    spec:
      containers:
      - image: nginx:latest
        name: nginx
      - image: jenkins 
        name: jenkins

我想从nginx容器访问/var/ jenkins _home路径,这在jenkins容器中是可用的。

这只是为了实验目的,我正在尝试学习如何在一个容器中共享文件系统/东西。

EN

回答 2

Stack Overflow用户

发布于 2020-02-23 15:49:30

在没有某种共享卷的情况下,无法在容器之间共享文件。

容器化系统的目标之一是使容器文件系统彼此隔离。具体而言,共享文件存在大量的实际问题(如果容器位于不同的节点上怎么办?如果你有三个副本,分别是Jenkins和Nginx?如果他们都在尝试写同样的文件呢?)一般来说,如果可能的话,最好完全避免共享文件。

在您已经展示的特定示例中,Jenkins CI系统和Nginx服务器的生命周期将完全不同;每当Jenkins构建了一些您不希望重新启动的东西时,也可以重新启动Web服务器,并且您可以很容易地想要扩展Web层而不添加Jenkins工作人员。更好的方法是让Jenkins生成自定义Docker映像,将它们推送到注册表中,然后使用Kubernetes API创建单独的Nginx部署。

在大多数情况下(特别是由于缩放的考虑),您应该完全避免使用多容器吊舱。

(这种设置确实有意义的一个更具体的例子是,如果您将凭据存储在类似Hashicorp服务器的某个地方。您需要一个init容器来连接到Vault,检索凭证,并将它们存放在一个emptyDir卷中,然后主容器就可以开始获得这些凭据了。就主服务器容器而言,它是这个吊舱的唯一重要部分,从逻辑上讲,吊舱不过是带有一些辅助设备的服务器容器。)

票数 2
EN

Stack Overflow用户

发布于 2020-02-23 18:23:24

下面的示例将帮助您如何在cobtainers之间共享卷。

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: two-containers
spec:

  restartPolicy: Never

  volumes:
  - name: shared-data
    emptyDir: {}

  containers:

  - name: nginx-container
    image: nginx
    volumeMounts:
    - name: shared-data
      mountPath: /usr/share/nginx/html

  - name: debian-container
    image: debian
    volumeMounts:
    - name: shared-data
      mountPath: /pod-data
    command: ["/bin/sh"]
    args: ["-c", "echo Hello from the debian container > /pod-data/index.html"]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60363385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档