在工作中,我經常需要安裝特定版本的 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...