从docker容器中访问Kubernetes中的容器的卷(volumes)报flag provided but not defined错误

黑子 发表于: 2019-08-12   最后更新时间: 2019-08-13 21:05:21   2,843 游览

我目前正在尝试从docker镜像访问我的Kubernetes容器中安装的文件。当我的docker镜像运行时,我需要用一个flag传入文件。

Docker镜像我使用以下命令运行的(在容器外):

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

现在我已成功使用以下配置在/chainlink上安装我的env,密码和api文件,但是当在docker运行期间尝试访问文件时,报以下错:

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

以下是我的Kubernetes Deployment yaml文件:

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镜像时访问已安装的volumes,是否我yaml文件中缺了什么定义?

发表于 2019-08-12

它把--password /chainlink/.password当成了整个字符串,包含空格,其实错误

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

已经告诉你了,把你的args改为:

args: [ "local", "n", "--password", "/chainlink/.password", "--api", "/chainlink/.api"]
黑子 -> 半兽人 5年前

谢谢,没注意到这个细节。

你的答案

查看kubernetes相关的其他问题或提一个您自己的问题