技術譯文 使用 Docker 安裝 MySQL

2021-09-29 20:03:40 字數 3545 閱讀 9213

在工作中,我經常需要安裝特定版本的 mysql、mariadb 或 percona 來執行一些實驗,例如:檢查版本差異或是提供測試說明。此部落格系列將闡述如何使用 docker 安裝 mysql、mariadb 或 percona。這篇文章是第一篇,重點是 mysql。

docker 的優點在於它可以非常輕鬆地安裝最新的 mysql 版本以及任何其他版本,但往往與典型的生產安裝不匹配。當您需要簡單的單個例項時,docker 的確很方便。如果您正在研究一些與複製相關的行為,那麼則不一定適合。

這些說明皆在快速、輕鬆地執行測試例項的情況下。不適用於生產部署。以下內容所假定已安裝 docker。

首先,您應該知道只有兩個「官方」 mysql docker 儲存庫。其中之一由 docker 團隊維護,可通過乙個簡單的 docker 命令 mysql:latest 執行起來。另乙個由 oracle 的 mysql 團隊維護,語法:

docker run mysql / mysql-server:latest
說明:語法中的 latest 是 tag 值,表示預設安裝庫中的最新版本

在以下示例中,我們將使用 mysql 團隊的 docker 映像,儘管 docker 團隊的工作方式與此類似。

docker run --name mysql-latest  \

-p 3306:3306 -p 33060:33060 \

-e mysql_root_host='%' -e mysql_root_password='strongpassword' \

-d mysql/mysql-server:latest

這將啟動最新版本的 mysql 例項,可以使用指定的 root 密碼從任何地方遠端訪問該例項。這很容易測試,但不是好的安全習慣(這就是為什麼它不是預設值)的原因。

使用 docker 安裝意味著您無法直接在主機上獲得任何工具,實用程式或庫,因此您可以單獨安裝它們,從遠端主機訪問建立的例項,或使用 docker 映像附帶的命令列。

docker exec -it mysql-latest mysql -uroot -pstrongpassword
docker exec -it mysql-latest mysqlsh -uroot -pstrongpassword
當您要停止 mysql server docker 容器執行時:

docker stop mysql-latest
如果要重新啟動已停止的 mysql docker 容器,則不應嘗試使用 docker run 重新啟動它。相反,您應該使用:

docker start mysql-latest
如果出現錯誤,例如,如果容器未啟動,則可以使用以下命令訪問其日誌:

docker logs mysql-latest
如果要從頭開始重新建立乙個新的 docker 容器,可以執行:

docker stop mysql-latest

docker rm mysql-latest

之後再次執行docker run命令。

如果要將某些命令列選項傳給 mysql server,可以採用以下方式:

docker run --name mysql-latest  \

-p 3306:3306 -p 33060:33060 \

-e mysql_root_host='%' -e mysql_root_password='strongpassword' \

-d mysql/mysql-server:latest \

--innodb_buffer_pool_size=256m \

--innodb_flush_method=o_direct \

如果想在 docker 容器中執行某版本的 mysql,這很簡單。您可以使用 docker image tag 選擇想要的版本,並將 name 更改為其他名稱,以避免名稱衝突:

docker run --name mysql-8.0.17  \

-p 3306:3306 -p 33060:33060 \

-e mysql_root_host='%' -e mysql_root_password='strongpassword' \

-d mysql/mysql-server:8.0.17

這將在 docker 容器中啟動 mysql 8.0.17。

docker run --name mysql-5.7  \

-p 3306:3306 -p 33060:33060 \

-e mysql_root_host='%' -e mysql_root_password='strongpassword' \

-d mysql/mysql-server:5.7

這將在 docker 中啟動最新的 mysql 5.7。

同時在 docker 中執行多版本的 mysql ,潛在問題是 tcp 埠衝突。如果您不從外部訪問 docker 容器,而只執行同一容器中包含的程式,則可以刪除埠對映(-p option),然後可以執行多個容器:

docker run --name mysql-latest  \

-e mysql_root_host='%' -e mysql_root_password='strongpassword' \

-d mysql/mysql-server:latest

docker run --name mysql-8.0.17 \

-e mysql_root_host='%' -e mysql_root_password='strongpassword' \

-d mysql/mysql-server:8.0.17

在更常見的情況下,當您需要從外部訪問 docker 容器時,您將需要將其對映為使用不同的外部埠名稱。 例如,要在埠 3306/33060 和 mysql 8.0.17 在 3307/33070 處啟動最新的 mysql 8,我們可以使用:

docker run --name mysql-latest  \

-p 3306:3306 -p 33060:33060 \

-e mysql_root_host='%' -e mysql_root_password='strongpassword' \

-d mysql/mysql-server:latest

docker run --name mysql-8.0.17 \

-p 3307:3306 -p 33070:33060 \

-e mysql_root_host='%' -e mysql_root_password='strongpassword' \

-d mysql/mysql-server:8.0.17

如果要在 docker 上使用 mysql 進行更複雜的事請,那還有很多事情要考慮。

docker在windows環境下安裝mysql

拉取mysql映象 拉取映象命令為docker pull 映象名稱 版本號 docker pull mysql然後 docker images建立對映相關檔案目錄這一步按需執行,最好是把data存放到當前的宿主機 建立乙個資料夾data,作為mysql容器的data對映目錄 啟動mysql服務 執行...

Docker技術入門之 Docker安裝 1

docker從1.13版本之後採用時間線的方式作為版本號,分為社群版ce和企業版ee。社群版是免費提供給個人開發者和小型團體使用的,企業版會提供額外的收費服務,比如經過官方測試認證過的基礎設施 容器 外掛程式等。社群版按照stable和edge兩種方式發布,每個季度更新stable版本,如17.06...

安裝,使用Docker

7.建立公司映象的容器,並直接執行 1.使用映象名啟動,注意需要加在映象名後面加 和tag標籤 docker run d it v tbkt web api dj code p 8009 8009 entrypoint python name web api djangov1.11.1 v1.6 c...