Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 如何从pod访问本地计算机_Docker_Kubernetes - Fatal编程技术网

Docker 如何从pod访问本地计算机

Docker 如何从pod访问本地计算机,docker,kubernetes,Docker,Kubernetes,我在本地机器上创建了一个pod。我在本地机器上也有一个脚本文件。我想从pod运行该脚本文件(我将在pod中运行本地主机上的脚本) 该脚本将更新另一个pod的/etc/hosts。是否有一种方法可以从另一个pod更新一个pod的/etc/hosts?POD由两种不同的部署创建 我想从pod运行该脚本文件(我将在pod中运行本地主机上的脚本) 你不能那样做。在普通Docker上下文中,Docker的一个关键好处是文件系统隔离,因此容器根本看不到主机的文件系统,除非它的一部分显式发布到容器中。在Kub

我在本地机器上创建了一个pod。我在本地机器上也有一个脚本文件。我想从pod运行该脚本文件(我将在pod中运行本地主机上的脚本)

该脚本将更新另一个pod的
/etc/hosts
。是否有一种方法可以从另一个pod更新一个pod的
/etc/hosts
?POD由两种不同的部署创建

我想从pod运行该脚本文件(我将在pod中运行本地主机上的脚本)

你不能那样做。在普通Docker上下文中,Docker的一个关键好处是文件系统隔离,因此容器根本看不到主机的文件系统,除非它的一部分显式发布到容器中。在Kubernetes中,不仅存在这种限制,而且您对运行在哪个节点上的控制也很有限,如果一个节点有给定的脚本,而另一个节点没有,则会出现潜在的问题

是否有一种方法可以从另一个pod更新一个pod的
/etc/hosts

一般来说,您应该避免对任何内容使用
/etc/hosts
。设置DNS服务可以保持事情的一致性,避免在一堆地方手动编辑文件

Kubernetes为您提供DNS服务。特别是,如果您,那么(在集群内);一个pod可以通过
第一个服务名称.default.svc.cluster.local
到达另一个pod。这可能就是你真正想要的答案

(如果你真的只有一个节点环境,那么Kubernetes增加了很多复杂性,并没有太多的好处;考虑纯Docker和DOCKER编写)。 我想从pod运行该脚本文件(我将在pod中运行本地主机上的脚本)

你不能那样做。在普通Docker上下文中,Docker的一个关键好处是文件系统隔离,因此容器根本看不到主机的文件系统,除非它的一部分显式发布到容器中。在Kubernetes中,不仅存在这种限制,而且您对运行在哪个节点上的控制也很有限,如果一个节点有给定的脚本,而另一个节点没有,则会出现潜在的问题

是否有一种方法可以从另一个pod更新一个pod的
/etc/hosts

一般来说,您应该避免对任何内容使用
/etc/hosts
。设置DNS服务可以保持事情的一致性,避免在一堆地方手动编辑文件

Kubernetes为您提供DNS服务。特别是,如果您,那么(在集群内);一个pod可以通过
第一个服务名称.default.svc.cluster.local
到达另一个pod。这可能就是你真正想要的答案


(如果你真的只有一个节点环境,那么Kubernetes就增加了很多复杂性,并没有太多的好处;考虑纯Docker和DOCKER组合。)< /P> < P>作为戴维回答的补充,你可以使用Cp:< /P>从主机复制脚本到POD。

kubectl cp [file-path] [pod-name]:/[path]
关于你在评论中的问题。您可以通过公开部署来完成此操作:

kubectl公开部署/名称

这将导致创建一个服务,您可以在这里找到更多实用的示例和方法。 因此,在您的特定Pod终止后,您仍然可以通过相同的端口和服务到达新的Pod。你可以找到更多的细节

在文档中的示例中,您可以看到nginx Pod是使用容器端口80创建的,expose命令将具有以下效果:

此规范将创建一个以TCP端口80为目标的服务 任何带有run的Pod:mynginx标签,并将其暴露在抽象的 服务港(targetPort:集装箱接受运输的港口 on,port:是抽象的服务端口,可以是其他任何端口 POD用于访问服务)。查看服务API对象以查看 服务定义中支持的字段列表


除此之外,David似乎在这里提供了非常好的解释,它将了解更多关于FQDN和DNS的信息,这也与服务有关

作为David答案的补充-您可以使用cp将脚本从主机复制到pod:

kubectl cp [file-path] [pod-name]:/[path]
关于你在评论中的问题。您可以通过公开部署来完成此操作:

kubectl公开部署/名称

这将导致创建一个服务,您可以在这里找到更多实用的示例和方法。 因此,在您的特定Pod终止后,您仍然可以通过相同的端口和服务到达新的Pod。你可以找到更多的细节

在文档中的示例中,您可以看到nginx Pod是使用容器端口80创建的,expose命令将具有以下效果:

此规范将创建一个以TCP端口80为目标的服务 任何带有run的Pod:mynginx标签,并将其暴露在抽象的 服务港(targetPort:集装箱接受运输的港口 on,port:是抽象的服务端口,可以是其他任何端口 POD用于访问服务)。查看服务API对象以查看 服务定义中支持的字段列表


除此之外,David似乎在这里提供了非常好的解释,它将了解更多关于FQDN和DNS的信息,这也与服务有关

你可以为我提供服务的yaml文件以及如何从另一个播客访问一个播客吗?你可以为我提供服务的yaml文件以及如何从另一个播客访问一个播客吗