上一篇文章《docker进阶之操作命令实战操作镜像和容器(下载镜像、启动容器、打包发布镜像)》写到要修改docker容器内部的内容需要docker exec进入容器内部,修改起来非常不方便,本文解决这个难题。
1. 外部网络访问方式
例如,我们起了两个容器应用,nginx1和nginx2,正常请求我们会进入nginx2,请求nginx1,如下:
这种方式容器间内部的请求需要经过外部网络,如下图网络关系太不便捷
2. 内部网络访问方式
其实docker有更便捷的网络机制,安装docker之后,docker会默认有自己的网卡,每创建一个容器,这个容器相当于加入了这个网络。
docker为每个容器分配唯一ip,使用容器ip+容器端口可以互相访问。
docker inspect nginx.2
可以查看到nginx.2的容器内的ip是172.17.0.3
docker inspect nginx.1
可以查看到nginx.2的容器内的ip是172.17.0.2
那么我们测试一下,
docker exec -it nginx.2 bash
docker rm -f $(docker ps -aq) 快速删除所有运行的容器
docker image ls 列出镜像
docker container inspect 查看详细信息
3. 域名访问方式(docker容器加入域名网络)
创建自定义网络,容器名就是域名
`docker network --help` 查看docker network的用法
`docker network create 域名` 创建域名
`docker run --network 域名` 启动容器时加入域名
##虚拟机环境启动两个nginx,验证域名访问nginx的网页正常
docker run -d -p 80:80 --name nginx.1 --network mydockernet nginx:1.26.0
docker run -d -p 81:80 --name nginx.2 --network mydockernet mynginx:v1.0
docker exec -it nginx.1 bash
curl http://nginx.2:80