上一章我们学习了docker的网络模式的内容,基本属于原理了解性的内容。在实际工作中,各个应用服务不能仅仅存在于理论中,也要结合实际去应用。而实际中,都是容器中通过网络通信进行配合。本节我们来学习如何使用docker的网络功能。
1.端口映射及外部访问
创建并启动一个容器时,默认容器内的端口是不会映射到外部寄主机上的,需要添加参数进行映射。docker 进行外部映射的参数是p或者P。
我们来查看下对应参数命令解释:
docker run --help
解释下,-p:指定一个端口进行启动时映射。
-P:随机启动一个端口进行映射。
1.1启动一个tomcat容器测试(随机端口映射)
1.1.1 找到镜像的ID
docker images |grep tomcat
1.1.2 启动tomcat容器并随机映射外部端口
docker run -itd -P ed94f55483b8
我们可以看到,执行命令后,启动了一个tomcat并在外部映射端口为32770。
1.1.3 查看端口启动情况
(1)容器内8080端口
netstat -ntpl |grep 8080
(2)服务器上映射的端口
netstat -ntpl |grep 32770
1.1.4 在容器中部署一个2048应用测试情况
(1)复制应用包到tomcat容器中
docker cp 2048.war f3eeb5d3a579:/usr/local/tomcat/webapps/
(2)外网访问应用测试
1.2启动一个tomcat容器测试(指定端口映射)]
docker run -itd -p 38888:8080 ed94f55483b8
1.2.1 查看容器启动情况及端口映射情况
docker ps
1.2.2 测试
为了节省时间,这里我们不在部署应用进行访问测试,直接测试tomcat的启动情况
curl 172.18.0.1:38888
我们可以看到tomcat的服务及端口是可以成功访问的,但是有的童鞋会有疑问,为什么会出现返回404的情况,这是在使用tomcat的安全设置的结果。不懂的可先百度下,这里不进行详细讲解。
1.3 多个端口映射
1.3.1 端口确认
进入容器我们可以看到,容器中的tomcat下有多个端口,这里我们在选定一个8009进行外部映射。
netstat -ntpl
1.3.2 重新启动tomcat容器并指定映射外部端口
docker run -itd -p 38888:8080 -p 39999:8009 ed94f55483b8
docker ps
我们可以看到端口已经被成功映射。
1.3.3 测试映射端口情况
telnet 172.18.0.1 39999
端口映射成功,请端口是通的。
这里详细页面及部署应用的测试就不做了。