Docker入门之端口映射与容器互联(六)

本文详细介绍了如何在Docker中实现端口映射,如使用-p和-P选项,以及容器之间的互联机制,通过–link链接两个容器实例,展示了如何在nginx容器中访问配置后的tomcat。重点在于实操演示和nginx与tomcat的集成测试。
摘要由CSDN通过智能技术生成

前言

通过前面的学习我们学会了操作镜像、容器以及提交镜像到远程仓库等方面的知识,在实际开发中经常会遇到多个服务组件容器共同协作的情况,比如容器内端口与宿主机端口映射问题,还有就是容器之间仅仅通过容器名进行互联访问的问题,下面将简单演示两者的使用。

端口映射

在我们启动容器的时候必须指定容器启动的端口号,否则容器外无法通过网络访问容器内部的服务。一般的我们都会使用 -p 来指定容器内外访问的端口号,使用 -P 来随机指定一个容器外端口。例如我们随机启动一个 nginx

## 启动容器
[root@VM-0-10-centos ~]# docker run -d --name my-nginx -P nginx
59d33e01a6cc2d9c77600292d52a42889d58861b1d7f3202da154c06f735a3ec
[root@VM-0-10-centos ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                     NAMES
59d33e01a6cc   nginx     "/docker-entrypoint.…"   4 seconds ago   Up 4 seconds   0.0.0.0:49162->80/tcp, :::49162->80/tcp   my-nginx

通过上面查看docker进程可以看到容器外端口启用 49162来映射 nginx的 80 端口,关于应用启动日志则可以通过 docker logs 命令查看应用的信息:
在这里插入图片描述
查看容器启用的端口号:
使用 docker port 命令可以查看映射的端口配置,也可以查看绑定的地址:

[root@VM-0-10-centos ~]# docker port my-nginx
80/tcp -> 0.0.0.0:49162
80/tcp -> :::49162

容器互联机制

容器通过互联机制可以通过指定的容器名称进行访问,这有点类似Linux下通过 host 访问机制即:无须访问指定的ip,只需访问其域名即可。
定义容器名称:
可以在容器启动时候对容器命名,使用 –name 可以对容器命名,例如启动nginx镜像命名为 my-nginx

[root@VM-0-10-centos ~]# docker run -d --name my-nginx -P nginx
59d33e01a6cc2d9c77600292d52a42889d58861b1d7f3202da154c06f735a3ec

使用–link
在Docker中可以使用 –link指令建立起两个容器的链接,下面则新建一个 tomcat 容器并在之前创建的 my-nginx 中配置tomcat的访问方式:

  1. 运行tomcat
 docker run -d --name nginx -P --link tomcat:my-tomcat nginx

我们进入到nginx的容器后同样查看 /etc/hosts 下内容如下所示:
在这里插入图片描述
进入到 tomcat容器内将 webapps.dist 的内容拷贝到 webapps 目录下:

root@7aa32e216e75:/usr/local/tomcat# cp -r webapps.dist/* ./webapps

查看当前 /etc/hosts 内容如下:
在这里插入图片描述

需要指出的是 –link 第一个名称为要链接的容器名称,第二个名称为容器别名,所以上面指定 nginx 连接 tomcat 容器,最后使用 crtl + p + q 退出容器并查看当前容器中的应用如下:
在这里插入图片描述
我们通过上图还可以发现两个容器下的hosts文件中都建立了彼此链接,而且都会有默认的一个彼此的容器id 与相应ip绑定的映射。我们还可以通过 env 指令查询当前容器环境变量,可以清晰看到两个容器绑定的变量:

在这里插入图片描述

验证在nginx容器访问tomcat

如果需要在nginx映射tomcat的访问路径,需现在nginx容器中安装 vim指令,nginx容器为Debain系统,所以我们需要借助 apt 指令进行软件的安装。

  1. 测试容器互联

进入 nginx 容器中测试 tomcat容器是否可以访问:

在这里插入图片描述
我们发现在nginx容器中是可以访问tomcat服务器的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值