前言
解决问题:解决同一主机不同容器之间的通信
当在本机运行一个web的镜像,想要访问mysql镜像的时候如果使用127.0.0.1:3306来连接mysql是连接不上的。最好的解决办法就是将mysql服务放在另外一个主机上,但是毕竟。。也没有那么多设备。。
一、使用 docker inspect命令
使用docker inspect 容器名/ID 可以查看当前容器的IP地址,但是当每次重启容器这个IP地址会发生变化,这种方法比较麻烦
二、使用Link
1.先创建Mysqldocker run --name mysql -p 3306:3306 -v /mysql/database/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=密码 -d mysql
参数说明
- –name docker运行给容器取得别名
- -p 容器内部和外部的端口映射
- -v 容器内部数据持久化,映射到/mysql/databases/data文件夹下
2.创建web容器docker run -id -p 9999:9999 --name gitma --link mysql:othermysql 容器名
参数说明
othermysql给当前连接的数据库取一个别名为othermysql
3.修改代码中的连接地址
4.这样web就可以连接到mysql啦
link的方式只能解决单机容器间的互联,多机的情况下,需要进行网络桥接
三、使用桥接网络
1.建立桥接网络docker network create --driver bridge <your_network_name>
2.创建一个指定了subnet的桥接网络go docker network create --driver bridge --subnet 172.19.0.0/16 <your_network_name>
3.创建一个网络模式为bridge的容器go docker run -itd --name test1 --network <your_network_name> <your_docker_image> /bin/bash
4.为容器指定ipdocker run -itd --name test1 --network <your_network_name> --ip 172.19.0.10 <your_docker_image> /bin/bash
2020.8.22