使用docker快速部署Nginx、Redis、MySQL、Tomcat以及制作镜像

使用docker快速部署Nginx、Redis、MySQL、Tomcat以及制作镜像

文章目录

应用快速部署

Nginx

docker run -d-p80:80 nginx 

使用浏览器访问虚拟机地址

在这里插入图片描述

Redis

docker pull redis docker run --name redis -d-p6379:6379 redis 

可以使用 Redis 客户端工具连接

在这里插入图片描述

连接成功可以看到服务器信息

在这里插入图片描述

MySQL

企业中用得最多的是 MySQL 5.7 版本

docker pull centos/mysql-57-centos7 # MYSQL_ROOT_PASSWORD是设置默认登录用户名和密码都是rootdocker run -d-p3306:3306 --name mysql -eMYSQL_ROOT_PASSWORD=root centos/mysql-57-centos7 

通过客户端例如 navicat、dbeaver 连接

Tomcat

可以先在 Docker Hub 中搜索 tomcat,找到对应的 tomcat 版本和 JDK 版本

# 下载镜像docker pull tomcat # 创建tomcat目录mkdir-p /opt/docker/tomcat/ROOT cd /opt/docker/tomcat/ROOT # 创建index.html文件vim index.html # 写入简单内容<html><h1>Hello Tomcat in Docker!</h1></html># 启动容器docker run -d-p8080:8080 --name tomcat -v /opt/docker/tomcat:/usr/local/tomcat/webapps tomcat 

参数说明:

  • -p 8080:8080 :将容器的 8080 端口映射到主机的 8080 端口-p XXX:YYY :前面的 XXX 指的是宿主机的端口,后面的 YYY 指的是容器中的端口
  • -v /opt/docker/tomcat:/usr/local/tomcat/webapps 将主机中 /opt/docker/tomcat 目录挂载到容器的 webapps

用浏览器打开 8080 端口

在这里插入图片描述

制作镜像

镜像原理

思考:

  1. Docker 镜像本质是什么?是一个分层文件系统
  2. Docker 中一个 centos 镜像为什么只有200MB,而一个 centos 操作系统的 iso 文件要几个G ?Centos 的 iso 镜像文件包含 bootfs 和 rootfs,而 docker 的 centos 镜像复用操作系统的 bootfs,只有 rootfs 和其他镜像层
  3. Docker 中一个 tomcat 镜像为什么有 600MB,而一个 tomcat 安装包只有 10多MB?由于 docker 中镜像是分层的,tomcat 虽然只有10多MB,但他需要依赖于父镜像和基础镜像,所有整个对外暴露的 tomcat 镜像大小 600多MB

在这里插入图片描述

镜像原理

在这里插入图片描述

基于已有容器创建

docker commit [OPTIONS] 容器名称或ID [镜像名称[:TAG]]# 示例;使用MySQL容器创建镜像docker commit 7c mysqltest:1.0 # 查看镜像docker images # 启动容器docker run -d-p3306:3306 mysqltest:1.0 

OPTIONS 参数说明:

  • -a, --author string :作者信息
  • -c, --change list :使用 Dockerfile 创建
  • -m, --message string :提交信息
  • -p, --pause :提交时暂停容器运行

使用 Dockerfile 创建镜像

Dockerfile 是一个文件,内容由一行行命令语句组成,主要分为四个部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。

# 使用基础镜像 FROM ubuntu:latest # 设置时区 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 设置镜像的作者信息 #LABEL maintainer="Your Name <[email protected]>" # 暴露容器的端口。非必需 #EXPOSE 80 # 定义环境变量 #ENV ENV_VARIABLE_NAME=value # 执行更新操作并安装基本软件包。非必需 #RUN apt-get update && \ # apt-get install -y \ # software-properties-common \ # build-essential \ # curl # 设置工作目录 WORKDIR /app # 复制本地文件到容器中 COPY . /app # 执行容器启动时的命令 CMD ["command", "arg1", "arg2"] # 或者,如果需要以可执行文件形式运行应用程序 # CMD ["./your_executable"] # 或者,如果是需要通过ENTRYPOINT启动的服务 # ENTRYPOINT ["entrypoint_script.sh"] 

指令说明

指令说明
FROM指定所创建镜像的基础镜像
MAINTAINER维护者信息
RUN运行命令
CMD启动容器时默认执行命令
LABEL标签信息
EXPOSE声明镜像内服务所监听的端口
ENV环境变量
ADD复制指定路径下的内容到容器中的路径下,可以为URL,也可以是文件路径,如果为tar文件,会自动解压
COPY复制宿主机的定路径下的内容到容器中的路径下
USER运行容器时的用户名
WORKDIR配置工作目录
ARG指定镜像内使用的参数

构建应用

需求:构建一个 Web 应用,通过 docker 来运行

步骤:

  1. 将应用打包成 jar 包
  2. 将 jar 包上传到 Linux 服务器
  3. 构建 dockerfile 文件

使用 SpringBoot 搭建应用,并提供一个 REST 接口

@RestControllerpublicclassHelloController{@GetMapping("/hello")publicStringhello(){return"Hello Docker!";}}

创建 Dockerfile 文件

vi Dockerfile 

编辑内容如下:

# Spring Boot 运行需要依赖java FROM java:8 # 复制jar包到容器中 COPY docker-demo-0.0.1-SNAPSHOT.jar docker-demo-0.0.1-SNAPSHOT.jar # 运行命令 CMD java-jar docker-demo-0.0.1-SNAPSHOT.jar 

创建镜像

编写完成Dockerfile后,可以通过以下命令来创建镜像:

docker build [OPTIONS]

主要参数如下:

  • -f :指定 Dockerfile 路径,默认为当前目录
  • -t :指定生成镜像的标签信息

示例:

# 最后的.表示当前目录docker build -t mywebapp:1.0 .

构建过程:

在这里插入图片描述
# 查看镜像docker images # 启动镜像docker run -d-p8080:8080 mywebapp:1.0 

打开浏览器访问

在这里插入图片描述

Read more

轻量级服务器探针 Komari 简单高效监控服务器状态

轻量级服务器探针 Komari 简单高效监控服务器状态

本文最初发布在只抄博客,如需查看最新内容与细节补充,欢迎前往原文链接。 前言 Komari 是一款与哪吒探针比较类似的服务器监控工具,可以实时查看服务器的状态。 与哪吒探针相比,主要有以下几个优点: * 专注监控:Komari 没有像哪吒探针一样包含 DDNS、内网穿透等与监控无关的功能 * 历史记录:Komari 默认支持查看过去 30 天内(可以设置更长时间)的占用情况,而哪吒探针只能查看实时的状态 * 配置简单:Komari 的后台设置简单易懂,无论是通知规则、备注还是延迟监控,都可以直接通过表单操作,而哪吒探针则需要通过 JSON 才能配置 * 支持备份:Komari 后台就可以直接导出 / 导入备份文件,无需像哪吒探针备份整个目录 * GeoIP:Komari 可以直接在面板中选择 IP 库的提供商以及在线更

By Ne0inhk

远程桌面:Ubuntu Desktop操作系统上如何安装Rustdesk远程桌面客户端(离线安装包)

本文将为您提供在 Ubuntu Desktop 操作系统上通过离线安装包安装 RustDesk 远程桌面客户端的详细步骤。以下是完整的安装指南,确保清晰且易于操作。 前提条件 1. 操作系统:Ubuntu Desktop(支持的版本通常包括 20.04、22.04、24.04 等 LTS 或非 LTS 版本)。 2. 离线安装包:确保您已下载 RustDesk 的 .deb 安装包(适用于 Ubuntu/Debian 系统)。您可以从 RustDesk 官方网站(https://rustdesk.com/)或 GitHub 页面(https://github.com/rustdesk/rustdesk/

By Ne0inhk
IoTDB 性能优化双杀:查询分析与负载均衡实战指南

IoTDB 性能优化双杀:查询分析与负载均衡实战指南

IoTDB 性能优化双杀:查询分析与负载均衡实战指南 在分布式时序数据库的日常运维中,查询慢、集群负载不均是最让人头疼的两大问题。前者直接影响业务响应速度,后者则可能导致节点资源浪费或宕机风险。今天就来分享IoTDB的两大核心优化手段——查询性能分析(Explain/Explain Analyze)和Region迁移负载均衡,用实操技巧帮你搞定这两个痛点。 一、查询性能分析:精准定位慢查询瓶颈 不管是日常运维还是开发调试,搞懂查询的执行逻辑和资源消耗,才能针对性优化。IoTDB从V1.3.2版本开始,内置了两套实用的查询分析工具,不用额外部署,上手就能用。 1. 两款核心分析工具:Explain vs Explain Analyze 这两个工具各有侧重,咱们可以根据需求灵活选择: * Explain语句:相当于查询的"执行蓝图",不用实际执行SQL,就能预览执行计划。比如数据怎么检索、过滤条件是否生效、查询计划在哪些节点分配,都能一目了然。 语法特别简单:EXPLAIN <SELECT_

By Ne0inhk