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

时间:2019-08-12 01:01:25

标签: file docker kubernetes environment-variables volume

我当前正在尝试从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

现在,我已成功使用以下配置在/ chainlink挂载我的环境,密码和api文件,但是在Docker运行期间尝试访问文件时,出现错误:

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

以下是我当前的Kubernetes部署文件

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映像时访问已装载的卷?

1 个答案:

答案 0 :(得分:2)

将您的args更改为:

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

您当前拥有它的方式是认为整个字符串--password /chainlink/.password(包括空格)是一个标志。那就是错误所在:

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

告诉你