第一部分:docker的安装
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、更新yum软件源,并安装docker
更新yum
yum update
安装 yum-utils,它提供了 yum-config-manager,可用来管理yum源
sudo yum install -y yum-utils
添加yum源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新索引
centos7
sudo yum makecache fast
centos8
sudo yum makecache
启动最重要的一步:安装docker
sudo yum install docker-ce docker-ce-cli containerd.io
3、启动docker
sudo systemctl enable docker
sudo systemctl start docker
4、建立docker组,并把当前用户放在docker组中
sudo groupadd docker
sudo usermod -aG docker $USER
5、检查docker是不是安装成功
docker run --rm hello-world
或者使用
docker version
第二部分:docker安装tomcat
安装tomcat8.5.38
docker pull tomcat:8.5.38
以9601端口启动服务
docker run --name tomcat9601 -d -p 29601:9601 tomcat:8.5.38
查看docker是否已经启动成功
docker ps
启动docker容器
docker start <容器id>
停止容器
docker stop <容器id>
进去docker镜像容器内部
docker exec -it 容器Id /bin/bash
第三部分: docker 容器内部配置JDK
1.在宿主系统下载所需要的jdk版本的gz文件
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
2.复制gz文件到容器中的root的用户目录下
#sudo docker cp
3.进入容器
#sudo docker exec -it <容器名称或者ID> /bin/bash
4. 新建JAVA_HOME文件夹/usr/lib/jvm并将jdk解压到该路径
cd ~
cp jdk-8u201-linux-x64.tar.gz /usr/lib/jvm/
cd /usr/lib/jvm
tar zxvf jdk-8u201-linux-x64.tar.gz
chown root:root jdk1.8.0_201 -R
5.设置环境变量
vim ~/.bashrc
添加以下内容到该文件:
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_201
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
6.使得环境变量马上生效
source ~/.bashrc
7.验证JDK版本
# java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
第四部分:将服务发布到docker内部
使用docker cp将liunx 下的war文件拷贝到docker容器中
首先、使用docker exec 进入docker,查看docker内部tomcat的目录
docker exec -it 容器Id /bin/bash
其次、使用exit退出docker模式
exit
再次、使用docker cp命令,将liunx机器下的文件拷贝到docker的tomcat目录下
docker cp /usr/local/tomcat/sunyuhua.txt tomcat9601:/usr/local/tomcat/webapps/sunyuhua.txt
最后、重启容器
docker restart 5863d61ae6ee
上面的方法有点麻烦,但是这是基本的操作步骤,现在基于这个编写shell命令的方式执行。讲解第二种方法
1、编辑宿主机中的tomcat必备文件
将tomcat的配置文件,webapps目录,setting下的catalina.sh
[root@izbp13y6uttfs3mmgejd5mz geexek]# cd tomcat
[root@izbp13y6uttfs3mmgejd5mz tomcat]# ls
config logs setting webapps
[root@izbp13y6uttfs3mmgejd5mz tomcat]# pwd
/opt/geexek/tomcat
[root@izbp13y6uttfs3mmgejd5mz tomcat]# cd setting/
[root@izbp13y6uttfs3mmgejd5mz setting]# ls
timerbackend_9601
[root@izbp13y6uttfs3mmgejd5mz setting]# cd timerbackend_9601/
[root@izbp13y6uttfs3mmgejd5mz timerbackend_9601]# ls
catalina.sh
[root@izbp13y6uttfs3mmgejd5mz timerbackend_9601]# pwd
/opt/geexek/tomcat/setting/timerbackend_9601
[root@izbp13y6uttfs3mmgejd5mz timerbackend_9601]# cd ..
[root@izbp13y6uttfs3mmgejd5mz setting]# ls
timerbackend_9601
[root@izbp13y6uttfs3mmgejd5mz setting]# cd ..
[root@izbp13y6uttfs3mmgejd5mz tomcat]# ls
config logs setting webapps
[root@izbp13y6uttfs3mmgejd5mz tomcat]# cd logs
[root@izbp13y6uttfs3mmgejd5mz logs]# ls
timerbackend_9601
[root@izbp13y6uttfs3mmgejd5mz logs]# pwd
/opt/geexek/tomcat/logs
2、将已经save好的tar文件scp到需要安装的机器上。
scp centos7-base-sshd-jdk8-tomcat7.tar root@47.96.82.208:/root
3、将tar文件load成镜像
docker load -i centos7-base-sshd-jdk8-tomcat7.tar
4、编辑sh脚本
我的脚本的名字是:deploy_docker_tomcat_app.sh
#!/bin/bash
if [ $# -ne 3 ]
then
echo "usage: ./$0 appname=sanjiaomao srv_port=9700 ssh_port=22970"
exit 1
fi
apphome='/opt/geexek'
i=1
while [ $i -le 3 ]
do
echo $1
export $1
shift
let i=$i+1
done
approot=${apphome}/tomcat/webapps/${appname}
if [ ! -d ${approot} ]
then
mkdir -p ${approot}
fi
logroot=${apphome}/tomcat/logs/${appname}_${srv_port}
if [ ! -d ${logroot} ]
then
mkdir -p ${logroot}
fi
catalina_setting=${apphome}/tomcat/setting/${appname}_${srv_port}
if [ ! -d ${catalina_setting} ]
then
mkdir -p ${catalina_setting}
fi
classes_config=${apphome}/tomcat/config/${appname}_${srv_port}
if [ ! -d ${classes_config} ]
then
mkdir -p ${classes_config}
fi
docker run -d \
--name ${appname}_${srv_port} \
-p ${srv_port}:8080 \
-p ${ssh_port}:22 \
-v ${approot}:/opt/apache-tomcat-7.0.62/webapps/${appname} \
-v ${logroot}:/opt/apache-tomcat-7.0.62/logs \
-v ${catalina_setting}/catalina.sh:/opt/apache-tomcat-7.0.62/bin/catalina.sh \
-v ${classes_config}:/opt/apache-tomcat-7.0.62/webapps/${appname}/WEB-INF/classes/config \
centos7-base-sshd-jdk8-tomcat7:latest
5、执行脚本
./deploy_docker_tomcat_app.sh appname=timerbackend srv_port=9601 ssh_port=29601
6、查看脚本运行情况
root@izbp13y6uttfs3moffnijuz ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0e7ceedd9b9b centos7-base-sshd-jdk8-tomcat7:latest "/bin/sh -c '/opt/ap…" 14 minutes ago Up 14 minutes 0.0.0.0:29601->22/tcp, 0.0.0.0:9601->8080/tcp timerbackend_9601
如果再有机器需要安装,直接scp脚本,scp tomcat的目录和tar文件,重复上面操作即可。
附注:文件下载地址
https://download.csdn.net/download/sunyuhua_keyboard/19729710
上面的方法虽然简化了步骤,但是还是太繁琐,使用dockerfile来完成部署。