溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-06-15 15:01:50 來源:億速云 閱讀:222 作者:小新 欄目:大數據
# 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管道實現自動化部署,并定期備份重要數據。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女