如何转发港口在Docker

Docker是一个很受欢迎的dockerization平台,它在一个被称为容器的孤立环境中对应用程序和软件进行dockerization。在容器中执行应用程序时,用户通常需要访问容器外部的容器化应用程序。为此,用户需要使用端口转发技术。

Docker中的端口转发是一个使我们能够在Docker主机系统上公开容器端口的过程。它允许我们在一个隔离的环境中运行应用程序,并且可以从用户机器上的容器外部访问它。

这篇文章将演示:

  • 如何转发端口在Docker使用“-p”或“-发布”标签
  • 如何转发端口在Docker使用Docker撰写
  • 如何将端口转发到特定的网络
  • 结论

如何转发端口在Docker使用“-p”或“-发布”标签

为了在Docker中转发端口,用户需要在Docker主机上发布容器端口。为此,在docker主机上使用“docker run”命令中的“-p”或“-publish”标签运行容器。

要进行正确的演示,请遵循以下说明。

步骤1:制作Dockerfile

首先,创建一个文件,并将其名称设置为“Dockerfile”。该文件包含创建Docker容器模板的文本指令。例如,让我们在Dockerfile中使用下面的代码片段对简单的Golang程序进行dockerize:

从golang: 1.8

WORKDIR /去/ src /应用程序

main2副本。走了。

运行go build -o webserver。

8080年公开

CMD(“。/网络服务器”)

在给定的代码片段中:

  • “FROM”命令用于设置基本镜像。
  • " WORKDIR "定义了容器的工作目录。
  • “COPY”命令将在容器指定的路径下创建程序文件的副本。
  • “RUN”命令将在容器中执行指定的命令。
  • “EXPOSE”命令指定要监听容器的端口。
  • “CMD”指定容器的可执行点。

步骤2:创建Golang程序

接下来,创建另一个名为“main2”的文件。并粘贴下面提供的Golang程序,该程序在端口“8080”上打印一个简单的字符串:

主要包

导入(

“fmt”

“日志”

“net/http”

函数处理程序(whttp。ResponseWriter, r *http.Request) {

HTML:= '

DOCTYPE html >

 

 

你好Golang !

 

   

身体{

background - color: # D2B48C;

}

.container {

text-align:中心;

填充:50 px;

}

 

 

 

   

你好!欢迎来到LinuxHint教程

   

 

w.Header()。集(“内容类型”,“text / html”)

fmt。Fprint (w, html)

}

函数main() {

http。HandleFunc(“/”,处理程序)

log.Fatal (http.ListenAndServe(“0.0.0.0:8080 nil))

}

步骤3:生成容器的快照

现在,从上面指定的Dockerfile为容器生成一个快照。为此,首先,使用" cd "命令导航到创建Dockerfile的目录:

接下来,使用下面的命令生成新的容器映像:

Docker build -t golang-img

给出的结果表明映像是根据提供的构建上下文创建的。

步骤4:将“主机端口”转发给“集装箱端口”

现在,执行容器并将主机端口转发到容器端口,以访问本地机器上容器外部的dockerize应用程序。执行“docker run -name -p:”命令。

Docker运行——name go-cont -p 8080:8080 golang-img

这里,“-p”标志用于在docker主机上发布容器执行端口:

第五步:验证

为了验证,可以使用“docker ps”查看正在运行的容器:

码头工人ps

在下面的结果中,容器化应用程序正在监听发布端口“8080”上的可用网络接口“0.0.0.0”。这意味着端口被转发到主机上正在运行的应用程序:

现在,启动浏览器并导航到“http://localhost:8080/”,验证是否应用了端口转发技术,以及容器化的应用程序是否可以在主机系统的容器外部访问:

在这里,我们已经成功地将主机端口转发到容器端口,并且应用程序可以在docker主机上访问。

如何转发端口在Docker使用Docker撰写

要将容器端口转发给主机,以便从容器外部访问容器化的应用程序,用户可以利用compose yaml文件中的“port”键。Docker compose是一个Docker服务,它使我们能够在不同的容器中运行不同的服务和应用程序。使用“docker-compose”。Yml”文件,用户还可以将容器端口转发到主机,并与外界建立应用程序连接。

查看下面的程序插图。

步骤1:创建撰写文件

首先,生成一个名为“docker-compose”的文件。Yml”文件,添加如下内容:

版本:“3”

服务:

网络:

构建:。

港口:

——8080:8080

在上面的代码片段中,“ports”键用于将主机连接到容器端口。这里,第一个值是主机端口,第二个值是容器端口。

步骤2:启动应用程序

在撰写文件中指定指令后,使用“docker-compose up”命令在容器中启动应用程序:

docker-compose起来

步骤3:验证

为了验证,使用“docker-compose ps”命令列出组合容器:

Docker-compose ps -a

要检查容器是否可以在主机上访问,请导航到“http://localhost:8080/”URL。在这里,您可以看到我们已经有效地转发了主机上的集装箱端口:

如何将端口转发到特定的网络

要将容器端口转发到特定的网络,用户需要使用“-network”选项指定他们想要访问容器的网络。请看给出的步骤进行演示。

第一步:建立人际网络

使用“docker network Create”命令创建新网络。默认情况下,该网络将使用网桥驱动程序:

Docker网络创建mygo网络

查看Docker网络,使用" Docker network ls "命令:

Docker网络

在这里,我们成功创建了使用“bridge”驱动的“mygo-network”:

第二步:地图网络

要使用端口转发技术在特定网络上运行和访问容器,请使用以下命令:

运行-p 8080:8080——network mygo-network golang-img

在给定的命令中,“-p”选项将容器发布到指定网络的指定端口上。这里," -network "选项用于定义docker网络:

为了验证,再次导航到“http://localhost:8080”端口,检查容器是否可以在指定的网络上访问:

上面的输出表明我们已经在特定网络上有效地转发了容器端口。

注意:当使用“host”网络时,用户不需要使用“-p”或“-publish”选项将端口从容器发布到主机。

使用Docker Compose将端口转发到特定网络

在“docker-compose”中添加以下代码片段。yml文件”。在下面的代码片段中,“networks”键用于指定网络:

版本:“3”

服务:

   

网络:

构建:。

港口:

——8080:8080

现在,使用“docker-compose up”命令在容器中启动应用程序:

docker-compose起来

我们已经介绍了Docker中端口转发的方法。

结论

要转发Docker中的端口以访问容器外的dockerize应用程序,用户可以使用“Docker run”命令中的“-p”或“-publish”选项,也可以使用Docker compose文件中的“ports”键。为了访问特定网络上的容器,用户可以通过使用“-network”选项转发网络上的容器端口。本博客演示了在Docker中转发端口的技术。