嗨,我正在运行kubernetes集群,我在那里运行mailhog容器。
但我需要运行它与自己的docker运行参数。如果我会运行它在docker直接。我会使用命令:
docker run mailhog/mailhog -auth-file=./auth.file
但我需要通过Kubernetes pod运行它,我的pod看起来像:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: mailhog
spec:
replicas: 1
revisionHistoryLimit: 1
strategy:
type: RollingUpdate
template:
metadata:
labels:
app: mailhog
spec:
containers:
- name: mailhog
image: us.gcr.io/com/mailhog:1.0.0
ports:
- containerPort: 8025
如何通过kubernetes实现使用参数-auth-file=./auth.file运行Docker容器。谢谢。
我尝试在containers
下添加
command: ["-auth-file", "/data/mailhog/auth.file"]
但之后我就
Failed to start container with docker id 7565654 with error: Error response from daemon: Container command '-auth-file' not found or does not exist.
4条答案
按热度按时间wxclj1h51#
感谢@lang2
这是我部署yaml:
n3schb8v2#
在kubernetes中,
command
等同于ENTRYPOINT
。在您的情况下,应该使用args
。https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#container-v1-core
mznpcxlj3#
您的思路是正确的,只是还需要将
command
数组中二进制文件的名称作为第一个元素,您可以通过查看相应的Dockerfile
(CMD
和/或ENTRYPOINT
)来找到这一点。在这种情况下:
command: ["Mailhog", "-auth-file", "/data/mailhog/auth.file"]
mwkjh3gx4#
我需要类似的任务(我的目标是将应用程序配置文件传递给应用程序),我所做的如下:
在kubernetes yml文件的部署部分设置环境变量。
在dockerfile中使用此环境变量作为命令行参数。