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