Docker两个容器互联
在操作之前可以去查看底部的一些docker network的基本命令
后端环境容器和mysql数据库容器
1、新建一个 Docker network
docker network create -d bridge network1
-d
: 指定docker网络类型,这里我们使用bridge即可
network1
: 网络名称,根据需要设定,一般可以任意命名
或者直接使用,默认就是使用的bridge桥接模式
docker network create network1
2、新建两个 Docker 容器实例
- 新建一个docker的数据库容器(如果自己有镜像的话就不用,直接运行你自己mysql容器即可)
docker run --name mysql1 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:5.7.39
mysql1 :容器名称
my-secret-pw:数据库root用户的密码
mysql: 5.7.39 数据库的版本
-
再新建一个docker容器(比如一个ubuntu容器)
拉取一个ubuntu镜像
docker pull ubuntu
创建一个容器实例
docker run -it ubuntu
3、将这两个容器分别连接我们在第一步中创建的network
docker network connect network1 mysql1
docker network connect network1 ubuntu1
其中 network1 是我们第一步创建的docker network
mysql1 和 ubuntu1是我们第二步中创建的两个容器的名称
4、然后进入进入到我们的ubuntu容器中(进入到mysql容器操作会很麻烦),测试是否相连成功
进入ubuntu容器
docker exec -it ubuntu1 bash
首先测试ping
命令是否可用,直接在终端输入ping
,查看是否有该命令,如果没有,则执行以下命令安装ping
apt-get update
apt install iputils-ping
5、测试
在ubuntu容器中
ping mysql1
出现类似于以上的抓包数据即可说明我们连接成功
本人遇到的问题和建议
问题
有一个使用很久的ubuntu容器始终难以连接其他容器,具体原因不详,可能是因为修改了其中的某些配置。
建议
如果遇到问题百度或者google的时候,让我们修改一些网络配置,一定要注意记录下来你的修改过程,如果遇到瓶颈直接将容器删除重建,从头再来。
查看一个容器的ID等信息
docker ps
查看容器的原数据
docker inspect contianer id 或者是 container name
//docker inspect test01
查看所有的docker网络
docker network ls
参考:《菜鸟教程》https://www.runoob.com/docker (若本文章的方案实施不畅,可直接转至菜鸟教程,非常详细)
mysql-docker官方镜像网址https://hub.docker.com/_/mysql
方应杭老师github_docker教程https://github.com/FrankFang/oh-my-docker