一、端口映射
客户端要访问宿主机内部运行的容器时,可以在宿主机打开一个端口,当客户单访问这个端口时,可以将访问转发到内部的容器。
-p 参数:
通过 -p 参数设置,可以在宿主机上选择一个端口映射到容器的端口。
# 清理容器
docker rm -f $(docker ps -aq)
# 端口映射
# -p 宿主机端口:容器端口
docker run -d \
--name cat1 \
-p 80:8080 \
tomcat
浏览器访问宿主机映射的端口 80
http://192.168.64.150
看到 tomcat 返回的 404 页,说明已经正常访问到 tomcat 容器
二、虚拟网络
容器键互联可以使用 Docker 的虚拟网络来连接。
在 Docker 中可以创建任意多个虚拟网络,容器之间可以通过虚拟网络互联互通。创建虚拟网络时宿主机也会连接到虚拟网络。
# 新建虚拟网络 my-net
docker network create my-net
# 查看虚拟网络
docker network ls
# 查看网络描述信息
docker inspect my-net
# 查看宿主机新建的虚拟网卡
ifconfig
# 清理容器
docker rm -f $(docker ps -aq)
# 新建两个容器 cat1 和 cat2
# 连接到虚拟网络 my-net
docker run -d --name cat1 \
--net my-net \
tomcat
docker run -d --name cat2 \
--net my-net \
tomcat
# 查看两个容器的虚拟网络ip
docker inspect cat1
docker inspect cat2
# 测试网络能否互联互通
# 从宿主机ping两个容器
ping 172.18.0.2
ping 172.18.0.3
# 进入cat1,ping宿主机和cat2
docker exec -it cat1 ping 172.18.0.1
docker exec -it cat1 ping 172.18.0.3
# 从容器访问另一个容器,可以使用容器名称访问,容器内部实现了解析环境
docker exec -it cat1 ping cat2