首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Docker 部署 MySQL 實戰:從構建鏡像到啟動多容器

     編輯:MySQL 資料庫相關知識

輕量級虛擬化下的 MySQL 部署指南

Docker 封裝 LXC,提供進程級隔離與分層檔案系統,極適合資料庫測試與微服務部署。本文示範自定義 Dockerfile 建立 MariaDB 映像並批量啟動容器。

Dockerfile 範例

FROM ubuntu
MAINTAINER erkan yanar <erkan.yanar@linsenraum.de>
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y python-software-properties
RUN apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
RUN add-apt-repository 'deb https://mirror2.hs-esslingen.de/mariadb/repo/10.0/ubuntu precise main'
RUN apt-get update && apt-get install -y mariadb-server
RUN echo "[mysqld]" > /etc/mysql/conf.d/docker.cnf \
  && echo "bind-address = 0.0.0.0" >> /etc/mysql/conf.d/docker.cnf \
  && echo "innodb_flush_method = O_DSYNC" >> /etc/mysql/conf.d/docker.cnf \
  && echo "skip-name-resolve" >> /etc/mysql/conf.d/docker.cnf \
  && echo "init_file = /etc/mysql/init" >> /etc/mysql/conf.d/docker.cnf
RUN echo "GRANT ALL ON *.* TO supa@'%' IDENTIFIED BY 'supa';" > /etc/mysql/init
EXPOSE 3306
USER mysql
ENTRYPOINT ["mysqld"]

構建與啟動

# 構建映像
cat Dockerfile | docker build -t mysql .

# 批量啟動 51 個容器,映射端口 5010-5060
time for i in $(seq 10 60); do docker run -d -p 50$i:3306 mysql; done

驗證結果

docker ps | grep mysqld | wc -l  # 輸出 51
docker ps | head -2
# CONTAINER ID  IMAGE  COMMAND  CREATED  STATUS  PORTS  NAMES
# 6d3a5181cd56  mysql  /bin/sh -c mysqld  1 min ago  Up 1 min  0.0.0.0:5060->3306/tcp  lonely_pare

優化建議

  • 合併 `RUN` 指令減少鏡像層數。
  • 使用 `.dockerignore` 排除無關檔案。
  • 生產環境採用官方 `mysql` 或 `mariadb` 映像,配合 `docker-compose` 管理資料卷與網路。
  • 資料持久化請掛載宿主機目錄或命名卷至 `/var/lib/mysql`。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved