Docker实现容器之间的网络通信

1.业务场景

我们有一个eureka,然后一个product和一个mysql。
这三个都是容器。
product注册到eureka,然后product还要连接mysql。

首先你的product最好能证明连接了数据库,例如写一个查询。
再就是保证在Windows都能运行正常,然后再制作成容器。

2.安装mysql

docker run -p 3306:3306 --name mysql \
	-e MYSQL_ROOT_PASSWORD=xxx \
	-d mysql:5.7

3.进入mysql容器查看ip信息

进入容器:docker exec -it mysql /bin/bash
如果docker镜像没有ifconfig、ping指令,执行下面的命令:
apt-get update
apt install net-tools # ifconfig
apt install iputils-ping # ping

4.创建eureka容器

我在之前的博客已经讲解了如果利用dockerfile制作一个容器。
所以这里我就直接启动。
制作容器:利用dockerfile制作eureka容器

启动:docker run -d -p 8761:8761 --name=eureka registry-agan/eureka-server:1.0.0

5.部署product镜像和容器

同样是利用dockerfile制作。
这是我的dockerfile:

#1.基础镜像:FROM指令:基础镜像名:tag,例如java:8
FROM java:8

#2.维护者:格式:MAINTAINER <name>
MAINTAINER agan

#3.镜像的操作指令
# ADD拷贝一个文件到容器中,格式:ADD <src> <dest>
ADD e-book-product-docker-core-0.0.1-SNAPSHOT.jar  /data/app.jar

#5.配置容器启动后,执行什么命令
ENTRYPOINT ["java","-jar","/data/app.jar"]

构建镜像: docker build -t registry-agan/product-server:1.0.0 .

创建容器:
docker run -d -p 8084:8084 --name product </font>
--link mysql:aganmysql </font>
–link eureka:aganeureka </font>
registry-agan/product-server:1.0.0

link就是容器直接的连接,你不用IP的情况下可以通过link来实现容器名之间的通信;它的语法是 link 容器名:别名

需要注意的是,在你的product中要将这里修改为mysql:
在这里插入图片描述
mysql密码也要修改。

6.查看效果

访问:http://192.168.23.139:8761/
在这里插入图片描述
访问:http://192.168.23.139:8084/product/findAllProduct
在这里插入图片描述
说明product连接和eureka和mysql都实现了网络通信。

感谢观看!
欢迎评论交流!

发布了80 篇原创文章 · 获赞 7 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/qq_42332821/article/details/104200538