基于Docker构建CentOS7_Java8_Tomcat8.5 的镜像及Web应用的部署
写在前面
- 公司项目去
Oracle
用teleDB
,都在容器上部署,所以系统的学习下,之前着急忙慌的。 - 本博客笔记属于
实战类
,适用于小白 - 博文有错误的地方,或者关于博文的问题,可以留言讨论。
- 生活加油!
我所渴求的无非是将心中脱颖欲出的本性付诸生活。为什么竟如此艰难呢? —-黑塞
*
安装 Docker
Win 10 安装 Docker
- 具体步骤可以参考菜鸟教程
- 因为
Docker
是运行在Linux
上的所以需要安装虚拟机,win10 默认有Hyper-V
,不需要安装,还需要安装一个Linux
内核,可以参考适用于 Linux 的 Windows 子系统安装指南 (Windows 10)
关于 WSL 简单了解下
WSL允许您直接在Windows上运行Linux环境(包括命令行工具和应用程序),而不需要传统虚拟机或双引导设置的开销。WSL特别有助于web开发人员以及使用Bash和linux优先工具(例如。Ruby, Python)在Windows上使用它们的工具链,并确保开发环境和生产环境之间的一致性。当您在Windows上安装Linux版本时,您将获得一个完整的Linux环境。WsL1与Windows是隔离的- Ul是终端,你可以安装工具。在不修改或中断Windows安装的情况下,将语言和编译器导入Linux环境。我们推荐使用WsL2。
完成上述步骤之后,可以启动docker
:
(福利推荐:阿里云、腾讯云、华为云服务器最新限时优惠活动,云服务器1核2G仅88元/年、2核4G仅698元/3年,点击这里立即抢购>>>)
##这是一个基本docker教程 git clone https://github.com/docker/getting-started.git cd getting-started docker build -t docker101tutorial .
之后启动点击restart
完成Dokcer启动
PS C:Userslenovo> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES PS C:Userslenovo> docker images REPOSITORY TAG IMAGE ID CREATED SIZE
Linux 安装 Docker
安装条件:
- 需要64位操作系统,至少 RHEL6.5 以上的版本,强烈推荐 RHEL7
- docker安装时,内核要求在3.0以上,RHEL7的内核默认在3.0以上,不满足可以单独升级系统内核。
uname -r
或者cat /proc/version
- 关闭防火墙 (不是必须):firewalld【RHEL7使用】,Iptables【RHEL6使用】,Docker安装时,会自动的接管防火墙,并向防火墙里添加配置,如果防火墙存在,会产生冲突。
安装步骤:
- 卸载防火墙
yum remove -y firewalld-*
- 安装软件包
yum install docker
- 开启路由转发
/etc/sysctl.conf net.ipv4.ip_forward=1
使用sysctl -p
让配置立刻生效(否则需要重新虚拟机)docker是通过虚拟交互机来进行通讯的,需要开启路由转发的功能。
软件的 BUG
: iptables -nL FORWARD
版本 大于 1.12 时会设置 FORWARD
的默认规则,被设置为 DROP
,对于有些docker的版本中,FORWARD
链的规则被设置成了DROP
,会造成容器和宿主机之间无法通讯。
解决办法:修改 /lib/systemd/system/docker.server
重载配置文件,重启服务
systemctl daemon-reload systemctl restart docker
基于Docker构建CentOS_7&JDK_1.8&Tomcat8.5 的镜像。
使用 commit构建基础环境镜像:拉取一个centOS_7&jdk_1.8的镜像,基于该镜像启动容器后装一个tomcat8.5,另存为一个新镜像。
PS E:docker> docker pull docker.io/mamohr/centos-java Using default tag: latest latest: Pulling from mamohr/centos-java 469cfcc7a4b3: Pull complete 6c9a0d503960: Pull complete Digest: sha256:11988ca920fe0a3f3dd382b62690d993e843b668b1fb7f31142494f1e7b5d136 Status: Downloaded newer image for mamohr/centos-java:latest docker.io/mamohr/centos-java:latest PS E:docker> docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 300e315adb2f 7 months ago 209MB mamohr/centos-java latest e041132b8b32 3 years ago 577MB
- 根据镜像启动容器
docker run -it --privileged mamohr/centos-java:latest /usr/sbin/init # 进入容器 docker exec -it f6209e004f2f /bin/bash
- 下载一个tomcat
[[email protected] /]# cd /tmp/;wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.69/bin/apache-tomcat-8.5.69.tar.gz --2021-07-27 02:52:02-- https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.69/bin/apache-tomcat-8.5.69.tar.gz Resolving mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.8.193, 101.6.8.193, 2402:f000:1:408:8100::1, ... Connecting to mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.8.193|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 10561246 (10M) [application/octet-stream] Saving to: 'apache-tomcat-8.5.69.tar.gz' 100%[==================================================================================>] 10,561,246 7.44MB/s in 1.4s 2021-07-27 02:52:07 (7.44 MB/s) - 'apache-tomcat-8.5.69.tar.gz' saved [10561246/10561246] [[email protected] tmp]# tar -zxvf apache-tomcat-8.5.69.tar.gz
[[email protected] tmp]# ls apache-tomcat-8.5.69 apache-tomcat-8.5.69.tar.gz hsperfdata_root ks-script-hE5IPf yum.log [[email protected] tmp]# mkdir /usr/tomcat8.5 ; mv apache-tomcat-8.5.69 /usr/tomcat8.5 [[email protected] tmp]# cd /usr/tomcat8.5/ [[email protected] tomcat8.5]# ls apache-tomcat-8.5.69 [[email protected] tomcat8.5]# chown -hR tomcat:tomcat apache-tomcat-8.5.69 chown: invalid user: 'tomcat:tomcat' #create tomcat user and group [[email protected] tomcat8.5]# groupadd tomcat;useradd -g tomcat -s /sbin/nologin tomcat [[email protected] tomcat8.5]# chown -hR tomcat:tomcat apache-tomcat-8.5.69
- 添加tomcat自启动systemd服务单元文件
vim /lib/systemd/system/tomcat.service #===== [Unit] Description=Apache Tomcat 8.5 After=syslog.target network.target [Service] Type=forking User=tomcat Group=tomcat Environment=JAVA_HOME=/usr/java/latest/jre ## tomcat as link -s Environment=CATALINA_PID=/usr/tomcat8.5/apache-tomcat-8.5.69/temp/tomcat.pid Environment=CATALINA_HOME=/usr/tomcat8.5/apache-tomcat-8.5.69 Environment=CATALINA_BASE=/usr/tomcat8.5/apache-tomcat-8.5.69 Environment='CATALINA_OPTS=-Xms512M -Xmx4096M -server -XX:+UseParallelGC' Environment='CATALINA_OPTS=-Dfile.encoding=UTF-8 -server -Xms2048m -Xmx2048m -Xmn1024m -XX:SurvivorRatio=10 -XX:MaxTenuringThreshold=15 -XX:NewRatio=2 -XX:+DisableExplicitGC' Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom' ExecStart=/usr/tomcat8.5/apache-tomcat-8.5.69/bin/startup.sh ExecStop=/bin/kill -15 $MAINPID Restart=on-failure [Install] WantedBy=multi-user.target
- 加载systemd服务单元配置,并启动测试。
[[email protected] system]# systemctl daemon-reload [[email protected] system]# systemctl start tomcat [[email protected] system]# [[email protected] system]# systemctl enable tomcat Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /usr/lib/systemd/system/tomcat.service. [[email protected] system]# [[email protected] system]# systemctl status tomcat ● tomcat.service - Apache Tomcat 8.5 Loaded: loaded (/usr/lib/systemd/system/tomcat.service; disabled; vendor preset: disabled) Active: active (running) since Tue 2021-07-27 08:24:19 UTC; 18s ago Process: 1179 ExecStart=/usr/tomcat8.5/apache-tomcat-8.5.69/bin/startup.sh (code=exited, status=0/SUCCESS) Main PID: 1186 (java) CGroup: /docker/cdd43dfcdf8828b963c7b761ba2301fbd14643d99a44232badefa0a641fde60b/system.slice/tomcat.service └─1186 /usr/java/latest/jre/bin/java -Djava.util.logging.config.file=/usr/tomcat8.5/apache-tomcat-8.5.69/conf/logging.properties -Djava.util.... ‣ 1186 /usr/java/latest/jre/bin/java -Djava.util.logging.config.file=/usr/tomcat8.5/apache-tomcat-8.5.69/conf/logging.properties -Djava.util.... Jul 27 08:24:18 cdd43dfcdf88 systemd[1]: Starting Apache Tomcat 8.5... Jul 27 08:24:19 cdd43dfcdf88 systemd[1]: Started Apache Tomcat 8.5. [[email protected] system]# curl http://127.0.0.1:8080 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>Apache Tomcat/8.5.69</title> <link href="favicon.ico" rel="icon" type="image/x-icon" /> <link href="tomcat.css" rel="stylesheet" type="text/css" /> </head> .。。。。
- tomcat 沒有起來问题排查,一般为加载脚本的路径错误,或者说是设计到读写的权限问题。
[[email protected] bin]# systemctl start tomcat Job for tomcat.service failed because the control process exited with error code. See "systemctl status tomcat.service" and "journalctl -xe" for details. ## 日志消息写到文本里,在文本里排查问题: cat log | grep tomcat journalctl -xe >> log
- 生成新的镜像
[[email protected] /]# yum clean all Loaded plugins: fastestmirror, ovl Cleaning repos: base extras updates Cleaning up everything Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos Cleaning up list of fastest mirrors [[email protected] /]# exit exit PS E:docker> docker commit cdd43dfcdf88 centos7_java8_tomcat8.5:latest sha256:b8c89e810729ae3f9870bac9273f883f9f0bb5ca88ffec7b84f88b64451d805b PS E:docker> docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos7_java8_tomcat8.5 latest b8c89e810729 7 seconds ago 700MB centos7_java8_tomcat8.5_base latest e9e848ab97f6 2 hours ago 679MB centos latest 300e315adb2f 7 months ago 209MB mamohr/centos-java latest e041132b8b32 3 years ago 577MB hub.c.163.com/housan993/centos7_jdk8 latest 0f793ba5281b 3 years ago
- 使用docker run 来验新的容器
docker> docker run -it --privileged mamohr/centos-java:latest /usr/sbin/init
- 备份做好的镜像
PS E:docker> docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos7_java8_tomcat8.5 latest b8c89e810729 39 minutes ago 700MB centos7_java8_tomcat8.5_base latest e9e848ab97f6 3 hours ago 679MB centos latest 300e315adb2f 7 months ago 209MB mamohr/centos-java latest e041132b8b32 3 years ago 577MB hub.c.163.com/housan993/centos7_jdk8 latest 0f793ba5281b 3 years ago 356MB PS E:docker> docker save centos7_java8_tomcat8.5:latest -o centos7_java8_tomcat8.5.tar
通过 Dockerfile 创建服务镜像
这里的话,我们用之前的一個镜像為基础镜像。发布一个web应用。如果有使用docker客户端工具,那么每次可以远程直接替换,war实现部署, UAWeb.war 是我们自己的应用war包。
- 编写
Dockerfile
文件:
FROM centos7_java8_tomcat8.5:latest MAINTAINER LIRUILONG COPY UAWeb.war /usr/tomcat8.5/apache-tomcat-8.5.69/webapps/UAWeb.war EXPOSE 8080
- 创建新的镜像
docker build -t uag_image .
- 因为容器的特殊性,所以数据没办法持久。所以一般会通过映射宿主机的方式。
# 给一下权限 chmod 777 /usr/tomcat8.5/apache-tomcat-8.5.69/logs docker run -it -v /logs:/usr/tomcat8.5/apache-tomcat-8.5.69/logs --privileged uag_image:latest /usr/sbin/init
- 发布docker服务,同样需要和宿主机做端口映射。
docker run -it -v /logs:/usr/tomcat8.5/apache-tomcat-8.5.69/logs -p 9090:8080 --privileged uag_image:latest /usr/sbin/init
关于Docker的一些基本命令,小伙伴不熟悉的可以移步到我的笔记[Docker、Podman 容器“扫盲“ 学习笔记
](https://blog.csdn.net/sanhewuyang/article/details/114435587)
你还在原价购买阿里云、腾讯云、华为云、天翼云产品?那就亏大啦!现在申请成为四大品牌云厂商VIP用户,可以3折优惠价购买云服务器等云产品,并且可享四大云服务商产品终身VIP优惠价,还等什么?赶紧点击下面对应链接免费申请VIP客户吧:
相关文章
- Jgit的使用笔记
- 利用Github Action实现Tornadofx/JavaFx打包
- 叹息!GitHub Trending 即将成为历史!
- 微软软了?开源社区讨论炸锅,GitHub CEO 亲自来答
- GitHub Trending 列表频现重复项,前后端都没去重?
- Photoshop Elements 2021版本软件安装教程(mac+windows全版本都有)
- (ps全版本)Photoshop 2020的安装与破解教程(mac+windows全版本都有)
- (ps全版本)Photoshop cc2018的安装与破解教程(mac+windows全版本,包括2023
- 环境搭建:Oracle GoldenGate 大数据迁移到 Redshift/Flat file/Flume/Kafka测试流程
- 每个开发人员都要掌握的:最小 Linux 基础课
- 来撸羊毛了!Windows 环境下 Hexo 博客搭建,并部署到 GitHub Pages
- 超实用!手把手入门 MongoDB:这些坑点请一定远离
- 【GitHub日报】22-10-09 zustand、neovim、webtorrent、express 等4款App今日上新
- 【GitHub日报】22-10-10 brew、minio、vite、seaweedfs、dbeaver 等8款App今日上新
- 【GitHub日报】22-10-11 cobra、grafana、vue、ToolJet、redwood 等13款App今日上新
- Photoshop 2018 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2017 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2020 下载及安装教程(mac+windows全版本都有,包括最新的2023)
- Photoshop 2023 资源免费下载(mac+windows全版本都有,包括最新的2023)
- 最新版本Photoshop CC2018软件安装教程(mac+windows全版本都有,包括2023