Docker容器
文章引用
同篇文章引自亮哥博客 : https://haoyongliang.gitee.io/Docker
目标
◆ 初识 Docker
◆ Docker 命令
◆ Docker 容器数据卷
◆ Dockerfile
◆ Docker 应用部署
◆ Docker 服务编排
◆ Docker 私有仓库
◆ Docker相关概念
1. 初始docker
1.1 docker概念
我们写的代码会接触到好几个环境:开发环境、测试环境以及生产环境:
Docker 是一个开源的应用容器引擎
诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc)
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上
容器是完全使用沙箱机制,相互隔离
容器性能开销极低
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)
1.2 安装docker
Docker可以运行在MAC、Windows、CentOS、UBUNTU等操作系统上,本课程基于CentOS 7 安装
Docker。官网:https://www.docker.com
1 | 1、yum 包更新到最新 |
1.3 docker架构
- 镜像(Image):Docker 镜像(Image),就相当于是 一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包 含了完整的一套 Ubuntu16.04 最小系统的 root 文件系 统。
- 容器(Container):镜像(Image)和容器(Contain er)的关系,就像是面向对象程序设计中的类和对象一 样,镜像是静态的定义,容器是镜像运行时的实体。容 器可以被创建、启动、停止、删除、暂停等。
- 仓库(Repository):仓库可看成一个代码控制中心, 用来保存镜像。
1.4 配置 Docker 镜像加速器
默认情况下,将来从docker hub(https://hub.docker.com/)上下载
docker镜像,太慢。一般都会配置镜像加速器:
• USTC:中科大镜像加速器(https://docker.mirrors.ustc.edu.cn)
• 阿里云
• 网易云
• 腾讯云
本次我们使用阿里云镜像
1.登录阿里云网站(https://www.aliyun.com/)
- 查看文件/etc/docker/daemon.json
1 | 执行如下命令: |
2 .docker命令
2.1 进程相关命令
关于进程相关的命令
2.1.1 启动docker服务
1 | systemctl start docker |
2.1.2 停止docker服务
1 | systemctl stop docker |
2.1.3 重启docker服务
1 | systemctl restart docker |
2.1.4 查看docker服务状态
1 | systemctl status docker |
2.1.5 开机启动docker服务
1 | systemctl enable docker |
2.2 Docker 镜像相关命令
2.2.1 查看镜像
- 查看本地所有的镜像
1 | docker images |
REPOSITORY:镜像名称
TAG:镜像标签
IMAGE ID:镜像ID
CREATED:镜像的创建日期
SIZE:镜像大小
2.2.2 搜索镜像
- 从网络中查找需要的镜像
1 | docker search 镜像名称 |
NAME:镜像名称
DESCRIPTION:镜像描述
STARS:用户评价,反应一个镜像的受欢迎程度
OFFICIAL:是否官方
AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的
2.2.3 拉取镜像
从Docker仓库下载镜像到本地,镜像名称格式为 名称:版本号,如果版本号不指定则是最新的版本。 如果不知道镜像版本,可以去docker hub 搜索对应镜像查看。
1 | docker pull 镜像名称 |
2.2.4 删除镜像
删除本地镜像
1 | docker rmi 镜像id # 删除指定本地镜像 |
关于docker更多命令, 大家可以菜鸟教程查看, 网址:
https://www.runoob.com/docker/docker-command-manual.html
2.3 容器相关的命令
2.3.1 查看容器
1 | docker ps # 查看正在运行的容器 |
2.3.2 创建并启动容器
1 | docker run -di --name=xx images名称 参数 |
参数说明:
• -i:保持容器运行。通常与 -t 同时使用。加入it这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭。
• -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用。
• -d:以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用docker exec 进入容器。退出后,容器不会关闭。
• -it 创建的容器一般称为交互式容器,-id 创建的容器一般称为守护式容器
• –name:为创建的容器命名。
1)交互式容器
以交互式方式创建并启动容器,启动完成后,直接进入当前容器。使用exit命令退出容器。需要注意的是以此种方式 启动容器,如果退出容器,则容器会进入停止状态。
1 | 先拉取一个镜像;这一步不是每次启动容器都要做的,而是因为前面我们删除了镜像,无镜像可用所以才再拉取一个 |
2)守护式容器
创建一个守护式容器;如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。命令如下(容器名称 不能重复):
1 | 创建并启动守护式容器 |
2.3.3 进入容器
1 | docker exec 参数 # 退出容器,容器不会关闭 |
2.3.4 停止容器
1 | docker stop 容器名称或者容器id |
2.3.5 启动容器
1 | docker start 容器名称或者容器id |
2.3.6 删除容器
1 | 删除指定容器 |
注意:如果容器是运行状态则删除失败,需要停止容器才能删除
2.3. 7 查看容器信息
1 | docker inspect 容器名称或者容器id |
说明:容器之间在一个局域网内,linux宿主机器可以与容器进行通信;但是外部的物理机笔记本是不能与容器直接通信的,如果需要则需要通过宿主机器端口的代理。
3 . docker容器的数据卷
3.1 数据卷概念
思考:
• Docker 容器删除后,在容器中产生的数据也会随之销毁
• Docker 容器和外部机器可以直接交换文件吗?
• 容器之间想要进行数据交互?
数据卷
- 数据卷是宿主机中的一个目录或文件
- 当容器目录和数据卷目录绑定后,对方的修改会立即同步
- 一个数据卷可以被多个容器同时挂载
- 一个容器也可以被挂载多个数据卷
数据卷的作用
• 容器数据持久化
• 外部机器和容器间接通信
• 容器之间数据交换
3.2 配置数据卷
创建启动容器时,使用 –v 参数 设置数据卷
1 | docker run ... –v 宿主机目录(文件):容器内目录(文件) ... |
注意事项:
目录必须是绝对路径
如果目录不存在,会自动创建
一个容器可以挂载多个数据卷
一个数据卷也可以被多个容器挂载
两个容器可以挂载同一个容器
在宿主机中实现与容器目录的挂载:
在c1容器中的root目录下就可以看到data_container文件夹:如下图
同时我们我们回到宿主机中,可以在data文件夹下创建一个文件itcast.txt ,可以发现在容器中也会生成itcast.txt文件:如下图
- 数据卷的持久化:
当我们把c1容器删除后,宿主机中的数据卷依然存在。 所以当我们重新创建一个容器的同时依然可以挂载宿主机中的data文件夹,对应data里的数据依然同步到容器中。
- 一个容器可以挂载多个数据卷
- 多个容器可以挂载同一个数据卷
分别创建两个容器,两个容器都挂载宿主机中data目录,当 修改c3容器的data目录c4会实现同步。
从而实现两个容器之间的交互。
3.3 配置数据卷容器
多容器进行数据交换
多个容器挂载同一个数据卷
数据卷容器
步骤:
1.创建启动c3数据卷容器,使用 –v 参数 设置数据卷
1 | docker run –it --name=c3 –v /volume centos:7 /bin/bash |
- 创建启动 c1 c2 容器,使用 –-volumes-from 参数 设置数据卷
1 | docker run –it --name=c1 --volumes-from c3 centos:7 /bin/bash |
3.4 数据卷小结
数据卷概念
•宿主机的一个目录或文件数据卷作用
• 容器数据持久化
• 客户端和容器数据交换
• 容器间数据交换数据卷容器
• 创建一个容器,挂载一个目录,让其他容器继承自该容器( –volume-from )。
• 通过简单方式实现数据卷配置
4. 应用部署
参考 5. Docker应用部署
5. Dockerfile
参考 4. Dockerfile
前面的课程中已经知道了,要获得镜像,可以从Docker仓库中进行下载。那如果我们想自己开发一个镜像,那该如 何做呢?答案是:Dockerfifile
Dockerfifile其实就是一个文本文件,由一系列命令和参数构成,Docker可以读取Dockerfifile文件并根据Dockerfifile文 件的描述来构建镜像。
5.1 Docker 镜像原理(了解)
思考:
Docker 镜像本质是什么?
是一个分层文件系统Docker 中一个centos镜像为什么只有200MB,而一个centos操作系统的iso文件要几个个G? ?
Centos的iso镜像文件包含bootfs和rootfs,而docker的centos镜像复用操作系统的bootfs,只有rootfs和其他镜像层
Docker 中一个tomcat镜像为什么有500MB,而一个tomcat安装包只有70多MB? ?
由于docker中镜像是分层的,tomcat虽然只有70多MB,但他需要依赖于父镜像和基础镜像,所有整个对外暴露的
tomcat镜像大小500多MB
Linux操作系统:文件系统
Linux : 内核态 (cpu),用户态(内存,硬盘)
5.2 镜像制作
5.2.1 容器转为镜像
- 使用docker commit命令可以将容器保存为镜像。
命令形式:docker commit 容器名称 镜像名称
1 | eg: |
- 使用docker save命令可以将已有镜像保存为tar 文件。
命令形式:docker save –o tar文件名 镜像名
1 | docker save -o itheima_tomcat:1.0.tar |
- 使用docker load命令可以根据tar文件恢复为docker镜像。
命令形式:docker load -i tar文件名
1 | 加载恢复镜像 |
注意:新的镜像制作后,原本容器中挂载的目录将失效, 索引一般在恢复镜像创建容器容器的时候需要重新挂载。
5.3 Dockerfile 概念
- Dockerfile 是一个文本文件
- 包含了一条条的指令
- 每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像
- 对于开发人员:可以为开发团队提供一个完全一致的开发环境
- 对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件
构建一个新的镜像开始工作了 - 对于运维人员:在部署时,可以实现应用的无缝移植
Dochub网址:https://hub.docker.com
关键字:
关键字 | 作用 | 备注 |
---|---|---|
FROM | 指定父镜像 | 指定dockerfile基于哪个image构建 |
MAINTAINER | 作者信息 | 用来标明这个dockerfile谁写的 |
LABEL | 标签 | 用来标明dockerfile的标签 可以使用Label代替Maintainer 最终都是在docker image基本信息中可以查看 |
RUN | 执行命令 | 执行一段命令 默认是/bin/sh 格式: RUN command 或者 RUN [“command” , “param1”,”param2”] |
CMD | 容器启动命令 | 提供启动容器时候的默认命令 和ENTRYPOINT配合使用.格式 CMD command param1 param2 或者 CMD [“command” , “param1”,”param2”] |
ENTRYPOINT | 入口 | 一般在制作一些执行就关闭的容器中会使用 |
COPY | 复制文件 | build的时候复制文件到image中 |
ADD | 添加文件 | build的时候添加文件到image中 不仅仅局限于当前build上下文 可以来源于远程服务 |
ENV | 环境变量 | 指定build时候的环境变量 可以在启动的容器的时候 通过-e覆盖 格式ENV name=value |
ARG | 构建参数 | 构建参数 只在构建的时候使用的参数 如果有ENV 那么ENV的相同名字的值始终覆盖arg的参数 |
VOLUME | 定义外部可以挂载的数据卷 | 指定build的image那些目录可以启动的时候挂载到文件系统中 启动容器的时候使用 -v 绑定 格式 VOLUME [“目录”] |
EXPOSE | 暴露端口 | 定义容器运行的时候监听的端口 启动容器的使用-p来绑定暴露端口 格式: EXPOSE 8080 或者 EXPOSE 8080/udp |
WORKDIR | 工作目录 | 指定容器内部的工作目录 如果没有创建则自动创建 如果指定/ 使用的是绝对地址 如果不是/开头那么是在上一条workdir的路径的相对路径 |
USER | 指定执行用户 | 指定build或者启动的时候 用户 在RUN CMD ENTRYPONT执行的时候的用户 |
HEALTHCHECK | 健康检查 | 指定监测当前容器的健康监测的命令 基本上没用 因为很多时候 应用本身有健康监测机制 |
ONBUILD | 触发器 | 当存在ONBUILD关键字的镜像作为基础镜像的时候 当执行FROM完成之后 会执行 ONBUILD的命令 但是不影响当前镜像 用处也不怎么大 |
STOPSIGNAL | 发送信号量到宿主机 | 该STOPSIGNAL指令设置将发送到容器的系统调用信号以退出。 |
SHELL | 指定执行脚本的shell | 指定RUN CMD ENTRYPOINT 执行命令的时候 使用的shell |
5.4 Dockerfile 案例
注意 : 使用Dockerfile时必须先启动Docker
如遇到报错信息 报错信息如下:
可能遇到报错的两种信息:
1
error checking context: 'file ('/proc/2806/fd/3') not found or excluded by .dockerignore'.
解决办法: 在运行dockerfile的目录下 新创个文件为
.dockerignore
文件的内容为*
```json
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?1
2
3
4
5
解决办法: 说明Docker 没有运行
```shell
systemctl start docker
需求1:
自定义centos7镜像。要求:
- 默认登录路径为 /usr
- 可以使用vim
实现步骤:
① 定义父镜像:FROM centos:7
② 定义作者信息:MAINTAINER itheima itheima@itcast.cn
③ 执行安装vim命令: RUN yum install -y vim
④ 定义默认的工作目录:WORKDIR /usr
⑤ 定义容器启动执行的命令:CMD /bin/bash
⑥ 通过dockerfile构建镜像:docker bulid –f dockerfile文件路径 –t 镜像名称:版本
Dockerfile文件:
文件编写完成执行命令构建:
1 | docker build -f ./centos_dockerfile -t itheima_centos:1 . |
需求2:
定义dockerfile,发布springboot项目
实现步骤
① 定义父镜像:FROM java:8
② 定义作者信息:MAINTAINER itheima itheima@itcast.cn
③ 将jar包添加到容器: ADD springboot.jar app.jar
④ 定义容器启动执行的命令:CMD java –jar app.jar
⑤ 通过dockerfile构建镜像:docker bulid –f dockerfile文件路径 –t 镜像名称:版本
文件编写完成执行命令构建:
1 | docker build -f ./springboot_dockerfile -t app . |
6. 服务编排
参考 3 . Docker-Compose
6.1 服务编排概念
微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,维护的工作量会很大。
- 要从Dockerfile build image 或者去dockerhub拉取image
- 要创建多个container
- 要管理这些container(启动停止删除)
- 服务编排: 按照一定的业务规则批量管理容器
6.2 Docker Compose 概述
6.2.1 Docker Compose
Docker Compose是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建 ,启动和停止。使用步骤:
利用 Dockerfile 定义运行环境镜像
使用 docker-compose.yml 定义组成应用的各服务
运行 docker-compose up 启动应用
6.2.2 Docker Compose 安装使用
7. Docker 私有仓库
Docker官方的Docker hub(https://hub.docker.com)是一个用于管理公共镜像的仓库,我们可以从上面拉取镜像 到本地,也可以把我们自己的镜像推送上去。但是,有时候我们的服务器无法访问互联网,或者你不希望将自己的镜 像放到公网当中,那么我们就需要搭建自己的私有仓库来存储和管理自己的镜像。
搭建参考《docker 私有仓库.md》
8. Docker相关概念
docker容器虚拟化 与 传统虚拟机比较:
dubbo和rockeMQ有什么区别,分不清楚
准备用现成的
知道做了什么,命令记不住, -e之类的缩写记不住意思.独立完成困难
2 . Docker私有仓库
一、私有仓库搭建
1 | 1、拉取私有仓库镜像 |
二、将镜像上传至私有仓库
1 | 1、标记镜像为私有仓库的镜像 |
三、 从私有仓库拉取镜像
1 | 拉取镜像 |
3 . Docker-compose
一、安装Docker Compose
1 | Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我 们以编译好的二进制包方式安装在Linux系统中。 |
二、卸载Docker Compose
1 | 二进制包方式安装的,删除二进制文件即可 |
三、 使用docker compose编排nginx+springboot项目
- 创建docker-compose目录
1 | mkdir ~/docker-compose |
- 编写 docker-compose.yml 文件
1 | version: '3' |
- 创建./nginx/conf.d目录
1 | mkdir -p ./nginx/conf.d |
- 在./nginx/conf.d目录下 编写itheima.conf文件
1 | server { |
- 在~/docker-compose 目录下 使用docker-compose 启动容器
1 | docker-compose up |
- 测试访问
1 | http://192.168.149.135/hello |
4 . Dockerfile
Dockerfile
关键字 | 作用 | 备注 |
---|---|---|
FROM | 指定父镜像 | 指定dockerfile基于那个image构建 |
MAINTAINER | 作者信息 | 用来标明这个dockerfile谁写的 |
LABEL | 标签 | 用来标明dockerfile的标签 可以使用Label代替Maintainer 最终都是在docker image基本信息中可以查看 |
RUN | 执行命令 | 执行一段命令 默认是/bin/sh 格式: RUN command 或者 RUN [“command” , “param1”,”param2”] |
CMD | 容器启动命令 | 提供启动容器时候的默认命令 和ENTRYPOINT配合使用.格式 CMD command param1 param2 或者 CMD [“command” , “param1”,”param2”] |
ENTRYPOINT | 入口 | 一般在制作一些执行就关闭的容器中会使用 |
COPY | 复制文件 | build的时候复制文件到image中 |
ADD | 添加文件 | build的时候添加文件到image中 不仅仅局限于当前build上下文 可以来源于远程服务 |
ENV | 环境变量 | 指定build时候的环境变量 可以在启动的容器的时候 通过-e覆盖 格式ENV name=value |
ARG | 构建参数 | 构建参数 只在构建的时候使用的参数 如果有ENV 那么ENV的相同名字的值始终覆盖arg的参数 |
VOLUME | 定义外部可以挂载的数据卷 | 指定build的image那些目录可以启动的时候挂载到文件系统中 启动容器的时候使用 -v 绑定 格式 VOLUME [“目录”] |
EXPOSE | 暴露端口 | 定义容器运行的时候监听的端口 启动容器的使用-p来绑定暴露端口 格式: EXPOSE 8080 或者 EXPOSE 8080/udp |
WORKDIR | 工作目录 | 指定容器内部的工作目录 如果没有创建则自动创建 如果指定/ 使用的是绝对地址 如果不是/开头那么是在上一条workdir的路径的相对路径 |
USER | 指定执行用户 | 指定build或者启动的时候 用户 在RUN CMD ENTRYPONT执行的时候的用户 |
HEALTHCHECK | 健康检查 | 指定监测当前容器的健康监测的命令 基本上没用 因为很多时候 应用本身有健康监测机制 |
ONBUILD | 触发器 | 当存在ONBUILD关键字的镜像作为基础镜像的时候 当执行FROM完成之后 会执行 ONBUILD的命令 但是不影响当前镜像 用处也不怎么大 |
STOPSIGNAL | 发送信号量到宿主机 | 该STOPSIGNAL指令设置将发送到容器的系统调用信号以退出。 |
SHELL | 指定执行脚本的shell | 指定RUN CMD ENTRYPOINT 执行命令的时候 使用的shell |
5 . Docker应用部署
Docker 应用部署
一、部署MySQL
- 搜索mysql镜像
1 | docker search mysql |
- 拉取mysql镜像
1 | docker pull mysql:5.6 |
- 创建容器,设置端口映射、目录映射
1 | 在/root目录下创建mysql目录用于存储mysql数据信息 |
1 | docker run -id \ |
- 参数说明:
- -p 3307:3306:将容器的 3306 端口映射到宿主机的 3307 端口。
- -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录
- -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录
- -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录
- -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
- 进入容器,操作mysql
1 | docker exec –it c_mysql /bin/bash |
- 使用外部机器连接容器中的mysql
二、部署Tomcat
- 搜索tomcat镜像
1 | docker search tomcat |
- 拉取tomcat镜像
1 | docker pull tomcat |
- 创建容器,设置端口映射、目录映射
1 | 在/root目录下创建tomcat目录用于存储tomcat数据信息 |
1 | docker run -id --name=c_tomcat \ |
参数说明:
-p 8080:8080:将容器的8080端口映射到主机的8080端口
-v $PWD:/usr/local/tomcat/webapps:将主机中当前目录挂载到容器的webapps
1 | cd ~/tomcat #切换到数据卷[宿主机映射的文件路径] |
- 使用外部机器访问tomcat
三、部署Nginx
- 搜索nginx镜像
1 | docker search nginx |
- 拉取nginx镜像
1 | docker pull nginx |
- 创建容器,设置端口映射、目录映射
1 | 在/root目录下创建nginx目录用于存储nginx数据信息 |
1 | user nginx; |
1 | docker run -id --name=c_nginx \ |
- 参数说明:
- -p 80:80:将容器的 80端口映射到宿主机的 80 端口。
- -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机当前目录下的 /conf/nginx.conf 挂载到容器的 :/etc/nginx/nginx.conf。配置目录
- -v $PWD/logs:/var/log/nginx:将主机当前目录下的 logs 目录挂载到容器的/var/log/nginx。日志目录
- 使用外部机器访问nginx
5.如需要反向代理到tomcat 需要在创建的配置文件 nginx.conf 中 增加以下字段
1 | server { |
四、部署Redis
- 搜索redis镜像
1 | docker search redis |
- 拉取redis镜像
1 | docker pull redis:5.0 |
- 创建容器,设置端口映射
1 | docker run -id --name=c_redis -p 6379:6379 redis:5.0 |
- 使用外部机器连接redis
1 | ./redis-cli.exe -h 192.168.149.135 -p 6379 |
五、部署rabbitMq
目录
问题描述:在rabbitmq的web客户端发现界面会弹出如下提示框Stats in management UI are disabled on this node
(3)修改配置文件- management_agent.disable_metrics_collector.conf
1.下载Rabbitmq的镜像
拉取最新的rabbitmq的镜像
docker pull rabbitmq
拉取指定版本的rabbitmq镜像
docker pull rabbitmq:版本号
2.创建并运行rabbitmq容器
docker run -d -p 15673:15672 -p 5674:5672 \
--restart=always \
-e RABBITMQ_DEFAULT_VHOST=my_vhost \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin123456 \
--hostname myRabbit \
--name rabbitmq-new\
rabbitmq:latest
注意:在映射的端口号的时候不要映射 5671端口,端口5671是 RabbitMQ 的默认AMQP over TLS/SSL端口。AMQP(Advanced Message Queuing Protocol)是一种消息传递协议,用于在应用程序之间进行可靠的消息传递。
参数说明:
- -d:表示在后台运行容器;
- -p:将主机的端口 15673(Web访问端口号)对应当前rabbitmq容器中的 15672 端口,将主机的5674(应用访问端口)端口映射到rabbitmq中的5672端口;
- –restart=alawys:设置开机自启动
- -e:指定环境变量:
- RABBITMQ_DEFAULT_VHOST:默认虚拟机名;
- RABBITMQ_DEFAULT_USER:默认的用户名;
- RABBITMQ_DEFAULT_PASS:默认的用户密码;
- –hostname:指定主机名(RabbitMQ 的一个重要注意事项是它根据所谓的 节点名称 存储数据,默认为主机名);
- –name rabbitmq-new:设置容器名称;
查看启动情况
3.启动web客户端
方法一:进入容器开启
#进入rabbitmq容器
docker exec -it 容器名/容器id /bin/bash
#开启web客户端
rabbitmq-plugins enable rabbitmq_management
方法二:不进入容器开启
docker exec -it 容器名/容器id rabbitmq-plugins enable rabbitmq_management
4.访问rabbitmq的微博客户端
在浏览器上输入 ip+端口 访问rabbitmq的web客户端
输入上面在初始化Rabbitmq容器时我们自己指定了默认账号和密码:admin/admin123456,如果没有指定的话那么rabbitmq的默认账号密码是:guest/guest
登录成功如下图所示:
如果提示网页无法访问的话,可检查服务器的防火墙是否开启了这个端口。
#查看防火墙规则中打开的端口列表
firewall-cmd --list-ports
#添加端口
firewall-cmd --zone=public --add-port=15673/tcp --permanent
#重新加载,使配置生效
firewall-cmd --reload
--zone=public
指定了要添加规则的区域(这里是公共区域)--add-port=15673/tcp
指定了要添加的端口及其协议(这里是 TCP 协议的 15673 端口)--permanent
则表示将规则永久保存,使其在系统重启后仍然有效。
5.遇到的问题
问题描述:在rabbitmq的web客户端发现界面会弹出如下提示框Stats in management UI are disabled on this node
解决方法
(1)进入到启动的rabbitmq的容器中
docker exec -it 容器名称/容器id /bin/bash
(2)切换到rabbitmq的配置文件目录
cd /etc/rabbitmq/conf.d/
(3)修改配置文件- management_agent.disable_metrics_collector.conf
echo management_agent.disable_metrics_collector = false > management_agent.disable_metrics_collector.conf
(4)查看配置文件-cat
(5)退出容器
exit
(6)重启容器
docker restart 容器名称/容器id
再次进入rabbitmq的web客户端页面,点击各个页面就不会出现那个提示,并且出现了统计图表以及可以添加一下展示的信息字段。
参考:
Docker | 安装RabbitMQ详细教程,以及安装遇到的问题:Stats in management UI are disabled on this node-CSDN博客
【Docker】之安装 RabbitMQ_docker 安装rabbitmq-CSDN博客
6 . 安装Docker
1 | 1、yum 包更新到最新 |