Docker 端口映射和容器互联(使用centos镜像)

端口映射

  • 端口映射机制将容器内的服务提供给外部网络访问
  • 可随机或指定映射端口范围
docker pull httpd  #下载镜像

docker images  #查看镜像
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
httpd                  latest              3dd970e6b110        4 weeks ago         138MB

使用镜像httpd:centos以后台模式启动一个容器,并将容器的80端口映射到主机随机端口
docker run -d -P httpd:centos

使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 11110 端口映射到主机的 80 端口
docker run -d -p 11110:80 httpd:latest 

docker ps -a
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS                         PORTS                    NAMES
df8bbcd814a4        httpd:latest           "httpd-foreground"       2 minutes ago       Up 2 minutes                   0.0.0.0:11110->80/tcp      xenodochial_shtern
b4c16c5c42b6        httpd:latest           "httpd-foreground"       7 minutes ago       Up 7 minutes                   0.0.0.0:32769->80/tcp    boring_yonath

-------- 测试 -----------
进入浏览器测试(IP地址:端口号)都可以访问到httpd(20.0.0.32:11110)
-P: 随机端口映射,容器内部端口随机映射到主机的端口(初始默认分配的端口号基本是32768)
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
在这里插入图片描述

容器互联(使用centos镜像)

  • 在源容器和接收容器间建立一条网络通信隧道
  • 使用docker run命令–link选项实现容器间互联通信
创建并运行容器取名web10,端口号自动映射
docker run -itd -P --name web10 centos:7 /bin/bash
创建并运行容器取名web30,
docker run -itd -P --name web30 --link web10:web10 centos:7 /bin/bash

对方容器名:别名
–link 添加链接到另一个容器

docker ps -a
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS                     PORTS                    NAMES
c4461bf3a463        centos:7               "/bin/bash"              8 seconds ago       Up 7 seconds                                        web30
ca666e7c13b1        centos:7               "/bin/bash"              4 minutes ago       Up 4 minutes     

-------- 测试 -----------

web30 ——> web10
docker exec -it c4461bf3a463 /bin/bash
[root@c4461bf3a463 /]# ping web10
PING web10 (172.17.0.10) 56(84) bytes of data.
64 bytes from web10 (172.17.0.10): icmp_seq=1 ttl=64 time=0.080 ms

web10 ——> web30
docker exec -it 9c6c15d405d2 /bin/bash
[root@9c6c15d405d2 /]# ping web30
ping: web30: Name or service not known

做映射,先下载net-tools工具包,查看容器的ip地址

web10:
yum -y install net-tools
ifconfig
eth0:inet 172.17.0.3

web30:
yum -y install net-tools
ifconfig
eth0:inet 172.17.0.4

vi /etc/hosts
172.17.0.4      web30
172.17.0.3      web10

web10 ——> web30
[root@9c6c15d405d2 /]# ping web30
PING web30 (172.17.0.4) 56(84) bytes of data.
64 bytes from web30 (172.17.0.4): icmp_seq=1 ttl=64 time=0.123 ms

总结:
容器A指向容器B别名只可以单方向通,但IP可以互通,在容器里把别名做映射就可以别名互通了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值