从 docker 容器访问 Kubernetes 中的容器安装卷

Accessing container mounted volumes in Kubernetes from docker container

我目前正在尝试从 docker 图像访问安装在我的 Kubernetes 容器中的文件。当我的 docker 图像是 运行.

时,我需要传递带有标志的文件

docker 图像通常是 运行(在容器外)使用命令:

docker run -p 6688:6688 -v ~/.chainlink-ropsten:/chainlink -it --env-file=.env smartcontract/chainlink local n -p /chainlink/.password -a /chainlink/.api

现在我已经成功地使用以下配置将我的环境、密码和 api 文件挂载到 /chainlink,但是当我在 docker 运行 期间尝试访问这些文件时,我得到错误:

flag provided but not defined: -password /chainlink/.password

以下是我目前的Kubernetes Deployment文件

kind: Deployment
metadata:
  name: chainlink-deployment
  labels:
    app: chainlink-node
spec:
  replicas: 1
  selector:
    matchLabels:
      app: chainlink-node
  template:
    metadata:
      labels:
        app: chainlink-node
    spec:
      containers:
        - name: chainlink
          image: smartcontract/chainlink:latest
          args: [ "local", "n", "--password /chainlink/.password", "--api /chainlink/.api"]
          ports:
          - containerPort: 6689
          volumeMounts:
            - name: config-volume
              mountPath: /chainlink/.env
              subPath: .env
            - name: api-volume
              mountPath: /chainlink/.api
              subPath: .api
            - name: password-volume
              mountPath: /chainlink/.password
              subPath: .password
      volumes:
        - name: config-volume
          configMap:
            name: node-env
        - name: api-volume
          configMap:
            name: api-env
        - name: password-volume
          configMap:
            name: password-env

我的文件中是否缺少某些定义,允许我在 运行 连接我的 docker 图像时访问已安装的卷?

将您的 args 更改为:

args: [ "local", "n", "--password", "/chainlink/.password", "--api", "/chainlink/.api"]

你目前的方式,它认为整个字符串 --password /chainlink/.password,包括 space,是一个单一的标志。这就是错误:

flag provided but not defined: -password /chainlink/.password

告诉你。