Docker部署多種容器的詳細(xì)過(guò)程
關(guān)于docker,Windows上使用Powershell/CMD執(zhí)行指令,Linux系統(tǒng)直接使用終端執(zhí)行指令。
docker安裝MySQL
拉取MySQL
也可以跳過(guò)拉取步驟,直接run,這樣本地容器不存在的話,會(huì)自動(dòng)拉取最新/指定的版本。
# 默認(rèn)拉取最新版本 docker pull mysql # 拉取指定版本MySQL docker pull mysql:5.7
安裝MySQL
# 這里 \ 是用作換行,實(shí)際情況下如果放在一行去寫(xiě),就可以刪掉\ # CentOs上"\"會(huì)被識(shí)別為換行,Windows上建議把"\"刪掉 # [:自己想要的版本]如果是想要拉取最新的版本,可缺省 docker run --name mysql_docker \ --restart=always \ --privileged=true \ -p 3306:3306 \ -e TZ=Asia/Shanghai \ -e MYSQL_ROOT_PASSWORD=lcx108642 \ -e MYSQL_ROOT_HOST=% \ -v /usr/local/mysql/log:/var/log/mysql \ -v /usr/local/mysql/data:/var/lib/mysql \ -v /usr/local/mysql/conf:/etc/mysql/conf \ -v /etc/localtime:/etc/localtime:ro \ -d \ mysql [:自己想要的版本]
- docker run:這是 Docker 的命令,用于創(chuàng)建并啟動(dòng)一個(gè)新的容器。
- --name mysql_docker_lcx:為容器指定一個(gè)名稱(chēng),這里名稱(chēng)為 mysql_docker_lcx。
- --restart=always:設(shè)置容器的重啟策略為 always,意味著無(wú)論容器因?yàn)槭裁丛蛲顺?,Docker 都會(huì)自動(dòng)重啟它。
- --privileged=true:給予容器額外的權(quán)限,使其能夠訪問(wèn)宿主機(jī)的所有設(shè)備,并且有能力執(zhí)行一些需要高級(jí)權(quán)限的操作。
- -p 3306:3306:將容器內(nèi)部的 3306 端口映射到宿主機(jī)的 3306 端口,這樣可以通過(guò)宿主機(jī)的 3306 端口訪問(wèn) MySQL 服務(wù)。
- -e TZ=Asia/Shanghai \:設(shè)置mysql服務(wù)的時(shí)區(qū)。
- -e MYSQL_ROOT_PASSWORD=123456:設(shè)置環(huán)境變量,指定 MySQL 的 root 用戶密碼為 123456。
- -e MYSQL_ROOT_HOST=%:設(shè)置環(huán)境變量,指定 MySQL 的 root 用戶允許從任何主機(jī)連接。
- -v /usr/local/mysql/log:/var/log/mysql:掛載宿主機(jī)的 /usr/local/mysql/log 目錄到容器的 /var/log/mysql 目錄,用于持久化 MySQL 的日志文件。
- -v /usr/local/mysql/data:/var/lib/mysql:掛載宿主機(jī)的 /usr/local/mysql/data 目錄到容器的 /var/lib/mysql 目錄,用于持久化 MySQL 的數(shù)據(jù)文件。
- -v /usr/local/mysql/conf:/etc/mysql/conf:掛載宿主機(jī)的 /usr/local/mysql/conf 目錄到容器的 /etc/mysql/conf 目錄,用于持久化 MySQL 的配置文件。
- -v /etc/localtime:/etc/localtime:ro:掛載宿主機(jī)的 /etc/localtime 文件到容器的 /etc/localtime 文件,用于同步宿主機(jī)的時(shí)間設(shè)置,ro 表示以只讀方式掛載。
- -d :以分離模式(后臺(tái)模式)運(yùn)行容器
- mysql 是 Docker Hub 上的官方 MySQL 鏡像名稱(chēng),[:自己指定的版本]為可選項(xiàng),不包含這個(gè)部分默認(rèn)最新版本。


遠(yuǎn)程連接MySQL
主機(jī)為docker所部署在的虛擬機(jī)/服務(wù)器的IP地址,密碼是mysql服務(wù)的密碼,端口一般都是默認(rèn)3306。


Docker安裝RabbitMQ
執(zhí)行如下指令
docker run \ -e RABBITMQ_DEFAULT_USER=root \ -e RABITTMQ_DEFAULT_PASS=123456 \ -v mq-plugins:/plugins \ --name mq \ --hostname mq \ -p 15672:15672 \ -p 5672:5672 \ -d \ rabbitmq[:自己指定版本,缺省為最新]
示例:
docker run \ -e RABBITMQ_DEFAULT_USER=root \ -e RABITTMQ_DEFAULT_PASS=123456 \ -v mq-plugins:/plugins \ --name mq \ --hostname mq \ -p 15672:15672 \ -p 5672:5672 \ -d \ rabbitmq:3.8
-e RABBITMQ_DEFAULT_USER=root:設(shè)置環(huán)境變量 RABBITMQ_DEFAULT_USER,值為 root。這是 RabbitMQ 的默認(rèn)用戶名,用于登錄管理界面或連接到 RabbitMQ 服務(wù)器。
-e RABITTMQ_DEFAULT_PASS=123456:設(shè)置環(huán)境變量 RABITTMQ_DEFAULT_PASS,值為 123456。這是 RabbitMQ 的默認(rèn)密碼,用于登錄管理界面或連接到 RabbitMQ 服務(wù)器。注意這里有一個(gè)拼寫(xiě)錯(cuò)誤,應(yīng)該是 RABBITMQ_DEFAULT_PASS。
-v mq-plugins:/plugins:將 Docker 宿主機(jī)上的一個(gè)名為 mq-plugins 的卷(volume)掛載到容器的 /plugins 目錄。這樣可以將自定義的插件放置在這個(gè)卷中,RabbitMQ 容器啟動(dòng)時(shí)會(huì)加載這些插件。
–name mq:為容器指定一個(gè)名稱(chēng),這里指定為 mq。使用這個(gè)名稱(chēng)可以在后續(xù)的 Docker 命令中方便地引用這個(gè)容器。
–hostname mq:設(shè)置容器的主機(jī)名(hostname)為 mq。這個(gè)名稱(chēng)在容器內(nèi)部的網(wǎng)絡(luò)通信中會(huì)用到。
-p 15672:15672:將容器的 15672 端口映射到宿主機(jī)的 15672 端口。RabbitMQ 的管理界面默認(rèn)使用 15672 端口,這樣可以從宿主機(jī)訪問(wèn) RabbitMQ 的管理界面。
-p 5672:5672:將容器的 5672 端口映射到宿主機(jī)的 5672 端口。RabbitMQ 的 AMQP 通信默認(rèn)使用 5672 端口,這樣宿主機(jī)上的應(yīng)用程序可以通過(guò)這個(gè)端口與 RabbitMQ 通信。
-d:以“分離模式”(detached mode)運(yùn)行容器,即在后臺(tái)運(yùn)行容器,不會(huì)占用當(dāng)前的命令行界面。
rabbitmq[:自己指定版本,缺省為最新]:指定要運(yùn)行的 Docker 鏡像名稱(chēng),這里為 rabbitmq。可以在方括號(hào)中指定版本號(hào),如果不指定版本號(hào),則默認(rèn)使用最新版本的 RabbitMQ 鏡像。
開(kāi)啟web管理
# 終端輸入指令進(jìn)入容器,mq替換成自己RabbitMQ容器名稱(chēng) docker exec -it mq bash # 執(zhí)行指令啟用 rabbitmq-plugins enable rabbitmq_management # 查看當(dāng)前mq的管理賬號(hào)

打開(kāi)瀏覽器,登錄管理頁(yè)面
# xxx.xxx.xxx.xxx換成自己服務(wù)器或虛擬機(jī)的IP地址 xxx.xxx.xxx.xxx:15672 # 對(duì)應(yīng)下方Username和Password # RABBITMQ_DEFAULT_USER=root # RABITTMQ_DEFAULT_PASS=123456

可能存在的問(wèn)題
1.無(wú)法打開(kāi)管理頁(yè)面:
嘗試執(zhí)行下列操作
# 終端輸入指令進(jìn)入容器,mq替換成自己RabbitMQ容器名稱(chēng) docker exec -it mq bash # 執(zhí)行指令啟用管理 rabbitmq-plugins enable rabbitmq_management
2.無(wú)登錄用戶或顯示Not_Authorized
# 查看當(dāng)前mq的管理賬號(hào) rabbitmqctl list_users # 如果沒(méi)有則添加用戶username并設(shè)置密碼password rabbitmqctl add_user username password # 設(shè)置指定用戶(username替換自己的用戶)為管理員 rabbitmqctl set_user_tags lcx_defender administrator rabbitmqctl set_permissions -p / lcx_defender ".*" ".*" ".*"
到此這篇關(guān)于Docker部署多種容器的文章就介紹到這了,更多相關(guān)Docker部署多種容器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker-compose基于MySQL8部署項(xiàng)目的實(shí)現(xiàn)
這篇文章主要介紹了docker-compose基于MySQL8部署項(xiàng)目的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
docker實(shí)現(xiàn)MySQL數(shù)據(jù)同步的方法
docker的一大好處是在本地可以很方便快速的搭建負(fù)載均衡,主從同步等需要多主機(jī)的環(huán)境,本文主要介紹了docker實(shí)現(xiàn)MySQL數(shù)據(jù)同步的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
解決docker pull鏡像報(bào)錯(cuò)的問(wèn)題
這篇文章主要介紹了解決docker pull鏡像報(bào)錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
docker搭建jenkins+maven代碼構(gòu)建部署平臺(tái)
本文主要介紹了docker搭建jenkins+maven代碼構(gòu)建部署平臺(tái),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06
docker image tag為什么出現(xiàn)none的原因及解決
當(dāng)我們使用docker加載新的鏡像時(shí),有時(shí)候會(huì)發(fā)現(xiàn)Repository和Tag名稱(chēng)都為none的情況,這通常是由于沒(méi)有指定正確的標(biāo)簽名稱(chēng)或者倉(cāng)庫(kù)名稱(chēng)所導(dǎo)致的,本文主要介紹了docker image tag為什么出現(xiàn)none的原因及解決,感興趣的可以了解一下2023-10-10
Docker 容器通信與數(shù)據(jù)持久化問(wèn)題及注意事項(xiàng)
本文將深入探討Docker高級(jí)管理中的容器通信技術(shù)與數(shù)據(jù)持久化方案,幫助讀者構(gòu)建高效、可靠的容器化應(yīng)用架構(gòu),對(duì)docker 數(shù)據(jù)持久化相關(guān)知識(shí)感興趣的朋友一起看看吧2025-06-06
Docker新建centos鏡像并配置遠(yuǎn)程訪問(wèn)的方法(親自實(shí)踐)
本文介紹了通過(guò)Docker創(chuàng)建多個(gè)CentOS容器模擬服務(wù)器環(huán)境的方法,涵蓋鏡像下載、網(wǎng)絡(luò)配置、自啟動(dòng)設(shè)置及解決systemd問(wèn)題,需添加privileged=true參數(shù)并安裝sshd以實(shí)現(xiàn)遠(yuǎn)程訪問(wèn)和固定IP分配,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2025-09-09

