当前位置:   article > 正文

Centos7.9虚拟机采用Docker容器形式部署jar包,mysql_docker centos7挂载jar不能访问

docker centos7挂载jar不能访问

Linux下安装docker:

yum install docker
  • 1

启动docker:

systemctrl start docker
  • 1

docker挂载jar包:

docker run -d --restart=always --name novademo \
-v /app/demo.jar:/usr/demo.jar \
-v /app/application.yml:/usr/application.yml \
-v /app/tomcat/logs:/logs \
--privileged=true \
-p 8080:8080 \
java:8 /usr/bin/java -jar /usr/demo.jar \
--spring.config.location=/usr/application.yml
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

参数解析:

-d:后台运行
--restart=always:docker启动时自启动容器
--name novademo :容器名称
-v /app/demo.jar:/usr/demo.jar:将容器中/usr/demo.jar文件挂载到主机/app/demo.jar文件
-v /app/tomcat/logs:/logs:将容器日志/logs,挂载到主机/app/tomcat/logs
--privileged=true:使容器获得root权限,否则可能报permission错误
-p 8080:8080:将容器的8080端口映射到主机的8080端口
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

docker挂载mysql:

docker run -d --restart=always --name mysql \
-v /app/mysql/data:/var/lib/mysql \
-v /app/mysql/conf:/etc/mysql/conf.d \
-v /app/mysql/log:/var/log/mysql \
--privileged=true \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=li15034395319 \
mysql:5.7 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_general_ci
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

参数解析

-d:后台运行
--restart=always:docker启动时自启动容器
--name novademo :容器名称
-v /app/mysql/data:/var/lib/mysql:将数据文件夹挂载到主机
-v /app/mysql/conf:/etc/mysql/conf.d:将配置文件夹挂在到主机,可以在宿主机放一份自定义 my.cnf文件,那么容器就会按自定义配置启动
-v /app/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
-p 3306:3306:将容器的3306端口映射到主机的3306端口
-e TZ=Asia/Shanghai:修改 docker 容器时区
-e MYSQL_ROOT_PASSWORD=li15034395319 :初始化root用户的密码
--character-set-server=utf8mb4:设置字符集
--collation-server=utf8mb4_general_ci:排序方式
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

传输sql文件:

docker cp /app/novademo.sql mysql:/
  • 1

执行sql文件:

source /novademo.sql;
  • 1

容器启动后查看启动日志:

docker logs "容器id"
  • 1

查看容器状态:

docker ps -a
  • 1

如果容器的status一直为restarting,则可能是挂载-v出现了问题。具体问题需要查看启动日志。

进入容器

docker exec -it mysql /bin/bash
  • 1

停止容器

docker stop "容器id"
  • 1

删除容器

docker rm "容器id"
  • 1

删除image

docker rmi "imageID"
  • 1

踩坑记录:
docker之间无法访问,主要表现为挂载的jar包启动时,无法访问mysql数据库(开放3306)。启动后,无法被访问(开放8080)。
原因分析:Linux防火墙需要开放端口。

firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent
  • 1
  • 2
firewall-cmd --reload
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/284236
推荐阅读
相关标签
  

闽ICP备14008679号