Docker 部署离线版 Nginx 镜像容器,Tomcat 镜像容器,Mariadb 镜像容器

简介: Docker 部署离线版 Nginx 镜像容器,Tomcat 镜像容器,Mariadb 镜像容器

Docker 部署离线版 Nginx 镜像容器,Tomcat 镜像容器,Mariadb 镜像容器



一、准备工作


    1.安装 Docker 并载入 centos7 基础镜像

    2.宿主机发布软件源

      1)宿主机安装并开启 http 服务

      2)创建共享目录

      3)使用浏览器访问测试


二、部署 Nginx 容器


    1.建立工作目录

    2.创建并编写 Dockerfile 文件

    3.编写执行脚本内容

    4.编写 yum 源文件

    5.生成镜像

    6.运行容器进行测试

    7.访问测试


三、部署 Tomcat 容器


    1.创建工作目录,并拖入相关软件

    2.编写 Dockerfile 文件

    3.编写执行脚本内容

    4.生成镜像文件

    5.运行容器进行测试

    6.访问验证


四、部署 Mariadb 容器


    1.创建工作目录

    2.编写 Dockerfile 文件

    3.创建其他相关文件

      1)编写初始化配置文件

      2)编写启动文件

      3)复制 Mariadb 初始化文件

      4)编写 yum 源文件

    4.生成镜像文件

    5.运行容器进行测试

    6.宿主机连接容器中的数据库


一、准备工作



image.png



1.安装 Docker 并载入 centos7 基础镜像


[root@docker ~]# ls
anaconda-ks.cfg  centos7  docker-18.03.1-ce.tgz
[root@docker ~]# tar xf docker-18.03.1-ce.tgz        #解压
[root@docker ~]# cp docker/* /usr/bin/                 #优化执行路径
[root@docker ~]# dockerd &                           #启动Docker
[root@docker ~]# docker load < centos7               #载入centos7镜像
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              75835a67d134        2 years ago         200MB


image.png


2.宿主机发布软件源


因为镜像创建的时候需要使用 yum 安装软件包,所以宿主机使用 http 方式,发布软件源,软件源为 centos7 光盘


1)宿主机安装并开启 http 服务


挂载光盘,配置本地yum源


[root@docker ~]# yum -y install httpd && systemctl start httpd


2)创建共享目录

[root@docker ~]# cd /var/www/html/
[root@docker html]# mkdir centos7
[root@docker html]# mount /dev/cdrom centos7/


image.png


3)使用浏览器访问测试


image.png


二、部署 Nginx 容器



Nginx 是一款轻量级的 Web 服务器,也是一款优秀的反向代理服务器。Nginx 服务占用内存少,并发能力强。


1.建立工作目录


[root@docker ~]# mkdir nginx
[root@docker ~]# cd nginx/
[root@docker nginx]# ls
nginx-1.12.0.tar.gz


image.png


2.创建并编写 Dockerfile 文件


[root@docker nginx]# vim Dockerfile
#基础镜像
FROM centos
#维护该镜像的用户信息
MAINTAINER zhangsan
#设置本地yum源
RUN rm -rf /etc/yum.repos.d/*
ADD CentOS7.repo /etc/yum.repos.d/
#安装相关依赖包
RUN yum -y install proc-devel net-tools gcc zlib zlib-devel make openssl-devel
#传入Nginx软件包并解压
COPY nginx-1.12.0.tar.gz /
RUN tar zxf /nginx-1.12.0.tar.gz
#切换目录
WORKDIR /nginx-1.12.0
#编译安装
RUN ./configure --prefix=/usr/local/nginx && make && make install
#开启端口
EXPOSE 80
EXPOSE 443
#修改Nginx文件,以非daemon方式启动
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
#复制启动脚本
ADD run.sh /
RUN chmod 755 /run.sh
#运行启动脚本
CMD ["/run.sh"]


3.编写执行脚本内容


[root@docker nginx]# vim run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx


4.编写 yum 源文件


[root@docker nginx]# vim CentOS7.repo
[zhangsan]
name=lisi
baseurl=http://192.168.1.1/centos7
enabled=1
gpgcheck=0


5.生成镜像


[root@docker nginx]# docker build -t nginx:v1 .
[root@docker nginx]# docker images | grep nginx 


image.png


6.运行容器进行测试


[root@docker nginx]# docker run -d --name nginx -P nginx:v1
[root@docker nginx]# docker ps | grep nginx


image.png


7.访问测试


image.png


三、部署 Tomcat 容器



Tomcat 是一个免费开源的轻量级 Web 服务器,在中小型企业和并发访问量不高的场合普遍使用,是开发和调式 JSP 程序的首选。


1.创建工作目录,并拖入相关软件


[root@docker ~]# mkdir tomcat
[root@docker ~]# cd tomcat/
[root@docker tomcat]# ls
apache-tomcat-8.5.16.tar.gz  jdk-8u91-linux-x64.tar.gz
[root@docker tomcat]# tar zxf jdk-8u91-linux-x64.tar.gz 
[root@docker tomcat]# ls
apache-tomcat-8.5.16.tar.gz  jdk1.8.0_91  jdk-8u91-linux-x64.tar.gz


image.png


2.编写 Dockerfile 文件


[root@docker tomcat]# vim Dockerfile
FROM centos
MAINTAINER zhangsan
#给JDK设置变量
ADD jdk1.8.0_91 /usr/local/java
ENV JAVA_HOME /usr/local/java
ENV JAVA_BIN /usr/local/java/bin
ENV JRE_HOME /usr/local/java/jre
ENV PATH $PATH:/usr/local/java/bin/:/usr/local/java/jre/bin
ENV CLASSPATH /usr/local/java/jre/bin:/usr/local/java/lib:/usr/local/java/jre/lib/charsets.jar
#传入Tomcat软件包
COPY apache-tomcat-8.5.16.tar.gz /
RUN tar zxf /apache-tomcat-8.5.16.tar.gz
#将解压后文件移动位置,重命名为tomcat
RUN mv /apache-tomcat-8.5.16 /usr/local/tomcat
#开启80端口
EXPOSE 80
#复制启动脚本
ADD run.sh /
RUN chmod 755 /run.sh
#运行启动脚本
CMD ["/run.sh"]


3.编写执行脚本内容


[root@docker tomcat]# vim run.sh
#!/bin/bash
/usr/local/tomcat/bin/startup.sh
tailf /run


4.生成镜像文件


[root@docker tomcat]# docker build -t tomcat:v8 .
[root@docker tomcat]# docker images | grep tomcat
tomcat              v8                  cbd7da73476b        11 seconds ago      601MB


image.png


5.运行容器进行测试


[root@docker tomcat]# docker run -d --name tomcat -p 1314:8080 tomcat:v8
[root@docker tomcat]# docker ps | grep tomcat


image.png


6.访问验证


image.png


四、部署 Mariadb 容器



MySQL 是当下最流行的关系型数据库,所使用的 SQL 语言是用于访问数据库的最常用标准化语言,MySQL 具有体积小、速度快、成本低的优势,成为中小型企业首选的数据库。


1.创建工作目录


[root@docker ~]# mkdir mariadb
[root@docker ~]# cd mariadb/


image.png


2.编写 Dockerfile 文件


[root@docker mariadb]# vim Dockerfile
#设置基础镜像
FROM centos
#维护该镜像的用户信息
MAINTAINER zhangsan
#设置本地yun源
RUN rm -rf /etc/yum.repos.d/*
ADD CentOS7.repo /etc/yum.repos.d/
#安装mariadb数据库
RUN yum -y install mariadb-server mariadb net-tools
ADD resolveip /usr/libexec/
#设置环境变量,便于管理
ENV MARIADB_USER root
ENV MARIADB_PASS 123456
#让容器支持中文
ENV LC_ALL en_US.UTF-8
#初始化数据库
ADD db_init.sh /
RUN chmod 775 /db_init.sh
RUN /db_init.sh
#导出端口
EXPOSE 3306
#添加启动文件
ADD run.sh /
RUN chmod 775 /run.sh
#设置默认启动命令
CMD ["/run.sh"]


3.创建其他相关文件


1)编写初始化配置文件


[root@docker mariadb]# vim db_init.sh
#!/bin/bash
#初始化mariadb
mysql_install_db --user=mysql
#sleep3的意思是停止3秒,再运行下面的
sleep 3
#启动mariadb服务
mysqld_safe &
sleep 3
#设置root用户密码,这里变量是刚刚Dockerfile文件中的
mysql -e "use mysql; grant all privileges on *.* to '$MARIADB_USER'@'%' identified by '$MARIADB_PASS' with grant option;"
h=$(hostname)
mysql -e "use mysql; update user set password=password('$MARIADB_PASS') where user='$MARIADB_USER' and host='$h';"
#刷新策略
mysql -e "flush privileges;"


2)编写启动文件


[root@docker mariadb]# vim run.sh
#!/bin/bash
mysqld_safe


3)复制 Mariadb 初始化文件


[root@docker mariadb]# yum -y mariadb mariadb-server
[root@docker mariadb]# cp /usr/bin/resolveip .


4)编写 yum 源文件


[root@docker mariadb]# cp /root/nginx/CentOS7.repo .


4.生成镜像文件


[root@docker mariadb]# docker build -t mariadb:mariadb .
[root@docker mariadb]# docker images
mariadb             mariadb             563bef62db6b        9 seconds ago       431MB


image.png


5.运行容器进行测试


[root@docker mariadb]# docker run -d --name mariadb -p 13306:3306 mariadb:mariadb
[root@docker mariadb]# docker ps -a | grep mariadb


image.png


6.宿主机连接容器中的数据库


[root@docker mariadb]# mysql -uroot -p123456 -h 192.168.1.1 -P13306


image.png

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
4月前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
1934 5
|
4月前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
224 5
|
5月前
|
存储 Docker Python
docker 部署 sftp
本文介绍SFTP服务的部署与配置,包括users.conf用户配置规则、Docker容器运行命令及上传目录权限说明,重点解析atmoz/sftp镜像的chroot机制与子目录映射,确保用户登录后正确访问/upload目录,并提供Python脚本实现文件上传示例。
500 12
docker 部署 sftp
|
5月前
|
运维 Linux 数据库
基于 Docker 部署 n8n 指南,新手一看就会
本教程详解如何通过 Docker 快速部署开源自动化工具 n8n,适合新手快速上手。内容涵盖官方部署步骤、常见难点及第三方一键部署方案,助你高效搭建自动化工作流平台。
1904 6
|
4月前
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
1379 7
|
4月前
|
存储 搜索推荐 数据库
🚀 RAGFlow Docker 部署全流程教程
RAGFlow是开源的下一代RAG系统,融合向量数据库与大模型,支持全文检索、插件化引擎切换,适用于企业知识库、智能客服等场景。支持Docker一键部署,提供轻量与完整版本,助力高效搭建私有化AI问答平台。
3295 9
|
4月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
773 5
|
5月前
|
前端开发 JavaScript 应用服务中间件
在Docker部署的前端应用中使用动态环境变量
以上步骤展示了如何在 Docker 配置过程中处理并注入环墨遁形成可执行操作流程,并确保最终用户能够无缝地与之交互而无须关心背后复杂性。
286 13
|
负载均衡 安全 前端开发
百度搜索:蓝易云【Nginx与Tomcat负载均衡-动静分离教程】
这些是将Nginx与Tomcat结合使用实现负载均衡和动静分离的基本步骤。根据您的需求和具体环境,可能还需要进行其他配置和调整。请确保在进行任何与网络连接和安全相关的操作之前,详细了解您的网络环境和安全需求,并采取适当的安全措施。
211 1