如何转发港口在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中转发端口的技术。