【问题标题】:Docker run command options in kubernetesKubernetes 中的 Docker 运行命令选项
【发布时间】:2022-01-27 19:48:56
【问题描述】:

我正在使用以下命令启动我的 docker 容器
docker run -it -d -p 80001:8000.
现在我想通过部署在 kubernetes 中使用 docker 容器。如何为上述参数 -it 和 -d 设置容器规范部署部分。两者都是必需的。所以首先将 stdin 和 tty 分配给 pod,然后让它运行到分离模式。

【问题讨论】:

    标签: docker kubernetes kubernetes-pod docker-run


    【解决方案1】:

    您无需添加-it -d。 Kubernetes deployment 将以分离模式唤醒 pod。交互模式 (-i) 没有意义,因为它在分离模式下运行,并且 -t (allowcate pseudo tty) 也不需要。这里有关于在部署中处理 tty 的线程https://www.reddit.com/r/kubernetes/comments/hczzi2/when_dealing_with_deployments_what_does_tty_true/

    如果您以后需要访问此 pod,可以使用 kubectl exec -ti <podname> -- bash

    请记住,您的 pod 应该在后台运行某种服务或至少一个睡眠循环。

    这里有更多关于如何做这种循环的信息How can I keep a container running on Kubernetes?

    更新:

    如果你想用 -ti 在 Kubernetes 中运行一个 pod,你可以这样做:

    kubectl run -i -t busybox --image=busybox --restart=Never --port=8001

    退出后记得用kubectl delete pod busybox删除它

    如果你想要转发端口,你可以这样做:

    kubectl port-forward busybox 8001:8001 并转到 localhost:8001

    【讨论】:

    • @SiHa 他要求在 kubernetes 中运行容器,-ti 没有关于部署中的端口配置。 How to setup container spec secion of deployment for above mentioned arugment -it and -d
    • @AkshayGopani 无法使用 kubernetes 执行此操作,kubernetes pod 始终以分离模式运行。
    • @AkshayGopani 查看此链接stackoverflow.com/questions/31870222/…
    • @AkshayGopani 我不确定 tty:true 和 stdin:true 会如何影响部署中的 Pod,但如果你只想运行 Pod,你可以这样做 kubectl run -i -t busybox --image=busybox --restart=Never
    • @AkshayGopani 另见kubernetes api reference - pod.spec 并且没有ttystd 字段。因此,正如 TimaK0 正确提到的那样,这些字段没有任何意义。我建议阅读官方 Kubernetes 文档作为最新信息的来源。
    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    相关资源
    最近更新 更多