文章目录
1.概述
接下来,我们将使用dicker运行mysql数据库,并搭建一个web应用,web应用启动后连接数据库;
这俩个容器创建后,要互相连接通信,我们通过创建一个虚拟网络,并连接这俩个容器后,通过subnet
参数手动维护网络参数进行通信;
使用参数--ip
在虚拟网络中指定容器的固定网络网段;
在这里我们要实现数据库数据的持久存储,容器删除后,容器内的数据将全部丢失,为了实现数据永久存储,我们通过数据卷挂载到宿主机的方式实现;
2. 容器互联
2.1 创建docker虚拟网络
首先我们清理容器并删除此前的网络设置:
docker network rm my-net
然后创建docker虚拟网络:
docker network create --subnet=172.18.0.0/24 dockernet
创建后查看我们创建的网络:
ifconfig
docker network ls
docker inspect dockernet
2.2 创建数据卷
加载 mariadb 镜像
docker load < mariadb-docker-image.gz
# 查看当前已加载的镜像
docker images
创建数据卷
docker volume create mysql-data
查看数据卷详情:
docker inspect mysql-data
2.3 启动 mariadb 容器,并挂载数据卷
docker hub
官网中,提供了marriadb启动的示例,我们可以查看官网了解具体使用详情:
- 我们首先要使用
-v
参数将mysql-data宿主机上的存储目录挂载到mysql容器,对于具体的目录一般会记录在使用文档中,如果没有文档则需要自己进入容器中查找; - 通过环境变量参数
MYSQL_ROOT_PASSWORD=root
设置访问的管理员密码,其新版本添加了marriadb
前缀的环境变量,但是因为我们使用的是旧版本,所以依旧使用mysql
前缀; - 使用参数
--net
设置连接到dockernet网络,并使用参数--ip
设置固定ip为172.18.0.11
; - 使用参数
-p
映射宿主机端口到3306
docker run -d --name mysql --net dockernet --ip 172.18.0.11 -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mariadb
docker ps -a
启动之后,我们就可以使用客户端连接150服务器的3306端口了;
2.4 进入容器,登录mysql测试
docker exec -it mysql bash
mysql -uroot -p
2.5 连接数据库,导入数据
我们进入mysql客户端,创建新的连接:
连接成功后,导入数据:
导入项目中上传的sql文件:
导入完成后,刷新可以看到我们导入的数据库:
3. tomcat
创建 /opt/webapps
目录后,将web应用的打包文件 ROOT.war
上传到 /opt/webapps
目录:
然后将此文件夹挂载到tomcat的/usr/local/tomcat/webapps
目录,并设置其网络和端口信息启动web应用:
docker run -d --name web-tomcat --restart=always --net dockernet --ip 172.18.0.12 -v /opt/webapps:/usr/local/tomcat/webapps -p 80:8080 tomcat
启动之后使用浏览器访问192.168.64.150
,查看数据库中的信息: