Docker的Centos7容器配置Tomcat和MySQL并打成基础镜像

Posted 程序老农

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker的Centos7容器配置Tomcat和MySQL并打成基础镜像相关的知识,希望对你有一定的参考价值。

下载centos7镜像

docker pull centos

进入docker中的CentOS7

docker run -itcentos /bin/bash

安装解压程序

yum install-y unzip zip


安装 libaio

yum install libaio*yum -y install numactl.x86_64


安装weget

yum -y install wget


 

安装JDK

安装JAVA

系统自带的java没有jps命令

rpm -ivh jdk-8u171-linux-x64.rpm


默认安装路径为:

cd /usr/java/jdk1.8.0_171-amd64


配置JAVA环境变量

vim /etc/profile

 

#JDK环境变量

export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=$JAVA_HOME/bin:$PATH

 

使配置立即生效

source /etc/profile

 

安装Tomcat

tomcat文件夹下所有.sh 文件赋予权限

chmod 777 *.sh

 

auto_service.sh文件中添加启动

sh /home/dmiaes/apache-tomcat-8.5.32/bin/startup.sh

 

CentOS7 yum方式安装mysql5.7

 

安装weget

yum -yinstall wget

1 .下载并安装MySQL官方的 Yum Repository

wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm


  使用上面的命令就直接下载了安装用的Yum Repository,大概25KB的样子,然后就可以直接yum安装了。

yum -y install mysql57-community-release-el7-10.noarch.rpm

  之后就开始安装MySQL服务器。

 yum -y install mysql-community-server

  这步可能会花些时间,安装完成后及完成mysql安装

 

2 .MySQL数据库设置

  首先启动MySQL

systemctl start mysqld.service

  查看MySQL运行状态,运行状态如图:

systemctl status mysqld.service

 

此时MySQL已经开始正常运行,不过要想进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码:

grep "password" /var/log/mysqld.log

 

 如下命令进入数据库:

mysql -uroot -p

 

  输入初始密码,此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库:

mysql> ALTERUSER 'root'@'localhost' IDENTIFIED BY 'new password';

 

注意密码需要比较复杂,否则提示Error 1219错误

 

配置mysql允许远程登录

mysql> usemysql;mysql> grantall privileges on *.* to root@'%' identified by "登录密码";mysql> flush privileges;

 

MySQL5.7创建用户和允许远程登录

CREATE USER 'admin'IDENTIFIED BY "prdIR924KDFkdf";grant all privilegeson *.* to 'admin' identified by 'prdIR924KDFkdf';flush privileges;

 

My.cnf目标


/etc/my.cnf

 

配置不区分大小写

# 0 :区分大小写, 1 :不区分大小写
lower_case_table_names=1

 

最终测试

 

docker run -d--privileged -p 8080:8080 -p 3306:3306 -p 10022:22 -it centos_test6  /usr/sbin/init


注意--privileged不能少,加了他进入容器里面的用户才是真正意义的root,否则只是普通root账户。

 

docker 使用中遇到的问题记录:

cgroups: cannot findcgroup mount destination: unknown.

 

使用docker-machine sshdefault 进入虚拟机。

docker -machine sshdefaultsudo mkdir /sys/fs/cgroup/systemdsudo mount -t cgroup-o none,name=systemd cgroup /sys/fs/cgroup/systemd

 

 

服务随容器启动而自启动并具备注册服务的权限

 

使用/home/auto_service.sh这种自启动方式弊端是不能使用/usr/sbin/init,为了解决这个问题我们需要知道/usr/sbin/init干了什么,具体解释如下。理解其原理后我们可以在rc.local文件中添加我们自定义的启动运行的脚本,具体如下。然后我们就能使用如下命令运行我们的脚本了,这样在容器里就能使用服务启动了,避免了Failed to get D-Bus connection:Operation not permitted的错误,也能运行我们自定义启动脚本。

docker run -d--privileged -p 8080:8080 -p 3306:3306 -p 10022:22 -it centos_test6  /usr/sbin/init


注意--privileged不能少,加了他进入容器里面的用户才是真正意义的root,否则只是普通root账户。

 

测试看是否还报Failed to get D-Bus connection: Operation notpermitted错误

systemctl status firewalld.service


 

 

linux添加开机自启动脚本示例详解

 

加载内核顺序

    执行init程序

 /etc/rc.d/rc.sysinit # 由init执行的第一个脚本 /etc/rc.d/rc $RUNLEVEL     # $RUNLEVEL为缺省的运行模式 /etc/rc.d/rc.local    

    #相应级别服务启动之后、在执行该文件(其实也可以把需要执行的命令写到该文件中)

   

 /sbin/mingetty # 等待用户登录

init 是Linux系统操作中不可缺少的程序之一。所谓的init进程,它是一个由内核启动的用户级进程,内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一个进程(其进程编号始终为1)。

       内核会在过去曾使用过init 的几个地方查找它,它的正确位置(对Linux系统来说)是/sbin/init,如果内核找不到init,它就会试着运行/bin/sh,如果运行失败,系统的启动也会失败。


 

Centos7开机启动自己的脚本的方法

 


1. 自己新建一个脚本,auto_run.sh

经过后面的几个步骤后,这个脚本在开机的时候会执行,在这个脚本里面可以写你开机的时候想执行的命令,如启动tomcat,oracle等服务

2. 在脚本中输入启动服务的命令,(开机启动tomcat):

#!/bin/bash


export JDK_HOME=/home/java/jdk1.8.0_91export JAVA_HOME=/home/java/jdk1.8.0_91sh /home/apache-tomcat-8.5.32/bin/startup.sh

3. 执行如下命令,将该脚本标记为可执行文件(添加可执行的权限)


chmod +x /home/auto_run.sh

 

4. 执行如下命令将/etc/rc.d/rc.local文标记为可执行文件

centos7,/etc/rc.d/rc.local文件的权限被降低了,开机的时候执行在自己的脚本是不能起动一些服务的,执行下面的命令可以文件标记为可执行的文件


chmod +x /etc/rc.d/rc.local

 

5. 打开/etc/rc.d/rc.local文件,


vi /etc/rc.d/rc.local


在最后面添加如下脚本

/home/auto_run.sh

 

这样,auto_run.sh这个脚本在开机的时候就会被执行了,以后再这里面写启动服务的命令就可以了。

 

注意:auto_run.sh文件为自定义需要开机启动的程序,只能为.sh的程序,否则请使用安装服务的方式进行自启动。


 

Redis安装

 

准备(安装gcc

yum -y install gccautomake autoconf libtool make

 

安装:

$ wget http://download.redis.io/releases/redis-3.0.7.tar.gz$ tar xzfredis-3.0.7.tar.gz$ cd redis-3.0.7$ make

 

设置密码:redis.conf 文件中设置,requirepass test2019

 

启动:

以指定配置文件启动

$ src/redis-serverredis.conf


 

安装redis服务


测试

cd C:\redis-x64-2.8redis-cli -h 192.168.99.100 -p 6379 -a"houli2015"


以上是关于Docker的Centos7容器配置Tomcat和MySQL并打成基础镜像的主要内容,如果未能解决你的问题,请参考以下文章

Docker+DokcerFile 简单命令和简单镜像配置----Tomcat+jdk+centos7

Docker教程-3-Tomcat容器的安装配置使用

Docker教程-3-Tomcat容器的安装配置使用

Docker教程-3-Tomcat容器的安装配置使用

Docker配置Tomcat容器的过程

Docker配置Tomcat容器的过程