docker 启动mysql_Docker从入门到填坑

Docker简单说明

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。(PS:简单来说,就是在linux系统里面通过镜像安装另一个linux系统,然后在另一个linux系统中运行对应的软件,让在linux部署更加简单便捷)


安装Docker步骤(以CentOS为例)

1.删除原系统中的docker版本

sudo yum remove docker                docker-client                docker-client-latest                docker-common                docker-latest                docker-latest-logrotate                docker-logrotate                docker-selinux                docker-engine-selinux                docker-engine

2.设置镜像仓库地址

sudo yum install -y yum-utils  device-mapper-persistent-datalvm2sudo yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo

3.安装Docker

sudo yum install docker-ce

4.启动Docker

sudo systemctl start docker

5.测试是否安装成功

sudo docker run hello-world

到此为止,安装Docker完毕,准备在Docker世界中遨游吧!!!

PS:设置linux开启自启Docker命令

systemctl enable docker

Docker简单安装MySQL

镜像搜索地址


官方Docker镜像搜索地址:https://hub.docker.com。基本需要用到的,在上面都可以查到。

747edad345160738f3e36854e60502e3.png

如图所示,针对不同的需要,可以安装不同版本的镜像。

安装MySQL步骤(以安装5.7版本为例)

1.拉取MySQL镜像

docker pull mysql:5.7

mysql:5.7 中的“5.7”为拉取的MySQL的版本,可以根据需要进行修改

2.初始化运行MySQL

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

参数 1:—name mysql -> mysql 为初始化容器名字,自定义(但是不能与之前生成过的容器名称重复)
参数 2:-e MYSQL_ROOT_PASSWORD=123456 -> MYSQL_ROOT_PASSWORD为设置mysql的root密码
参数 3:mysql:5.7 -> 为启动容器对应的镜像名称

其他配置启动的形式

//初始化数据库为中文格式编码docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci//开机自动重启这个容器docker run --restart=always --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

代码说明
注意点1 :—character-set-server=utf8mb4 —collation-server=utf8mb4_unicode_ci
这表明对应安装的数据库的编码格式配置

注意点2 :—restart=always
添加这段配置,说明这个容器会随机器启动而自动重启

附上Docker容器常用命令

docker stop mysql //暂停MySQLdocker start mysql //启动MySQLdocker restart mysql //重启MySQL

安装Tomcat步骤(以7.0.88为例)

25f132d0eb2276eeb16a6131de5ff76a.png

1.拉取Tomcat镜像

docker pull tomcat:7.0.88-jre8

2.初始化运行Tomcat

docker run --name tomcat -d -p 8888:8080 tomcat:7.0.88-jre8
  • 参数 1 :—name tomcat :tomcat 为初始化容器名字,可自定义(但不能和现存的容器名重复)
  • 参数 2 :tomcat:7.0.88-jre8 即为启动容器对应的镜像名称

如果想要将tomcat容器和MySQL容器关联在一起,则需要执行下面的命令

docker run --name tomcat -d -p 8888:8080 -v /root/tomcat/webapps:/usr/local/tomcat/webapps -v /root/tomcat/logs:/usr/local/tomcat/logs --link mysql:db tomcat:7.0.88-jre8
  • 参数 1 :”—link mysql:db” mysql 为MySQL容器的名称 ,db为连接别名可自定义
    当tomcat容器和MySQL容器连接后,进行数据库连接时可用mysql做主机名
    例如:jdbc_url=jdbc:mysql://mysql:3306/mydatabasename?useUnicode=true&characterEncoding=utf8
  • 参数 2 :”-v /root/tomcat/webapps:/usr/local/tomcat/webapps” 主机文件夹与容器文件夹的映射

安装完Tomcat 之后,那肯定要开始部署war包了

部署war包有两种方式:

  • 方法1通过Docker的文件复制命令,把war包先复制到服务器中,然后在服务器执行复制命令,将war包再从服务器中复制到tomcat的容器当中,例如命令为
docker cp /root/web.war mytomcat:/usr/local/tomcat/webapps
  • 参数1:”/root/web.war mytomcat”服务器本地文件的路径
  • 参数2:”/usr/local/tomcat/webapps”容器内的路径
    复制完之后,重启容器就可以了
  • 方法2(比较推荐)直接将容器内的某个文件夹映射到服务器当中,然后直接操作服务器中对应的文件夹
77ac5fa835be2702678ca97834a5ab46.png
  • 但这种方法需要在一开始生成容器的时候就要配置docker run --name tomcat -d -p 8888:8080 -v /root/tomcat/webapps:/usr/local/tomcat/webapps tomcat:7.0.88-jre8
  • 对应参数 “-v /root/tomcat/webapps:/usr/local/tomcat/webapps” :”/root/tomcat/webapps”为服务器本地的路径地址,”/usr/local/tomcat/webapps”为容器中的路径地址
    设置完之后,直接把war包拖到对应服务器本地的路径地址文件夹即可

Docker运行tomcat容器遇到的坑

1.Tomcat每一次启动会很慢,启动时间长

一般来说,tomcat启动正常都是几十秒左右就可以启动起来,但是如果安装的是tomcat默认的镜像,你每一次启动都要等好久好久好久,然后才启动完成。

启动慢的原因

根本原因是 SecureRandom 这个 jre 的工具类的问题,Tomcat 7/8 都使用org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 类产生安全随机类 SecureRandom 的实例作为会话 ID。SecureRandom generateSeed 使用 /dev/random 生成种子。但是 /dev/random 是一个阻塞数字生成器,如果它没有足够的随机数据提供,它就一直等,这迫使 JVM 等待。键盘和鼠标输入以及磁盘活动可以产生所需的随机性或熵。但在一个服务器缺乏这样的活动,可能会出现问题。
简单来说就是还需要配置一下tomcat/bin文件夹下的catalina.sh文件,在文件夹中加入下面的命令

JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"
612e58eec57064d99e216ae5dd64fc39.png

效果图

然后重启容器,就会发现启动跟以前一样了~~~

如果觉得有用的话,请点个赞吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值