这里写目录标题
端口映射
- 端口映射机制将容器内的服务提供给外部网络访问
- 可随机或指定映射端口范围
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可以互通,在容器里把别名做映射就可以别名互通了。