前言
Docker中拉取ActiveMQ镜像安装运行,以为很简单,其实一堆的坑啊,下面就来一步步填坑吧。
1、使用命令搜索activemq
docker search activemq
2、使用以下命令运行最新的容器:
docker pull rmohr/activemq
3、运行容器
docker run -d --name myactivemq -p 61616:61616 -p 8161:8161 rmohr/activemq:latest
JMX代理侦听端口61616,Web控制台侦听端口8161。
查看正在运行的容器:
可以看到我们的activemq后台服务已经启动了
4、控制台访问
输入地址访问失败:
查看容器运行日志:
docker logs -f 正在运行的容器id/名称
可以发现有如下错误信息:
翻译:存储限制为102400 mb(当前存储使用量为0 mb)、数据目录/opt/activemq/data/kahadb 只有14586 mb的可用空间。
翻译:临时存储限制为51200 mb(当前存储使用量为0 mb)
5、解决方式
需要修改配置文件:
1》第一步:
1、使用docker exec :在运行的容器中执行命令,进入容器:
docker exec -it myactivemq bash
容器的虚拟路径为:/opt/apache-activemq-5.15.6
2、使用docker inspect : 获取容器/镜像的元数据。
docker inspect myactivemq
进入MergeDir目录容器元数据存放目录:cd /var/lib/docker/overlay2/032da98c92a4879ca2eb319be8b12304d51dd0900f242180c5bdcc26380ea5d0/merged
进入到MergeDir目录下查看目录,会发现有一个opt目录,activemq就存放在该目录下
1》第二步:修改配置文件
然后紧接着到它的安装目录下即可修改配置文件
cd apache-activemq-5.15.6
编辑 vim activemq.xml 该文件
vim activemq.xml
修改完成后保存退出,停止activemq服务,重新启动测试。
注:停止一个正在运行的容器
1、docker stop 此方式常常被翻译为优雅的停止容器
docker stop 容器ID或容器名
参数 -t:关闭容器的限时,如果超时未能关闭则用kill强制关闭,默认值10s,这个时间用于容器的自己保存状态
docker stop -t=60 容器ID或容器名
2、docker kill
docker kill 容器ID或容器名 :直接关闭容器
由此可见stop和kill的主要区别:stop给与一定的关闭时间交由容器自己保存状态,kill直接关闭容器
1》第三步:重启运行
首先先删除容器引用
然后再运行容器,防止重命名,产生运行错误
docker run -d --name myactivemq -p 61616:61616 -p 8161:8161 rmohr/activemq:latest
输入地址再访问:可能还是出错,可重新启动虚拟机,再运行,因为我们修改的配置文件可能没有生效
地址:http://192.168.150.131:8161/
默认账号密码都是:admin
登录成功如下: