方法1、使用 docker run —link 容器互联
1、创建并启动被连接容器
D:\> docker run -d --name nginx1 nginx1dd7ac60a0dc22fdaaf76b3e5ced1802e7fb125f81cd2346732d0c3fb9678092# 进入 nginx1 容器进行更改 index.htmlD:\>docker exec -it nginx1 /bin/bashroot@1dd7ac60a0dc:/# echo "my nginx1" > /usr/share/nginx/html/index.html# 访问下本地root@1dd7ac60a0dc:/# curl 127.0.0.1my nginx1
2、创建并启动主动连接的容器
—link 的格式 —link <容器name 或者 id>:别名
D:\> docker run -d --name nginx2 --link nginx1:nginx_alias nginxf45f64e1cc569ab72f291539e424349f93485bcf2045494bdeed596ca0642f5a说明:这里的 --link nginx1:nginx_aliasnginx1 是步骤1创建的容器名称;nginx_alias 是步骤1创建的容器的别名;【在容器 nginx2 中,nginx1、nginx_alias 都是 步骤1创建的容器名称,两个名称都能访问到步骤1创建的容器。】
3、测试 nginx2 是否可以连到 nginx1
# 进入容器 nginx2D:\>docker exec -it nginx2 /bin/bash# 输出 my nginx1 说明 正确连接。root@639dabd7a475:/# curl nginx1my nginx1root@639dabd7a475:/# curl nginx_aliasmy nginx1# 执行 env 查看环境变量root@639dabd7a475:/# envPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binHOSTNAME=639dabd7a475TERM=xtermNGINX_ALIAS_PORT=tcp://172.17.0.3:80NGINX_ALIAS_PORT_80_TCP=tcp://172.17.0.3:80NGINX_ALIAS_PORT_80_TCP_ADDR=172.17.0.3NGINX_ALIAS_PORT_80_TCP_PORT=80NGINX_ALIAS_PORT_80_TCP_PROTO=tcpNGINX_ALIAS_NAME=/nginx2/nginx_aliasNGINX_ALIAS_ENV_NGINX_VERSION=1.21.3NGINX_ALIAS_ENV_NJS_VERSION=0.6.2NGINX_ALIAS_ENV_PKG_RELEASE=1~busterNGINX_VERSION=1.21.3NJS_VERSION=0.6.2PKG_RELEASE=1~busterHOME=/root# 查看 hosts 文件root@639dabd7a475:/# cat /etc/hosts127.0.0.1 localhost::1 localhost ip6-localhost ip6-loopbackfe00::0 ip6-localnetff00::0 ip6-mcastprefixff02::1 ip6-allnodesff02::2 ip6-allrouters172.17.0.3 nginx_alias 1dd7ac60a0dc nginx1 # 这行就是被连接容器的 ip 和名称的对应关系。172.17.0.4 639dabd7a475
ping 命令需要安装,否则下面的实例无法执行。 apt update && apt-get install -y inetutils-ping
root@639dabd7a475:/# ping nginx1PING nginx_alias (172.17.0.3): 56 data bytes64 bytes from 172.17.0.3: icmp_seq=0 ttl=64 time=1.544 ms64 bytes from 172.17.0.3: icmp_seq=1 ttl=64 time=0.120 msroot@639dabd7a475:/# ping nginx_aliasPING nginx_alias (172.17.0.3): 56 data bytes64 bytes from 172.17.0.3: icmp_seq=0 ttl=64 time=0.149 ms
使用 network 互联
查看所有网络
语法:docker network ls
D:\>docker network lsNETWORK ID NAME DRIVER SCOPEb99c3f6a5401 bridge bridge local15704f66ea67 host host localadbdc7a28812 none null local
查看容器的网络配置
语法: docker inspect 容器id或者名称
D:\>docker inspect b8a85ddbc2cd
结果:
查看 bridge 网络配置
语法:docker network inspect bridge
创建网络
语法:docker network create —driver bridge my_network_name
结果:
查看,分配的网段:
启动并测试
docker run —network ……
D:\>docker run -d --name nginx_new_1 --network my_network_name nginx84c07a9688f7548fc6e630d2b34437d1dfb1ef07da87be3a0d08d9b343b0aef0D:\>docker run -d --name nginx_new_2 --network my_network_name nginx3d88c8a1eb49a5cbf506a13f0c1c782a78e8b6e817ada1753404e016af74378a# 进入容器内,更改 index.html 内容D:\>docker exec -it nginx_new_1 /bin/bashD:\>echo "my nginx_new_1" > /usr/share/nginx/html/index.htmlD:\>exitD:\>docker exec -it nginx_new_2 /bin/bashD:\>echo "my nginx_new_2" > /usr/share/nginx/html/index.htmlD:\>exit# 进入容器内,测试。通过容器名称就能访问了D:\>docker exec -it nginx_new_1 /bin/bashroot@84c07a9688f7:/# curl nginx_new_2my nginx_new_2D:\>exitD:\>docker exec -it nginx_new_2 /bin/bashroot@84c07a9688f7:/# curl nginx_new_1my nginx_new_1D:\>exit
