centos7中docker mysql tomcat常用操作的示例分析

发布时间:2021-06-15 15:01:50 作者:小新
来源:亿速云 阅读:220
# CentOS7中Docker MySQL Tomcat常用操作的示例分析

## 一、环境准备与安装

### 1.1 Docker环境安装

```bash
# 卸载旧版本
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

# 安装必要工具包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 设置稳定版仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 安装Docker CE
sudo yum install docker-ce docker-ce-cli containerd.io

# 启动Docker并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker

# 验证安装
docker --version

1.2 防火墙与SELinux配置

# 临时关闭防火墙
systemctl stop firewalld

# 永久关闭防火墙
systemctl disable firewalld

# 查看SELinux状态
getenforce

# 临时关闭SELinux
setenforce 0

# 永久关闭(需重启)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

二、MySQL容器操作实践

2.1 拉取与运行MySQL容器

# 拉取官方MySQL镜像(以5.7版本为例)
docker pull mysql:5.7

# 运行MySQL容器
docker run -d \
  --name mysql57 \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=yourpassword \
  -v /data/mysql/conf:/etc/mysql/conf.d \
  -v /data/mysql/data:/var/lib/mysql \
  mysql:5.7 \
  --character-set-server=utf8mb4 \
  --collation-server=utf8mb4_unicode_ci

参数说明: - -d: 后台运行 - --name: 容器名称 - -p: 端口映射(主机端口:容器端口) - -e: 环境变量(设置root密码) - -v: 数据卷挂载(配置文件和数据持久化)

2.2 常用管理操作

# 进入容器内部
docker exec -it mysql57 bash

# 登录MySQL
mysql -uroot -p

# 查看容器日志
docker logs -f mysql57

# 停止/启动容器
docker stop mysql57
docker start mysql57

# 备份数据库(主机上执行)
docker exec mysql57 sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /backup/all-databases.sql

2.3 常见问题解决

问题1:字符集设置不生效

解决方案:在挂载的配置目录中创建my.cnf文件:

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

问题2:数据卷权限问题

# 查看容器用户
docker exec mysql57 id

# 修改宿主机目录权限
chown -R 999:999 /data/mysql/data

三、Tomcat容器操作实践

3.1 部署Tomcat容器

# 拉取官方Tomcat镜像(以8.5版本为例)
docker pull tomcat:8.5-jdk8

# 运行Tomcat容器
docker run -d \
  --name tomcat8 \
  -p 8080:8080 \
  -v /data/tomcat/webapps:/usr/local/tomcat/webapps \
  -v /data/tomcat/logs:/usr/local/tomcat/logs \
  tomcat:8.5-jdk8

3.2 项目部署与管理

方式1:直接挂载WAR包

# 将war包放入挂载目录
cp project.war /data/tomcat/webapps/

# 自动解压部署(可能需要重启容器)
docker restart tomcat8

方式2:使用Dockerfile定制镜像

FROM tomcat:8.5-jdk8
COPY target/project.war /usr/local/tomcat/webapps/
EXPOSE 8080
CMD ["catalina.sh", "run"]

构建并运行:

docker build -t my-tomcat .
docker run -d -p 8080:8080 --name myapp my-tomcat

3.3 日志查看与调试

# 查看实时日志
docker logs -f tomcat8

# 进入容器调试
docker exec -it tomcat8 bash
tail -f /usr/local/tomcat/logs/catalina.out

# 分析内存使用
docker stats tomcat8

四、容器互联与网络配置

4.1 创建自定义网络

# 创建bridge网络
docker network create mynet

# 查看网络列表
docker network ls

4.2 实现容器互联

# 重新运行MySQL容器加入网络
docker run -d \
  --name mysql57 \
  --network mynet \
  -e MYSQL_ROOT_PASSWORD=123456 \
  mysql:5.7

# 运行Tomcat容器加入同一网络
docker run -d \
  --name tomcat8 \
  --network mynet \
  -p 8080:8080 \
  tomcat:8.5-jdk8

此时在Tomcat容器中可以直接通过mysql57主机名访问MySQL:

# JDBC连接配置示例
jdbc.url=jdbc:mysql://mysql57:3306/dbname

五、Docker Compose编排示例

5.1 安装Docker Compose

# 下载最新版本
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 添加执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 验证安装
docker-compose --version

5.2 编写docker-compose.yml

version: '3'
services:
  mysql:
    image: mysql:5.7
    container_name: mysql57
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: appdb
    volumes:
      - /data/mysql/data:/var/lib/mysql
      - /data/mysql/conf:/etc/mysql/conf.d
    ports:
      - "3306:3306"
    networks:
      - mynet

  tomcat:
    image: tomcat:8.5-jdk8
    container_name: tomcat8
    depends_on:
      - mysql
    volumes:
      - /data/tomcat/webapps:/usr/local/tomcat/webapps
      - /data/tomcat/logs:/usr/local/tomcat/logs
    ports:
      - "8080:8080"
    networks:
      - mynet

networks:
  mynet:
    driver: bridge

5.3 常用操作命令

# 启动服务
docker-compose up -d

# 查看服务状态
docker-compose ps

# 停止服务
docker-compose down

# 查看日志
docker-compose logs -f tomcat

六、性能监控与优化

6.1 资源限制配置

# 运行容器时限制资源
docker run -d \
  --name mysql57 \
  --memory="2g" \
  --cpus="1.5" \
  mysql:5.7

6.2 监控工具使用

# 查看容器实时资源占用
docker stats

# 使用cAdvisor监控
docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:ro \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --publish=8081:8080 \
  --detach=true \
  --name=cadvisor \
  google/cadvisor:latest

访问 http://服务器IP:8081 查看监控仪表盘

七、安全加固建议

  1. MySQL安全配置

    • 修改默认root密码
    • 创建应用专用账户
    • 限制远程访问IP
  2. Tomcat安全配置

    • 删除默认管理页面
    • 配置manager应用强密码
    • 更新到最新安全补丁
  3. Docker安全实践: “`bash

    禁止容器特权模式

    docker run –privileged=false …

# 使用非root用户运行容器 docker run -u 1000 … “`

八、常见问题速查表

问题现象 可能原因 解决方案
MySQL容器启动失败 数据目录权限问题 chown -R 999:999 /data/mysql
Tomcat访问404 webapps目录为空 检查挂载目录或部署WAR包
容器互联失败 不在同一网络 使用--network指定相同网络
性能突然下降 资源不足 使用docker stats检查资源占用

九、总结

本文详细介绍了在CentOS7环境下使用Docker管理MySQL和Tomcat的完整实践方案,包括:

  1. 基础环境安装与配置
  2. 单容器部署与管理技巧
  3. 多容器互联方案
  4. Docker Compose编排实践
  5. 性能监控与安全加固

通过容器化部署,我们实现了: - 环境隔离与快速部署 - 版本控制与回滚能力 - 资源利用率提升 - 标准化运维流程

建议在实际生产环境中结合CI/CD管道实现自动化部署,并定期备份重要数据。

推荐阅读:
  1. 如何构建Docker容器
  2. Docker Compose 配置文件 Docker-Compose.yml 文件详解

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

centos7 docker mysql

上一篇:Java中怎么利用多线程解决资源竞争

下一篇:Mysql中如何使用max查询最大记录所在行数据

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》