Docker 容器之间互访的实现 —— 使用 端口映射 实现

文章目录

      • 前言:
      • 开始:
        • 1、从外部访问容器应用 —— 做端口映射
        • 2、指定 udp 协议的端口映射:
        • 3、查看端口映射的配置 —— docker port
      • Docker 互联机制:

       


       

看这里:

        戳此链接 通往 关于 Docker 所有的学习文章 !


 

前言:

        在实践中,我们经常会遇到多个服务组件容器 共同协作的情况!这往往需要多个容器之间可以互相访问对方的服务!

要实现这点,有两种快捷的功能来满足服务访问的基本需求:

①、允许映射容器内应用的服务端口到本地宿主主机!(本章讲)

②、通过 互联机制 实现多个容器间 通过容器名 来快速访问!(下章 :https://blog.csdn.net/ljlfather/article/details/105679224)

       


       

开始:

 

1、从外部访问容器应用 —— 做端口映射

        在启动容器的时候,如果我们不指定对应的参数,那么我们在容器外是无法通过网络来访问容器内地服务! 我们要想访问容器内部的一些网络应用时,可以在 run 容器时 使用 -p 或 -P 选项 来指定端口映射!

        当你使用 -P 参数的时候,Docker 会随机映射一个端口 到容器内部的开放的网络端口!

        要想从容器外部访问容器内部的网络服务!必须做 端口映射!!!

root@zhengzelin:~# docker run -itd -P nginx:latest 
741b68bfd7b0b6bff76e5bacff6decff133041f30ea97dc42c359aa630b2100d

root@zhengzelin:~# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
741b68bfd7b0        nginx:latest        "nginx -g 'daemon of…"   4 seconds ago       Up 3 seconds        0.0.0.0:32770->80/tcp   amazing_sutherland

        可以看出,宿主机 的 32770 端口 被映射到了 容器的80端口!那么我们访问 宿主机的 32770 端口试试:

1、首先查看你宿主机的IP地址
ip a 即可!


2、使用其他浏览器访问也可以 ,或者使用 elinks 访问!
root@zhengzelin:~# yum -y install elinks 
root@zhengzelin:~# elinks http://172.24.25.40:32770

在这里插入图片描述

上面的结果告诉我们,端口映射成功,当然你也可以使用 -p 指定端口映射,而不是 -P 随机端口映射!

"注意: -p 指定的端口,一个端口只能绑定一个容器!"

-p 的格式:  ip:hostport:containerport   (IP可以是你的宿主机ip,也可以是0.0.0.0)
            ip::containerport    (IP可以是0.0.0.0,这里 "没有指定宿主机Port ," 这就 "相当于 -P 参数了,生成随机端口,不推荐使用!")
            HostPort:ContainerPort  (这个格式也标准,也省略了 IP,更加方便推荐使用这个格式)

——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

例子:

"格式1:(指定端口!)"
docker run -itd -p 172.24.25.40:9999:80 nginx:latest 
docker run -itd -p 0.0.0.0:9998:80 nginx:latest 

"格式2:(随机分配端口,相当于 -P 参数)"
docker run -itd -p 172.24.25.40::80 nginx:latest 
docker run -itd -p 0.0.0.0::80 nginx:latest 

"格式3:(指定端口)"
docker run -itd -p 10010:80 nginx:latest 


查看结果:   如下图所示! "当我使用 elinks http://宿主机ip:10010(等指定的端口) 时,发现可以访问成功!"

在这里插入图片描述
       


       

2、指定 udp 协议的端口映射:

 
我们除了可以做 tcp 的端口映射,当然还可以做 udp 的端口映射

格式: run - p ip:HostPort:ContainerPort/udp 即可!

       


       

3、查看端口映射的配置 —— docker port

格式: docker port 容器名

root@zhengzelin:~# docker port admiring_kapitsa 
80/tcp -> 0.0.0.0:32776

       


       

Docker 互联机制:

 

下一篇 : Docker 互联机制 实现 Docker 容器之间 便捷互访!

你可能感兴趣的:(Docker)