使用Docker容器在Linux上部署MySQL方式
Docker容器在Linux上部署MySQL
使用Docker部署MySQL服務(wù)器的基本步驟包
括以下幾點:
MySQL團(tuán)隊維護(hù)的MySQL Docker鏡像專門針對Linux平臺構(gòu)建。其他平臺不受支持,而在這些平臺上使用這些MySQL Docker鏡像的用戶將自擔(dān)風(fēng)險。
下載MySQL Server Docker鏡像
重要提示
對于MySQL企業(yè)版用戶:要使用MySQL企業(yè)版的Docker鏡像,需要訂閱。訂閱采用自帶許可證模式(Bring Your Own License model)。
在單獨的步驟中下載服務(wù)器鏡像并非絕對必要;然而,在創(chuàng)建Docker容器之前執(zhí)行此步驟可確保本地鏡像是最新的。要從Oracle容器注冊表(OCR)下載MySQL社區(qū)版鏡像,請運行以下命令:
docker pull container-registry.oracle.com/mysql/community-server:tag
標(biāo)簽(tag)是您想要拉取的鏡像版本的標(biāo)簽(例如,5.7、8.0或者latest)。如果省略了`:tag`,將使用latest標(biāo)簽,并且將下載MySQL社區(qū)服務(wù)器最新通用版本(GA)的鏡像。
要從OCR下載MySQL企業(yè)版鏡像,您需要首先在OCR上接受許可協(xié)議,并使用您的Docker客戶端登錄到容器倉庫。請按照以下步驟進(jìn)行:
- 訪問OCR網(wǎng)站 https://container-registry.oracle.com/ 并選擇MySQL。
- 在MySQL倉庫列表下,選擇enterprise-server。
- 如果您尚未登錄OCR,請單擊頁面右側(cè)的“登錄”按鈕,然后在提示時輸入您的Oracle帳戶憑據(jù)。
- 按照頁面右側(cè)的說明接受許可協(xié)議。
- 使用您的容器客戶端登錄到OCR,例如使用docker login命令:
# docker login container-registry.oracle.com Username: Oracle-Account-ID Password: password Login successful.
使用以下命令從OCR下載MySQL企業(yè)版的Docker鏡像:
docker pull container-registry.oracle.com/mysql/enterprise-server:tag
要從My Oracle Support網(wǎng)站下載MySQL企業(yè)版鏡像,請訪問該網(wǎng)站,登錄您的Oracle賬戶,然后在登陸頁面執(zhí)行以下步驟:
- 選擇“Patches and Updates(補丁和更新)”標(biāo)簽頁。
- 轉(zhuǎn)到“Patch Search(補丁搜索)”區(qū)域,并在“Search(搜索)”標(biāo)簽下切換到“Product or Family(產(chǎn)品或家族)(Advanced)(高級)”子標(biāo)簽。
- 在“Product(產(chǎn)品)”字段輸入“MySQL Server”,并在“Release(發(fā)布版本)”字段輸入所需的版本號。
- 使用附加過濾器的下拉菜單選擇“Description—contains(描述—包含)”,并在文本框中輸入“Docker”。
- 點擊“Search”(搜索)按鈕,從結(jié)果列表中選擇您想要的版本,然后點擊“Download”(下載)按鈕。
- 在出現(xiàn)的“File Download”(文件下載)對話框中,點擊并下載Docker鏡像的.zip文件。
解壓下載的 .zip 壓縮包以獲取其中的 tarball (mysql-enterprise-server-version.tar),然后運行以下命令加載鏡像:
docker load -i mysql-enterprise-server-version.tar
您可以使用以下命令列出已下載的 Docker 鏡像:
$> docker images REPOSITORY TAG IMAGE ID CREATED SIZE container-registry.oracle.com/mysql/community-server latest 1d9c2219ff69 2 months ago 496MB
啟動 MySQL 服務(wù)器實例
要為 MySQL Server 啟動一個新的 Docker 容器,請使用以下命令:
docker run --name=container_name --restart on-failure -d image_name:tag
image_name 是用于啟動容器的鏡像的名稱;
--name
選項用于為您的服務(wù)器容器提供自定義名稱,是可選的;如果沒有提供容器名稱,則會生成一個隨機名稱。--restart
選項用于配置容器的重啟策略;它應(yīng)設(shè)置為值 on-failure,以啟用對服務(wù)器在客戶端會話中重新啟動的支持(例如,當(dāng)客戶端執(zhí)行 RESTART 語句或在配置 InnoDB 集群實例時發(fā)生)。啟用重啟支持后,在客戶端會話中發(fā)出重啟會導(dǎo)致服務(wù)器和容器停止然后重新啟動。支持服務(wù)器重啟可用于 MySQL 8.0.21 及更高版本。
例如:
要為 MySQL Community Server 啟動一個新的 Docker 容器,請使用以下命令:
docker run --name=mysql1 --restart on-failure -d container-registry.oracle.com/mysql/community-server:lates
要使用從 OCR 下載的 Docker 鏡像啟動 MySQL Enterprise Server 的新 Docker 容器,請使用以下命令:
docker run --name=mysql1 --restart on-failure -d container-registry.oracle.com/mysql/enterprise-server:late
要使用從My Oracle Support下載的Docker鏡像啟動新的MySQL Enterprise Server Docker容器,請使用此命令:
docker run --name=mysql1 --restart on-failure -d mysql/enterprise-server:latest
如果指定名稱和標(biāo)簽的Docker鏡像尚未通過先前的docker pull或docker run命令下載,現(xiàn)在會下載該鏡像。
容器的初始化開始,并且當(dāng)您運行docker ps命令時,該容器將出現(xiàn)在正在運行的容器列表中。
例如:
$> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4cd4129b3211 container-registry.oracle.com/mysql/community-server:latest "/entrypoint.sh mysq…" 8 sec
容器初始化可能需要一些時間。當(dāng)服務(wù)器準(zhǔn)備就緒可以使用時,運行docker ps命令輸出中容器的狀態(tài)將從(health: starting)更改為(healthy)。
上面使用的docker run命令中的-d選項使容器在后臺運行。
使用此命令來監(jiān)視容器的輸出:
docker logs mysql1
一旦初始化完成,命令的輸出將包含為root用戶生成的隨機密碼;
例如,使用以下命令檢查密碼:
$> docker logs mysql1 2>&1 | grep GENERATED GENERATED ROOT PASSWORD: Axegh3kAJyDLaRuBemecis&EShOs
從容器內(nèi)部連接到MySQL服務(wù)器
一旦服務(wù)器準(zhǔn)備就緒,您可以在剛啟動的MySQL服務(wù)器容器內(nèi)運行mysql客戶端,并連接到MySQL服務(wù)器。
使用docker exec -it命令在您啟動的Docker容器中啟動一個mysql客戶端,示例如下:
docker exec -it mysql1 mysql -uroot -p
當(dāng)要求輸入時,請輸入生成的root密碼(請參閱上述“啟動MySQL服務(wù)器實例”的最后一步,找到密碼方法)。
由于MYSQL_ONETIME_PASSWORD選項默認(rèn)為true,在您將mysql客戶端連接到服務(wù)器之后,必須通過執(zhí)行以下語句重新設(shè)置服務(wù)器的root密碼:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
將password替換為您選擇的密碼。一旦密碼重置完成,服務(wù)器就準(zhǔn)備好供使用了。
容器shell訪問
要訪問MySQL服務(wù)器容器的shell,請使用docker exec -it命令在容器內(nèi)啟動一個bash shell:
$> docker exec -it mysql1 bash bash-4.2#
然后,您可以在容器內(nèi)運行Linux命令。
例如,要查看容器內(nèi)服務(wù)器數(shù)據(jù)目錄中的內(nèi)容,請使用以下命令:
bash-4.2# ls /var/lib/mysql auto.cnf ca.pem client-key.pem ib_logfile0 ibdata1 mysql mysql.sock.lock private_key.pem server-cert.pem sys ca-key.pem client-cert.pem ib_buffer_pool ib_logfile1 ibtmp1 mysql.sock performance_schema publ
停止和刪除MySQL容器
要停止我們創(chuàng)建的MySQL服務(wù)器容器,請使用以下命令:
docker stop mysql1
docker stop向mysqld進(jìn)程發(fā)送一個SIGTERM信號,使服務(wù)器能夠優(yōu)雅地關(guān)閉。
還要注意,當(dāng)容器的主要進(jìn)程(在MySQL服務(wù)器容器的情況下是mysqld)停止時,Docker容器會自動停止。
要再次啟動MySQL服務(wù)器容器:
docker start mysql1
要通過一個命令停止并重新啟動MySQL服務(wù)器容器:
docker restart mysql1
要刪除MySQL容器,首先停止它,然后使用docker rm命令:
docker stop mysql1 docker rm mysql1
如果您希望同時刪除服務(wù)器數(shù)據(jù)目錄的Docker卷,請在docker rm命令中添加v選項。
升級MySQL服務(wù)器容器
重要事項:
- 在對MySQL進(jìn)行任何升級之前備份您的數(shù)據(jù)庫。
- 本節(jié)中的說明要求將服務(wù)器的數(shù)據(jù)和配置持久化到主機上。
按照以下步驟升級Docker中的MySQL 5.7到8.0版本:
- 停止MySQL 5.7服務(wù)器(在此示例中容器名稱為mysql57):
docker stop mysql57
- 下載MySQL 8.0服務(wù)器的Docker鏡像。確保使用適用于MySQL 8.0的正確標(biāo)簽。
- 使用在主機上持久保存的舊服務(wù)器數(shù)據(jù)和配置啟動一個新的MySQL 8.0 Docker容器(在本示例中命名為mysql80),方法是將其綁定掛載。對于MySQL Community Server,請運行以下命令:
docker run --name=mysql80 \ --mount type=bind,src=/path-on-host-machine/my.cnf,dst=/etc/my.cnf \ --mount type=bind,src=/path-on-host-machine/datadir,dst=/var/lib/mysql \ -d container-registry.oracle.com/mysql/community-server:8.0
如有需要,請將 container-registry.oracle.com/mysql/community-server 調(diào)整為正確的鏡像名稱,
例如,使用 container-registry.oracle.com/mysql/enterprise-server 替換MySQL企業(yè)版的鏡像,這些鏡像可以從OCR下載,或使用 mysql/enterprise-server 從我的Oracle支持下載MySQL企業(yè)版鏡像。
- 等待服務(wù)器完成啟動。您可以使用 docker ps 命令檢查服務(wù)器的狀態(tài)。
對于在8.0系列中進(jìn)行升級(即從8.0.x版本升級到8.0.y版本),請按照同樣的步驟操作:停止原始容器,然后使用更新的鏡像在舊服務(wù)器數(shù)據(jù)和配置上啟動一個新的容器。
如果在啟動原始容器時使用了8.0或最新標(biāo)簽,并且現(xiàn)在有一個您想要升級的新的MySQL 8.0版本,您必須首先使用以下命令拉取新版本的鏡像:
docker pull container-registry.oracle.com/mysql/community-server:8.0
您可以通過在舊數(shù)據(jù)和配置上使用相同標(biāo)簽啟動一個新容器來進(jìn)行升級。
docker run --name=mysql80new \ --mount type=bind,src=/path-on-host-machine/my.cnf,dst=/etc/my.cnf \ --mount type=bind,src=/path-on-host-machine/datadir,dst=/var/lib/mysql \ -d container-registry.oracle.com/mysql/community-server:8.0
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
windows server 2016安裝docker的方法步驟
這篇文章主要介紹了windows server 2016安裝docker的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-06-06docker通過Dockerfile修改鏡像中tomcat的端口
8080端口會經(jīng)常出現(xiàn)被占用的情況,本文主要介紹了docker通過Dockerfile修改鏡像中tomcat的端口,具有一定的參考價值,感興趣的可以了解一下2023-10-10docker-compose網(wǎng)絡(luò)設(shè)置之networks的使用
本文詳細(xì)解釋了在使用 Docker Compose時如何配置網(wǎng)絡(luò),包括創(chuàng)建、使用和問題解決等方面,介紹了如何通過docker-compose.yml文件快速編排和部署應(yīng)用服務(wù),同時解決網(wǎng)絡(luò)隔離問題,感興趣的可以了解一下2024-10-10k3s?通過docker部署?Kubernetes的方法步驟
本文主要介紹了k3s?通過docker部署?Kubernetes的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-11-11