1,安装步骤梳理
2,安装tomcat
docker hub好查找tomcat镜像 docker search tomcat
从docker hub上拉取tomcat镜像到本地 docker pull tomcat
使用docker images查看是否有拉取到tomcat
使用tomcat镜像运行镜像成为容器
docker run -it -p 8080:8080 tomcat
-p 主机端口:容器端口
-P 随机分配端口
-i 交互
-t 终端
3,安装mysql
docker hub上查找mysql镜像 docker search mysql
docker hub上拉取mysql镜像到本地 docker pull mysql:5.7
使用mysql5.7镜像创建容器运行存在问题
这是因为mysql镜像一启动中在加设置用户名和密码
修改成下面的命令
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
注意:如果需要数据持久化,则挂载/var/lib/mysql目录,下次重启时则保存数据,其中--privileged=true为用户权限开启:
docker run -p 3306:3306 -v /usr/sqldata/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d --privileged=true a4fdfd462add
发现启动起来了
4,使用navcat连接一下
如果是5.7的数据库不会报错
发现报错,这是因为docker 的mysql里面的localhost -root 的密码是启动时设置的是123456现%-root的没有设置
下面是解决方法
1, 进入mysql的docker 容器
docker exec -it mysql /bin/bash
2,登陆mysql
mysql -u root -p
输入密码
3,使用mysql数据库
use mysql
4,执行修改密码的命令
update user set password=password(123456) where host='%'
5,重启mysql的docker 容器
exit退出
exit退出mysql容器
docker restart mysql
再就可以进行远程连接了哦
如果出现使用宿主机IP无法访问的情况(可能是防火墙没关闭) 在宿主机里面执行如下命令
请顺序运行以下命令:
nmcli connection modify docker0 connection.zone trusted
systemctl stop NetworkManager.service
firewall-cmd --permanent --zone=trusted --change-interface=docker0
systemctl start NetworkManager.service
nmcli connection modify docker0 connection.zone trusted
systemctl restart docker.service
再重启mysql和tomcat的容器
5,相关文件地址配置
可以在运行容器时设置 :
docker run -p 3306:3306 --name mysql -v $PWD/conf/my.cnf:/etc/mysql/my.cnf -v $PWD/logs:/logs -v $PWD/data:/mysql_data -e MYSQL_ROOT_PASSWORD=123456 -d mysql
但要求对应路径对应文件已存在,才能成功挂载相内容到对应位置,所以可以先启动一个没挂载的mysql容器,先cp到宿主机,其中命令为 docker cp 容器ID:容器目录 宿主机目录
命令说明:
-p 3306:3306:将容器的3306端口映射到主机的3306端口
-v $PWD/conf/my.cnf:/etc/mysql/my.cnf:将主机当前目录下的conf/my.cnf挂载到容器的/etc/mysql/my.cnf
-v $PWD/logs:/logs:将主机当前目录下的logs目录挂载到容器的/logs
-v $PWD/data:/mysql_data:将主机当前目录下的data目录挂载到容器的/mysql_data
-e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码