当前位置: 代码网 > 服务器>服务器>云虚拟主机 > Docker部署多种容器的详细过程

Docker部署多种容器的详细过程

2025年02月13日 云虚拟主机 我要评论
关于docker,windows上使用powershell/cmd执行指令,linux系统直接使用终端执行指令。docker安装mysql拉取mysql也可以跳过拉取步骤,直接run,这样本地容器不存

关于docker,windows上使用powershell/cmd执行指令,linux系统直接使用终端执行指令。

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 的命令,用于创建并启动一个新的容器。
  • --name mysql_docker_lcx:为容器指定一个名称,这里名称为 mysql_docker_lcx。
  • --restart=always:设置容器的重启策略为 always,意味着无论容器因为什么原因退出,docker 都会自动重启它。
  • --privileged=true:给予容器额外的权限,使其能够访问宿主机的所有设备,并且有能力执行一些需要高级权限的操作。
  • -p 3306:3306:将容器内部的 3306 端口映射到宿主机的 3306 端口,这样可以通过宿主机的 3306 端口访问 mysql 服务。
  • -e tz=asia/shanghai \:设置mysql服务的时区。
  • -e mysql_root_password=123456:设置环境变量,指定 mysql 的 root 用户密码为 123456。
  • -e mysql_root_host=%:设置环境变量,指定 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 的数据文件。
  • -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 文件,用于同步宿主机的时间设置,ro 表示以只读方式挂载。
  • -d :以分离模式(后台模式)运行容器
  • mysql 是 docker hub 上的官方 mysql 镜像名称,[:自己指定的版本]为可选项,不包含这个部分默认最新版本。

远程连接mysql

主机为docker所部署在的虚拟机/服务器的ip地址,密码是mysql服务的密码,端口一般都是默认3306。

docker安装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[:自己指定版本,缺省为最新]

示例:

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:设置环境变量 rabbitmq_default_user,值为 root。这是 rabbitmq 的默认用户名,用于登录管理界面或连接到 rabbitmq 服务器。
-e rabittmq_default_pass=123456:设置环境变量 rabittmq_default_pass,值为 123456。这是 rabbitmq 的默认密码,用于登录管理界面或连接到 rabbitmq 服务器。注意这里有一个拼写错误,应该是 rabbitmq_default_pass。
-v mq-plugins:/plugins:将 docker 宿主机上的一个名为 mq-plugins 的卷(volume)挂载到容器的 /plugins 目录。这样可以将自定义的插件放置在这个卷中,rabbitmq 容器启动时会加载这些插件。
–name mq:为容器指定一个名称,这里指定为 mq。使用这个名称可以在后续的 docker 命令中方便地引用这个容器。
–hostname mq:设置容器的主机名(hostname)为 mq。这个名称在容器内部的网络通信中会用到。
-p 15672:15672:将容器的 15672 端口映射到宿主机的 15672 端口。rabbitmq 的管理界面默认使用 15672 端口,这样可以从宿主机访问 rabbitmq 的管理界面。
-p 5672:5672:将容器的 5672 端口映射到宿主机的 5672 端口。rabbitmq 的 amqp 通信默认使用 5672 端口,这样宿主机上的应用程序可以通过这个端口与 rabbitmq 通信。
-d:以“分离模式”(detached mode)运行容器,即在后台运行容器,不会占用当前的命令行界面。
rabbitmq[:自己指定版本,缺省为最新]:指定要运行的 docker 镜像名称,这里为 rabbitmq。可以在方括号中指定版本号,如果不指定版本号,则默认使用最新版本的 rabbitmq 镜像。

开启web管理

# 终端输入指令进入容器,mq替换成自己rabbitmq容器名称
docker exec -it mq bash
# 执行指令启用
rabbitmq-plugins enable rabbitmq_management
# 查看当前mq的管理账号

打开浏览器,登录管理页面

# xxx.xxx.xxx.xxx换成自己服务器或虚拟机的ip地址
xxx.xxx.xxx.xxx:15672
# 对应下方username和password
# rabbitmq_default_user=root
# rabittmq_default_pass=123456

可能存在的问题

1.无法打开管理页面:
尝试执行下列操作

# 终端输入指令进入容器,mq替换成自己rabbitmq容器名称
docker exec -it mq bash
# 执行指令启用管理
rabbitmq-plugins enable rabbitmq_management

2.无登录用户或显示not_authorized

# 查看当前mq的管理账号
rabbitmqctl list_users
# 如果没有则添加用户username并设置密码password
rabbitmqctl add_user username password
# 设置指定用户(username替换自己的用户)为管理员
rabbitmqctl set_user_tags lcx_defender administrator
rabbitmqctl set_permissions -p / lcx_defender ".*" ".*" ".*"

到此这篇关于docker部署多种容器的文章就介绍到这了,更多相关docker部署多种容器内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com