
- Docker 教程
- Docker - 首頁
- Docker - 概述
- Docker - 在 Linux 上安裝
- Docker - 安裝
- Docker - Hub
- Docker - 映象
- Docker - 容器
- Docker - 註冊中心
- Docker - Compose
- Docker - 使用容器
- Docker - 架構
- Docker - 層
- Docker - 容器和主機
- Docker - 配置
- Docker - 容器和 Shell
- Docker - Dockerfile
- Docker - 構建檔案
- Docker - 公共倉庫
- Docker - 管理埠
- Docker - Web 伺服器
- Docker - 命令
- Docker - 容器連結
- Docker - 資料儲存
- Docker - 卷
- Docker - 網路
- Docker - 安全
- Docker - 工具箱
- Docker - 雲
- Docker - 構建雲
- Docker - 日誌記錄
- Docker - 持續整合
- Docker - Kubernetes 架構
- Docker - Kubernetes 的工作原理
- Docker - 生成式 AI
- Docker - 託管
- Docker - 最佳實踐
- Docker 設定服務
- Docker - 設定 Node.js
- Docker - 設定 MongoDB
- Docker - 設定 NGINX
- Docker - 設定 ASP.Net
- Docker - 設定 MySQL
- Docker - 設定 Go
- Docker - 設定 Rust
- Docker - 設定 Apache
- Docker - 設定 MariaDB
- Docker - 設定 Jupyter
- Docker - 設定 Portainer
- Docker - 設定 Rstudio
- Docker - 設定 Plex
- Docker 設定 - Flame
- Docker 設定 - PostgreSql
- Docker 設定 - Mosquitto
- Docker 設定 - Grafana
- Docker 設定 - Nextcloud
- Docker 設定 - Pawns
- Docker 設定 - Ubuntu
- Docker 設定 - RabbitMQ
- Docker - 設定 Python
- Docker - 設定 Java
- Docker - 設定 Redis
- Docker - 設定 Alpine
- Docker - 設定 BusyBox
- Docker 設定 - Traefik
- Docker 設定 - WordPress
- Docker 有用資源
- Docker - 快速指南
- Docker - 有用資源
- Docker - 討論
Docker – MySQL 設定
MySQL 是一款開源的關係型DBMS,用於高效地儲存、管理和檢索資料。由於其可靠性、效能和靈活性,它被廣泛採用。
另一方面,Docker 是一種容器化平臺,允許在容器中構建、交付和執行應用程式。它提供了一個統一且一致的環境來託管應用程式,無需任何麻煩,從而簡化了開發、測試和實施過程。
透過利用MySQL和 Docker,我們可以實現隔離且可重用的資料庫環境。這使得我們可以 −
- 可移植性 − 輕鬆地在各種環境(如開發、測試和生產)之間移動您的資料庫。
- 效率 − 能夠在需要時快速啟動和停止資料庫例項。
- 隔離性 − 由於執行它們的容器相互分離,因此可以防止由於依賴項衝突而導致的不同資料庫版本或應用程式之間的衝突。
- 可擴充套件性 − 透過輕鬆執行多個容器來擴充套件您的資料庫。
Docker 化 MySQL 資料庫的先決條件
在學習如何將 MySQL Docker 化之前,請確保具備以下條件 −
- Docker 設定 − 您應該在您的系統上安裝並執行 Docker。要進行驗證,您可以在終端中執行 docker --version。
- Docker 的基本理解 − 瞭解 Docker 概念(如映象、容器和命令)將有所幫助。
- MySQL 知識 − 瞭解 MySQL 語法和資料庫管理將有所幫助。
在下一節中,我們將瞭解如何從 Docker Hub 拉取官方的 MySQL Docker 映象。
從 DockerHub 拉取 MySql Docker 映象
要執行 MySQL 容器,我們需要獲取 MySQL Docker 基礎映象。Docker Hub 是一個公共的容器映象註冊中心。我們可以從 DockerHub 拉取官方的 MySQL 映象。
為此,您可以開啟終端並執行以下命令 −
$ docker pull mysql

這會將最新版本的官方 MySQL Docker 映象下載到您的本地機器。您可以使用以下命令列出所有映象以驗證拉取操作。
$ docker images

您可以在以上輸出中看到 mysql 映象已列出。
現在您已經有了可用的 MySQL 映象,讓我們在下一步中建立並執行一個 MySQL 容器。
使用 MySQL 映象執行 Mysql Docker 容器
Docker 容器是 Docker 映象的例項。讓我們建立一個並啟動一個 MySQL 容器。
要執行 MySQL 容器,您可以使用以下命令 −
$ docker run --name my-mysql -e MYSQL_ROOT_PASSWORD=your_strong_password -d mysql

讓我們分解一下該命令 −
- docker run − 該命令的這一部分將提示 Docker 建立一個新容器。
- --name my-mysql − 此選項將為容器分配一個名稱。
- -e MYSQL_ROOT_PASSWORD=your_strong_password − 此標誌將設定 MySQL 例項的 root 密碼。您可以將 your_strong_password 替換為您選擇的強密碼。
- -d − 此選項將在分離模式下執行容器,以便它在後臺執行。
- mysql − 這是用於建立容器的 MySQL 映象。
當您成功執行該命令時,您將看到一個容器 ID 列印到終端。這表明 MySQL 容器已啟動並正在執行。您可以使用以下命令列出所有容器以進行驗證。
$ docker container ls

在容器內執行 MySql 伺服器
預設情況下,當 Docker 容器啟動時,MySQL 伺服器會自動啟動。我們在前一個命令中使用的 -d 標誌確保了容器在分離模式下執行。
您的 MySQL 伺服器現在正在 Docker 容器內執行,並且與您的主機系統完全隔離。
如果您想驗證 MySQL 伺服器是否正在執行,您可以檢查容器日誌 −
docker logs my-mysql

您可以在輸出中看到 MySQL 啟動訊息。
您還可以訪問容器的 bash 以執行 MySQL 命令。
$ docker exec -it my-mysql /bin/bash $ mysql -uroot -p -A
它將提示您輸入密碼。

您可以看到,現在您可以訪問容器內的 MySQL 終端。在下一步中,讓我們嘗試在這個 MySQL 例項中建立一個數據庫和表。
建立資料庫和表
讓我們使用相同的 MySQL 命令列客戶端在 MySQL 容器內建立一個數據庫。
CREATE DATABASE mydatabase;

接下來,讓我們在 mydatabase 資料庫中建立一個名為 users 的表 −
USE mydatabase; CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100) );
這將在資料庫內建立一個具有以下三個列的表 −
- id − 自增整數主鍵。
- name − 用於儲存名稱的 varchar 列。
- email − 用於儲存電子郵件地址的 varchar 列。

讓我們使用 INSERT INTO 語句將一行插入 users 表中。
INSERT INTO users (name, email) VALUES ('John Doe', 'johndoe@example.com');
我們可以使用 SELECT 語句檢視 users 表中的所有行,
SELECT * FROM users;
這將顯示 users 表中的所有列和行。

現在您已成功在 Docker 化的 MySQL 例項中建立了一個數據庫和一個表。在下一節中,讓我們瞭解如何從容器外部訪問此 MySQL 例項。
從容器外部訪問 MySQL 例項
如果我們想從容器外部訪問 MySQL 例項,則必須將 MySQL 埠 (3306) 暴露給主機。我們可以在執行 Docker 容器時使用 -p 標誌來實現。
修改 docker run 命令如下 −
$ docker run --name my-mysql -e MYSQL_ROOT_PASSWORD=your_strong_password -p 3306:3306 -d mysql
這會將容器的 3306 埠對映到主機的 3306 埠。然後,您可以使用 MySQL 客戶端(如命令列客戶端或基於 GUI 的工具)從主機連線到 MySQL 例項。
使用 MySQL 命令列客戶端
$ mysql -u root -p -h localhost -P 3306 mydatabase
如果您是從遠端機器連線,則應將 localhost 替換為主機的實際 IP 地址。
結論
在本章中,您學習瞭如何將 MySQL 資料庫 Docker 化,從而使其變得可移植、高效和隔離。現在,您可以使用相同的工具和方法管理資料庫,同時獲得容器化的優勢。
務必遵循安全實踐,例如使用強密碼、限制訪問和定期備份。有了這些措施,您就可以開始使用 Docker 部署 MySQL。
如何 Docker 化 MySQL 的常見問題
1. 如何將 Node.js 應用程式連線到 Docker 化的 MySQL 資料庫?
您可以使用 Node.js 的 MySQL 驅動程式將 Node.js 應用程式連線到 Docker 化的 MySQL 資料庫。使用正確的 hostname(通常為 mysql)和正確的埠配置連線字串。確保 Node.js 應用程式和 MySQL 容器位於同一網路中。
2. 如何處理 Docker 容器中 MySQL 的資料永續性?
您可以為該資料建立捲來持久化 MySQL 資料。這會在您的主機目錄之一和容器內的目錄之間建立對映。寫入 MySQL 資料庫的任何內容都將儲存在主機的捲上。
3. 如何保護 Docker 化的 MySQL 資料庫?
為 MySQL 的 root 使用者和其他使用者使用強密碼。儘可能減少針對執行 MySQL 的容器的網路暴露。
定期更新 MySQL 的映象,並在您的設定中應用安全補丁。考慮使用 SSL/TLS 加密通訊。在 MySQL 本身中建立訪問控制和使用者管理。