基本docker使用centos和ubuntu的细节差别点

基本docker使用centos和ubuntu的细节差别点,第1张

基本docker使用centos和ubuntu的细节差别点

场景:原本我使用的是contes系统按照的docker,然后启动一些java服务,和按照docker容器的数据库,都没问题,按照大多数 *** 作,ubuntu就是出现了jar启动的程序连接不上数据库,其他情况都能连接这个数据库

1、docker安装

1.1 Ubuntu Docker 安装

http://www.phpxs.com/j/docker/1001349/

1.2 CentOS Docker 安装

http://www.phpxs.com/j/docker/1001350/
2、安装mysql
http://www.phpxs.com/j/docker/1001358/

有一个my.cnf文件这个内容如下

[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_allowed_packet=10M
lower_case_table_names=1
max_connections=1000
max_connect_errors=1000
wait_timeout=86400
interactive_timeout=86400
server-id=192
log-bin=mysql-bin
binlog_format = ROW

在你把上面的my.cnf文件存放位置(自己处理好)启动命令

 docker run -p 3306:3306 --name mymysql -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:5.6
3、打包部署

3.1 打包镜像创建一个文件夹,名称为Dockerfile
里面写入内容为:

FROM java:8
RUN echo "Asia/Shanghai" > /etc/timezone
ENTRYPOINT ["java","-Dspring.config.location=/usr/local/quartz/application.yml","-jar","/usr/local/quartz/spring-boot-quartz-0.0.1-SNAPSHOT.jar"]

(上的这个都是容器里面的东西)(/usr/local/quartz/这个是启动容器的时候挂在在容器中路径,必须要和这个Dockerfile一样)

3.2 启动容器命令(我只是挂载了配置文件和jar包,日志没有挂载,你可以自己挂载)
centos启动命令如下:

docker run -p 8083:8083 --name quartz -v /home/huang/project_one/task_quartz:/usr/local/quartz quartz:v1.0

ubuntu启动命令如下:

docker run -it --link mysql5.6:mysql5.6 -p 8083:8083 --name quartz -v /home/huang/project_one/task_quartz:/usr/local/quartz quartz:v1.0

坑:我自己本地idea连接这个数据库可以,navicat连接可以,在ubuntu中配置了java环境变量启动这个jar包服务也可以,当时就骂人了,为啥容器启动的时候不可以,一直怀疑我的这个jar服务容器是有一个防火墙或者是网路哪里配置出现了问题(估计是网路问题,但是我不太懂,因为集群的情况的下,那个容器的名字肯定不一样的,这里就不能指定了,一开始没想到),然后看网路是不是防火墙什么的不通,找一个其他启动好的两个容器来尝试,进入a容器后ping(ip)和curl(ip和端口),没有装该命名不识别,
ping

apt-get update
apt install iputils-ping

curl

ubuntu/debian 系统安装 Curl 方法:

apt-get update -y && apt-get install curl -y

centos 系统安装 Curl 方法:

yum update -y && yum install curl -y

发现验证了,那个ping能通,但是curl就是不通,不就得了,在你的jar包中那个yml文件配置连接数据库不就是curl的结果不通,还访问一个毛啊,这个网路问题,我ubuntu搞不定,第一次用,那个centos好像没有这个问题的,反正我之前就是没遇到,电脑炸了然后搞的这个ubuntu,验证是这个问题后,我就看到添加

-it --link mysql5.6:mysql5.6

这个解决问题,真心难受,搞了我一天

3.1java环境变量的配置
官网下载好jdk,我的下载的是17版本的,解压后如下图

解压

tar -zxvf jdk-17_linux-x64_bin.tar.gz

配置环境变量

vim /etc/profile

#set java env
export JAVA_HOME=/home/huang/jdk/jdk-17.0.1
export JRE_HOME=${JAVA_HOME}/jre    
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib    
export PATH=${JAVA_HOME}/bin:$PATH
~                                   

执行命令使修改立即生效(我的不知道为啥每次打开一个窗口就需要重新执行一次这个命令,我的虚拟机没有重启,等你去试试,我不试)

 source /etc/profile
4、nginx容器配置

docker nginx部署
前提 先启动一个nginx随便启动一个容器,然后到容器中间nginx.conf和default.conf文件cp到宿主机中,然后采用挂载的方式将容器的路径映射处理,每次只要替换或修改宿主机的文件就行

4.1 文件拷贝:宿主机和容器

从容器拷贝文件到opt文件夹下:

docker cp 容器名称:/usr/local/tomcat/webapps/test/js/test.js /opt

把宿主机的test.js文件拷贝到容器指定路径完整位置:

docker cp /opt/test.js testtomcat:/usr/local/tomcat/webapps/test/js

后面启动nginx容器并挂载,配置一些静态资源代理(文件夹路径就是)和服务代理(default.conf配置文件中)

docker run --name nginx -v /home/jydw/workspace/cjpics/WARNPIC:/usr/share/nginx/html -v /home/jydw/workspace/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/jydw/workspace/nginx/default.conf:/etc/nginx/conf.d/default.conf -v /home/jydw/workspace/nginx:/var/log/nginx -d -p 9092:80 nginx

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5678305.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存