Docker部署多種容器的詳細過程
關(guān)于docker,Windows上使用Powershell/CMD執(zhí)行指令,Linux系統(tǒng)直接使用終端執(zhí)行指令。
docker安裝MySQL
拉取MySQL
也可以跳過拉取步驟,直接run,這樣本地容器不存在的話,會自動拉取最新/指定的版本。
# 默認拉取最新版本 docker pull mysql # 拉取指定版本MySQL docker pull mysql:5.7
安裝MySQL
# 這里 \ 是用作換行,實際情況下如果放在一行去寫,就可以刪掉\ # CentOs上"\"會被識別為換行,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)建并啟動一個新的容器。
- --name mysql_docker_lcx:為容器指定一個名稱,這里名稱為 mysql_docker_lcx。
- --restart=always:設(shè)置容器的重啟策略為 always,意味著無論容器因為什么原因退出,Docker 都會自動重啟它。
- --privileged=true:給予容器額外的權(quán)限,使其能夠訪問宿主機的所有設(shè)備,并且有能力執(zhí)行一些需要高級權(quán)限的操作。
- -p 3306:3306:將容器內(nèi)部的 3306 端口映射到宿主機的 3306 端口,這樣可以通過宿主機的 3306 端口訪問 MySQL 服務(wù)。
- -e TZ=Asia/Shanghai \:設(shè)置mysql服務(wù)的時區(qū)。
- -e MYSQL_ROOT_PASSWORD=123456:設(shè)置環(huán)境變量,指定 MySQL 的 root 用戶密碼為 123456。
- -e MYSQL_ROOT_HOST=%:設(shè)置環(huán)境變量,指定 MySQL 的 root 用戶允許從任何主機連接。
- -v /usr/local/mysql/log:/var/log/mysql:掛載宿主機的 /usr/local/mysql/log 目錄到容器的 /var/log/mysql 目錄,用于持久化 MySQL 的日志文件。
- -v /usr/local/mysql/data:/var/lib/mysql:掛載宿主機的 /usr/local/mysql/data 目錄到容器的 /var/lib/mysql 目錄,用于持久化 MySQL 的數(shù)據(jù)文件。
- -v /usr/local/mysql/conf:/etc/mysql/conf:掛載宿主機的 /usr/local/mysql/conf 目錄到容器的 /etc/mysql/conf 目錄,用于持久化 MySQL 的配置文件。
- -v /etc/localtime:/etc/localtime:ro:掛載宿主機的 /etc/localtime 文件到容器的 /etc/localtime 文件,用于同步宿主機的時間設(shè)置,ro 表示以只讀方式掛載。
- -d :以分離模式(后臺模式)運行容器
- mysql 是 Docker Hub 上的官方 MySQL 鏡像名稱,[:自己指定的版本]為可選項,不包含這個部分默認最新版本。
遠程連接MySQL
主機為docker所部署在的虛擬機/服務(wù)器的IP地址,密碼是mysql服務(wù)的密碼,端口一般都是默認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 的默認用戶名,用于登錄管理界面或連接到 RabbitMQ 服務(wù)器。
-e RABITTMQ_DEFAULT_PASS=123456:設(shè)置環(huán)境變量 RABITTMQ_DEFAULT_PASS,值為 123456。這是 RabbitMQ 的默認密碼,用于登錄管理界面或連接到 RabbitMQ 服務(wù)器。注意這里有一個拼寫錯誤,應(yīng)該是 RABBITMQ_DEFAULT_PASS。
-v mq-plugins:/plugins:將 Docker 宿主機上的一個名為 mq-plugins 的卷(volume)掛載到容器的 /plugins 目錄。這樣可以將自定義的插件放置在這個卷中,RabbitMQ 容器啟動時會加載這些插件。
–name mq:為容器指定一個名稱,這里指定為 mq。使用這個名稱可以在后續(xù)的 Docker 命令中方便地引用這個容器。
–hostname mq:設(shè)置容器的主機名(hostname)為 mq。這個名稱在容器內(nèi)部的網(wǎng)絡(luò)通信中會用到。
-p 15672:15672:將容器的 15672 端口映射到宿主機的 15672 端口。RabbitMQ 的管理界面默認使用 15672 端口,這樣可以從宿主機訪問 RabbitMQ 的管理界面。
-p 5672:5672:將容器的 5672 端口映射到宿主機的 5672 端口。RabbitMQ 的 AMQP 通信默認使用 5672 端口,這樣宿主機上的應(yīng)用程序可以通過這個端口與 RabbitMQ 通信。
-d:以“分離模式”(detached mode)運行容器,即在后臺運行容器,不會占用當前的命令行界面。
rabbitmq[:自己指定版本,缺省為最新]:指定要運行的 Docker 鏡像名稱,這里為 rabbitmq??梢栽诜嚼ㄌ栔兄付ò姹咎?,如果不指定版本號,則默認使用最新版本的 RabbitMQ 鏡像。
開啟web管理
# 終端輸入指令進入容器,mq替換成自己RabbitMQ容器名稱 docker exec -it mq bash # 執(zhí)行指令啟用 rabbitmq-plugins enable rabbitmq_management # 查看當前mq的管理賬號
打開瀏覽器,登錄管理頁面
# xxx.xxx.xxx.xxx換成自己服務(wù)器或虛擬機的IP地址 xxx.xxx.xxx.xxx:15672 # 對應(yīng)下方Username和Password # RABBITMQ_DEFAULT_USER=root # RABITTMQ_DEFAULT_PASS=123456
可能存在的問題
1.無法打開管理頁面:
嘗試執(zhí)行下列操作
# 終端輸入指令進入容器,mq替換成自己RabbitMQ容器名稱 docker exec -it mq bash # 執(zhí)行指令啟用管理 rabbitmq-plugins enable rabbitmq_management
2.無登錄用戶或顯示Not_Authorized
# 查看當前mq的管理賬號 rabbitmqctl list_users # 如果沒有則添加用戶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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker image tag為什么出現(xiàn)none的原因及解決
當我們使用docker加載新的鏡像時,有時候會發(fā)現(xiàn)Repository和Tag名稱都為none的情況,這通常是由于沒有指定正確的標簽名稱或者倉庫名稱所導致的,本文主要介紹了docker image tag為什么出現(xiàn)none的原因及解決,感興趣的可以了解一下2023-10-10Docker+Jupyter 部署算力服務(wù)的解決方案
Docker+Jupyter部署算力服務(wù)為AI學習框架提供了一種高效的發(fā)布和使用方案,本文以Windows環(huán)境為例,介紹了如何下載安裝Docker工具,以及如何根據(jù)AI框架所需的Python版本拉取合適的Jupyter鏡像,本文介紹了Docker+Jupyter 部署算力服務(wù)的相關(guān)知識,一起看看吧2024-11-11docker使用dockercompose編排一個Hadoop集群方式
這篇文章主要介紹了docker使用dockercompose編排一個Hadoop集群方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01skywalking agent 關(guān)聯(lián)docker鏡像的多種方法
Apache SkyWalking 提供了多種方式來部署和使用 SkyWalking Agent,包括在 Docker 容器中運行的應(yīng)用,本文給大家分享幾種方式將 SkyWalking Agent 集成到你的 Docker 應(yīng)用中,感興趣的朋友一起看看吧2025-04-04pycharm與ssh遠程訪問服務(wù)器docker的詳細教程
這篇文章主要介紹了pycharm與ssh遠程訪問服務(wù)器docker,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10