Home >> Blog >> docker mysql介紹
docker mysql介紹
MySQL是著名的開源關係資料庫管理系統,也是最流行的 Web 伺服器解決方案之一。它以有意義的方式存儲和構造資料,確保易於訪問。
Docker 是一組支持 CI/CD 開發的平台即服務產品。它允許用戶在稱為容器的虛擬環境中開發和部署應用程式。使用單個影像,Docker 可以啟動應用程式及其所有庫和依賴項。
在本教學中,了解如何部署 MySQL Docker 容器並開始使用容器化資料庫。
先決條件
- 訪問命令行/終端窗口
- 具有 sudo權限或訪問root帳戶的用戶帳戶
- 現有的 Docker 安裝
運行 MySQL Docker 容器
如果您需要快速建立資料庫且不佔用太多資源,在容器中部署 MySQL是一種快速高效的解決方案。這僅適用於中小型應用程式。企業級應用程式找不到足以滿足其工作負載的MySQL Docker 容器。
使用 Docker 軟體設置資料庫在小型應用程式中變得越來越流行尤其是使用在SEO搜尋引擎優化周邊軟體上。您可以部署 MySQL 資料庫容器,而不是為資料庫託管單獨的伺服器。
多個容器可以在您的電腦上運行。這些容器共享主機的相同內核和庫,同時將部署的應用程式或軟體打包成單個單元。這使得資料庫非常輕量級並且可以快速啟動。
安裝 MySQL Docker 容器
在 Docker 中設置資料庫只是基於 MySQL 影像構建容器。按照下面概述的步驟啟動並運行您的 MySQL 容器。
第 1 步:拉取 MySQL Docker 影像
1. 首先為 MySQL 拉取適當的 Docker 影像。您可以下載特定版本或選擇最新版本,如以下命令所示:
sudo docker pull mysql/mysql-server:latest
如果您想要特定版本的 MySQL,請替換latest 為版本號。
2. 通過列出下載的 Docker 影像來驗證影像現在是否存儲在本地:
sudo docker images
輸出應包含mysql/mysql-server在列出的圖像中。
第 2 步:部署 MySQL 容器
1. 獲得影像後,繼續部署新的 MySQL 容器:
sudo docker run --name=[container_name] -d [image_tag_name]
- 替換[container_name]為您選擇的名稱。如果您不提供名稱,Docker 會生成一個隨機名稱。
- 該-d選項指示 Docker 在後台將容器作為服務運行。
- 替換[image_tag_name]為在步驟 1 中下載的圖像的名稱。
在這個例子中,我們創建了一個以版本標籤命名的mysql_docker容器latest:
sudo docker run --name=[container_name] -d mysql/mysql-server:latest
2. 然後,查看 MySQL 容器是否正在運行:
docker ps
您應該會在輸出中看到新創建的容器。它包括容器詳細信息,其中之一是此虛擬環境的狀態。設置完成後,狀態將從health: starting變為。healthy
第 3 步:連接到 MySQL Docker 容器
1、在連接MySQL伺服器容器和主機之前,需要確保安裝了MySQL客戶端包:
apt-get install mysql-client
2. 然後,打開 MySQL 容器的日誌文件,找到生成的 root 密碼:
sudo docker logs [container_name]
對於mysql_docker容器,我們運行:
sudo docker logs mysql_docker
3. 滾動輸出並找到[Entrypoint] GENERATED ROOT PASSWORD: 行,將密碼複製並粘貼到記事本或文本編輯器中,以便以後使用。
4. 接下來,通過鍵入以下內容進入 MySQL 容器的 bash shell:
sudo docker exec -it [container_name] bash
對於作為示例創建的容器,我們運行:
sudo docker -it mysql_docker bash
3. 出現提示時,提供您從日誌文件中復制的 root 密碼。至此,您已將 MySQL 客戶端連接到伺服器。
4.最後,更改伺服器root密碼以保護您的信息:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '[newpassword]';
替換[newpassword]為您選擇的強密碼。
配置 MySQL 容器
當你安裝一個 MySQL 容器時,你會在/etc/mysql/my.cnf=目錄中找到它的配置選項。
如果您需要修改配置,請在主機上創建一個替代配置文件並將它們掛載到容器中。
1.首先在宿主機上新建一個目錄:
sudo mkdir -p /root/docker/[container_name]/conf.d
2. 在該目錄中創建一個自定義 MySQL 配置文件:
sudo nano /root/docker/[container_name]/conf.d/my-custom.cnf
3. 進入文件後,您可以添加具有所需配置的行。
例如,如果要將最大連接數增加到 250(而不是默認的 151),請將以下行添加到配置文件中:
[mysqld]
max_connections=250
4. 保存並退出文件。
5. 要進行更改,您需要刪除並重新運行 MySQL 容器。這一次,容器使用新創建的文件和默認配置文件中的配置設置組合。
為此,請運行容器並使用以下命令映射卷路徑:
docker run \
--detach \
--name=[container_name] \
--env="MYSQL_ROOT_PASSWORD=[my_password]" \
--publish 6603:3306 \
--volume=/root/docker/[container_name]/conf.d:/etc/mysql/conf.d \
mysql
6. 要檢查容器是否從主機加載了配置,請運行以下命令:
mysql -uroot -pmypassword -h127.0.0.1 -P6603 -e 'show global variables like "max_connections"';
您應該看到現在的最大連接數是250。
管理資料存儲
默認情況下,Docker 將資料存儲在其內部卷中。
要檢查卷的位置,請使用以下命令:
sudo docker inspect [container_name]
您將看到/var/lib/mysql安裝在內部卷中。
您還可以更改資料目錄的位置並在主機上創建一個。在容器外有一個卷允許其他應用程式和工具在需要時訪問這些卷。
1、首先在宿主機上找到一個合適的捲,並在上面創建一個資料目錄:
sudo mkdir -p /storage/docker/mysql-dataT
2. 現在再次啟動容器,掛載之前創建的目錄:
docker run \
--detach \
--name=[container_name] \
--env="MYSQL_ROOT_PASSWORD=my_password" \
--publish 6603:3306 \
--volume=/root/docker/[container_name]/conf.d:/etc/mysql/conf.d \
--volume=/storage/docker/mysql-data:/var/lib/mysql \
mysql
如果您檢查容器,您應該會看到 MySQL 容器現在將其資料存儲在主機系統上。運行命令:
sudo docker inspect [container_name]
啟動、停止和重啟 MySQL 容器
當容器中運行的進程停止時,容器會自動停止。
要啟動 MySQL 容器,請運行:
sudo docker start [container_name]
停止 MySQL 容器,使用命令:
sudo docker stop [container_name]
要重新啟動 MySQL 容器,請運行:
Tsudo docker restart [container_name]
刪除 MySQL 容器
在刪除 MySQL 容器之前,請確保先將其停止。
然後,使用以下命令刪除 docker 容器:
Tsudo docker rm [container_name]