
- 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 - 配置 MariaDB
MariaDB 是一款開源資料庫,具有強大的效能和可擴充套件的企業級安全功能,通常用於關係型資料庫管理系統 (RDBMS)。它在開發 Web 應用程式和處理資料倉庫應用程式方面很受歡迎。
在 Docker 容器內執行 MariaDB 提供了幾個優勢:它確保了一致的環境,使部署變得容易,並且與其他服務隔離。將 MariaDB 容器化簡化了設定,使開發人員能夠輕鬆管理和擴充套件資料庫環境。
將 MariaDB 容器化的先決條件
在開始將 MariaDB 容器化之前,我們確保滿足以下要求:
- Docker 基礎知識 - 瞭解 Docker 的基本概念,例如映象、容器和基本 Docker 命令。
- 在本地機器上安裝 Docker - 確保 Docker 已安裝在您的本地機器上。它可以從 https://www.docker.com 下載並安裝。
- MariaDB 知識 - 對 MariaDB 以及如何配置和使用 MariaDB 的一些瞭解可以幫助您設定資料庫並使用它。
- 文字編輯器或 IDE - 您將需要一個文字編輯器或整合開發環境 (IDE),例如 VS Code 或 Sublime Text。
- CLI 訪問許可權 - 命令列或終端訪問許可權,允許您執行 Docker 命令。
設定 MariaDB 專案
第一步是建立一個專案結構,其中包含與我們的 MariaDB 例項相關的所有檔案。這包括 Dockerfile、配置檔案和專案所需的任何其他資源。
步驟 1:建立專案目錄
讓我們建立一個新目錄,它將作為所有專案檔案的根目錄。
$ mkdir docker-mariadb $ cd docker-mariadb

步驟 2:初始化專案
您還可以使用 Git 等版本控制系統初始化專案,它可以幫助跟蹤更改並與其他人協作。
$ git init
步驟 3:建立 MariaDB 配置檔案
我們可以透過配置檔案自定義 MariaDB 例項。這包括自定義設定,例如設定特定使用者許可權、資料庫選項或網路設定。
建立配置檔案
$ touch my-mariadb.cnf
編輯配置檔案
在您的文字編輯器中開啟此檔案,並新增以下配置設定。例如:
[mysqld] bind-address = 0.0.0.0 port = 3306
稍後,我們將此配置檔案掛載到 Docker 容器中,這將允許 MariaDB 讀取這些設定。
步驟 4:準備 SQL 指令碼
讓我們建立一個 SQL 指令碼,以使用特定的模式和資料初始化我們的資料庫。此指令碼將在 MariaDB 容器啟動時執行。
為 SQL 指令碼建立目錄
$ mkdir init-scripts
建立並新增 SQL 指令碼
現在,讓我們在 init-scripts 目錄中建立一個名為 init-db.sql 的檔案,並將以下 SQL 指令碼貼上到其中
-- Create a new database CREATE DATABASE IF NOT EXISTS my_database; -- Switch to the new database USE my_database; -- Create a new table CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(100) NOT NULL UNIQUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- Insert some sample data into the table INSERT INTO users (name, email) VALUES ('Alice Smith', 'alice@example.com'), ('Bob Johnson', 'bob@example.com'), ('Charlie Brown', 'charlie@example.com');
此指令碼自動建立一個名為 my_database 的資料庫,然後建立一個具有某些基本欄位的 users 表,並插入一些示例資料。
步驟 5:檢視專案結構
我們的專案目錄應該如下所示:
docker-mariadb/ ├── init-scripts/ │ └── init-db.sql └── my-mariadb.cnf
在本地執行 MariaDB
在為我們的 MariaDB 應用程式建立 Docker 容器之前,讓我們嘗試在我們的機器上本地執行它。這將確保我們的設定按預期工作。透過此步驟,我們可以驗證我們的 MariaDB 配置和資料庫初始化指令碼。
步驟 1:在本地安裝 MariaDB
讓我們首先透過以下步驟在本地機器上安裝 MariaDB:
在 Ubuntu/Debian 上
sudo apt update sudo apt install mariadb-server mariadb-client
在 CentOS/RHEL 上
sudo yum install mariadb-server mariadb
在 macOS 上(使用 Homebrew)
brew install mariadb

安裝完成後,我們可以啟動 MariaDB 服務:
sudo systemctl start mariadb
對於 macOS
brew services start mariadb
步驟 2:保護 MariaDB 安裝
MariaDB 還提供了一個安全指令碼,允許您透過刪除匿名使用者、停用遠端 root 登入和其他安全設定來增強預設安裝。您可以執行以下命令來保護您的 MariaDB 安裝:
$ sudo mysql_secure_installation
您可以按照終端中的提示根據您的要求配置安全設定。

步驟 3:建立和測試資料庫
現在,讓我們手動執行之前準備的 SQL 指令碼以建立資料庫、表和插入資料。
訪問 MariaDB Shell
$ sudo mysql -u root -p

執行 SQL 指令碼
現在我們位於 MariaDB shell 中,我們可以透過執行以下命令執行我們的指令碼:
SOURCE /path/to/init-scripts/init-db.sql;
我們需要將 /path/to/ 替換為您 init-db.sql 檔案的實際路徑。

驗證資料庫和資料
現在我們可以驗證資料庫和表是否已建立,以及資料是否已正確插入:
USE my_database; SELECT * FROM users;

步驟 4:停止 MariaDB
現在我們已經驗證了我們的資料庫設定在本地正常工作,我們可以停止 MariaDB 服務:
$ sudo systemctl stop mariadb
對於 macOS
$ brew services stop mariadb
建立 Dockerfile
Dockerfile 包含建立 Docker 映象的所有指令,該映象將包含 MariaDB 例項。在專案的根目錄中建立一個名為 Dockerfile 的檔案。以下是我們 MariaDB 專案的 Dockerfile 示例:
# Use the official MariaDB image as the base image FROM mariadb:latest # Set environment variables for MariaDB root password and database name ENV MARIADB_ROOT_PASSWORD=root_password ENV MARIADB_DATABASE=my_database # Copy the custom MariaDB configuration file into the container COPY my-mariadb.cnf /etc/mysql/conf.d/ # Copy initialization SQL scripts into the Docker container COPY init-scripts/ /docker-entrypoint-initdb.d/ # Expose the default MariaDB port EXPOSE 3306 # Run the MariaDB server CMD ["mysqld"]
Dockerfile 指令說明
- FROM mariadb:latest - 此指令指定將使用 Docker 映象建立的 Docker 容器的基礎映象。我們將使用 mariadb:latest 映象,它是 Docker Hub 提供的官方 MariaDB 映象。
- ENV MARIADB_ROOT_PASSWORD=root_password - 用於設定環境變數 MARIADB_ROOT_PASSWORD,該變數將由 MariaDB 映象用於配置 root 使用者的密碼。
- ENV MARIADB_DATABASE=my_database - 接下來,我們將設定另一個環境變數 MARIADB_DATABASE,它將在初始化容器時自動建立一個新資料庫。
- COPY my-mariadb.cnf /etc/mysql/conf.d/ - COPY 指令將自定義 MariaDB 配置檔案 (my-mariadb.cnf) 從我們的本地專案目錄複製到 Docker 容器內的相應配置目錄 (/etc/mysql/conf.d/)。
- COPY init-scripts/ /docker-entrypoint-initdb.d/ - 另一個 COPY 指令將我們的 SQL 指令碼從 init-scripts 目錄複製到容器內的 /docker-entrypoint-initdb.d/ 目錄。MariaDB 將在容器的初始啟動期間自動執行這些指令碼。
- EXPOSE 3306 - 我們可以使用 EXPOSE 指令公開埠 3306,這是 MariaDB 偵聽的預設埠。這將允許我們從容器外部連線到容器中執行的 MariaDB 伺服器。
- CMD ["mysqld"] - 最後,這定義了在啟動容器時啟動 MariaDB 伺服器的命令。
構建 MariaDB 映象
現在我們的 Dockerfile 已建立,下一步是構建 Docker 映象。
步驟 1:構建 Docker 映象
讓我們導航到專案的根目錄(我們的 Dockerfile 所在的位置),並執行以下命令:
$ docker build -t my-mariadb-image .
這將根據 Dockerfile 建立我們的 mariadb 映象,並將其標記為 my-mariadb-image。末尾的點指定構建上下文,即 Dockerfile 所在的目錄。

步驟 2:驗證映象
讓我們透過列出機器中的所有映象來驗證映象是否已建立。
$ docker images
您可以看到我們的 my-mariadb-image 已列出。

執行 MariaDB Docker 容器
現在我們的映象已構建,讓我們建立與此映象關聯的 Docker 容器。
步驟 1:執行容器
要從我們的 Docker 映象啟動容器,我們可以使用以下命令:
$ docker run -d --name my-mariadb-container -p 3306:3306 my-mariadb-image

這將在分離模式下(-d 標誌)啟動一個容器,將容器的公開埠 3306 對映到本地機器的埠 3306(-p 標誌),使用末尾提到的 my-mariadb-image 建立一個名為 my-mariadb-container 的容器(--name)。
步驟 2:連線到 MariaDB 容器
您可以使用 MySQL 客戶端連線到 Docker 容器內的 MariaDB 伺服器。例如,要從終端使用 MySQL 客戶端連線,請執行:
mysql -h 127.0.0.1 -P 3306 -u root -p USE my_database; SELECT * FROM users;

您可以看到資料庫、表和行已經存在,這是透過我們建立的指令碼的自動執行建立的。
結論
將 MariaDB 容器化是一種非常強大且靈活的方式來管理資料庫環境,它提供了諸如可移植性、易於部署和環境隔離等強大的功能。
在本章中,我們解釋瞭如何在 MariaDB 中配置專案;特別是,我們介紹了設定 Dockerfile、建立自定義 Docker 映象以及配置 MariaDB 容器。這不僅簡化了開發過程,還將確保能夠複製環境,從而簡化資料庫解決方案的擴充套件、協作和後續維護。
在 Docker 中設定 MariaDB 的常見問題
在 Docker 中設定 MariaDB 有些非常常見的問題 (FAQ),本節嘗試簡要回答它們。
1. 如何將 Node.js 應用程式連線到 Docker 化的 MariaDB 資料庫?
使用任何可用的 MariaDB 的 Node.js 驅動程式將您的 Node.js 應用程式連線到您的 Docker 化 MariaDB 資料庫。在您的連線字串中提及正確的主機名 - 通常是 mariadb - 和埠。確保 Node.js 應用程式和 MariaDB 容器連線到同一個網路。
2. 如何處理 Docker 容器中 MariaDB 的資料永續性?
透過使用資料捲來持久化 MariaDB 資料。此卷將主機上的一個目錄對映到容器內部的一個目錄。寫入 MariaDB 資料庫的所有資料都儲存在主機捲上,並且在容器停止後不會丟失。
3. 如何保護 Docker 化的 MariaDB 資料庫?
為 MariaDB root 身份和其他身份設定強密碼。限制網路訪問 MariaDB 容器。定期更新映象並應用安全補丁。考慮開啟通訊的 SSL/TLS 加密。在 MariaDB 中實施訪問控制和使用者管理。