当前位置: 首页 > 知识库问答 >
问题:

Docker端口映射和主机名

邓仲卿
2023-03-14

我有一个问题,或者最好说有两个问题。两者都依赖于Docker,并且与Docker如何处理容器主机名和端口的理解有关。

假设我有两个服务在不同的docker容器中运行,并将容器中的端口80公开到端口8081(service1)和端口8082(service2):

服务1: 8081: 80服务2: 8082: 80

现在我很清楚,从主机的角度来看,我可以通过使用公开的端口(http://localhost:8081和http://localhost:8082)访问这些服务。但是,如果我想通过使用超文本传输协议://容器1和超文本传输协议://容器2等容器来访问我的服务,该怎么办?我要做什么来实现这个szenario的意思:

  • 端口转发的方式如何
  • 我如何知道确切的主机名,以便从docker主机解析容器主机名

谢谢帮忙!

共有1个答案

糜凯泽
2023-03-14

正如艾哈迈德汗所说。您必须使用该网络中的另一个容器作为代理,例如nginx。

如果您将端口从docker compose公开到主机(您的pc),则它仅作为您提到的具有特定端口的本地主机域可见。如果您运行docker compose。yml如下所示:

version: "3"
services:
  service1:
    image: something
    name: service1_name
    ports:
      - "8081:80"
  service2:
    image: something
    name: service2_name
    ports:
      - "8082:80"

Docker-comment将创建默认的网络名称的文件夹在女巫是docker-compose.yml后缀_default。在这个网络中,所有容器都可以互相看到。公开命令用于这个网络中的容器(这样它们就可以互相看到并通信),port用于发布到主机(您的电脑)。这意味着:

service1在您的机器上可见为http://localhost:8081为网络中的其他容器可见为service1:80

服务2在您的计算机上显示为http://localhost:8082用于网络中的其他容器,如service2:80

查看指定的容器名称对服务网络地址没有影响。要测试容器仅在网络中可见,请尝试从另一个容器ping它们

docker run --rm --network=your_folder_name_default debian ping service1

要检查容器运行的网络,可以使用inspect

docker inspect service1_name

现在必须使用容器名称

 类似资料:
  • 问题内容: 我想在不同主机上的某些Docker容器中运行任务。而且我编写了一个管理器应用程序来管理容器(启动任务,停止任务,获取状态等)。容器启动后,它将向管理器发送一个http请求及其地址和端口,因此管理器将知道如何管理该容器。 由于同一主机上可能运行着多个容器,因此它们将被映射到不同的端口。要在我的经理上注册一个容器,我必须知道每个容器映射到哪个端口。 如何 在 Docker容器中获取映射的端

  • 我遵循的https://app.pluralsight.com/library/courses/docker-web-development/table-of-contents使用旧的微软/aspnetcore-构建镜像,但我运行核心2.1,所以我使用微软/dotnet: 2.1-sdk代替。 我正在运行的命令是: docker run-it-p8080:5001-v${pwd}:/app-w“/

  • 问题内容: 我可以将IP地址映射到域名 和 端口吗? 例如,我想映射到 问题答案: 不,那不可能。该端口不是主机名的一部分,因此在-file中没有任何意义。

  • 本文向大家介绍Docker端口映射的实现,包括了Docker端口映射的实现的使用技巧和注意事项,需要的朋友参考一下 docker容器在启动的时候,如果不指定端口映射参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的。 亦可使用Dockerfile文件中的EXPOSE指令来配置。 端口映射可使用-p、-P来实现: -p指定要映射的端口,一个指定端口上只可以绑定一个容器 -P将容器内部开放的

  • 当我在一台docker主机上为同一个web映像启动两个docker容器时。 两个docker容器在同一端口监听 两个集装箱的端口映射到docker主机的不同端口:, 要从docker主机外部访问两个容器,需要通过访问docker主机ip和端口或 是否有一种解决方案可以通过ip和端口从docker主机外部访问docker容器,,而无需端口映射? 不同dock主机上的所有docker容器都可以直接相互

  • 我有两个dockerated应用程序,它们是docker网络的一部分,都在8080端口上启动。我需要它们都暴露在主机上,这就是为什么我相应地暴露它们到8080和8081。 我无法控制这些应用程序(我无法更改它们的端口),它们只是端到端测试套件的一部分,需要运行这些套件才能执行测试。 问题:根据阉羊的不同,我在docker容器(同一个docker-comuse文件中的3d应用程序)或本地执行测试,我