本次和大家分享的内容是使用docker快速搭建工作中常用的第三方的服务,对于有一些互联网背景的公司来说,以下几个服务都是很需要的:redis,rabbit,elasticsearch;
本篇涉及docker常用几个命令:
docker pull 镜像名:版本:拉去镜像 docker rmi 镜像名或id:删除镜像 docker images:获取本地已有镜像 docker run 镜像名或id:使用默认端口启动镜像 docker run -p port:port1 -d 镜像名或id:指定port端口映射到port1,并后台启动镜像 docker ps:查看正在运行的docker容器 docker ps -a:查看所有执行过run命令的容器服务(包括已经停止的容器) docker stop 容器id:停止某个容器 docker restart 容器id:重启某个容器 docker rm 容器Id:删除某个容器
搭建redis
要通过docker搭建某个服务,首先需要从镜像库拉去对应的镜像,目前国内也有一些好的镜像资源,比如阿里,网易等具体镜像地址网搜吧;
docker pull redis
执行完如上命令后,会得到如下成功拉取的结果:
docker images
命令能够看到已经包含在我们本地镜像里了
然后来启动redis容器,并通过docker ps查看启动
docker run -p 6378:6379 --name redis -d f06a5773f01e
能够看出redis容器已经启动了,访问本机端口6378即可映射到容器的6379,下面通过redismanager客户端连接下redis服务
搭建rabbit
同样的拉去rabbit镜像,一般rabbit需要一个可视化后台,很多镜像里面都已经包含了manager管理后台,我这里的镜像包含
docker pull rabbitmq docker run -p 5672:5672 -p 15672:15672 --name rabbit -d rabbitmq
这里有两个-p分别指定了两个端口的映射,如果有更多端口就依次叠加映射就行,执行成功显示
这个时候可以直接在浏览器浏览(账号和密码按照默认)
http://127.0.0.1:15672
账号:guest
密码:guest
你可以自己写个程序往docker所在的宿主ip的5672端口发送消息,控制台15672能够查看得到
搭建elasticsearch
同样如上执行pull和run命令来运行镜像
docker pull elasticsearch docker run -p 9200:9200 -p 9300:9300 --name es -d elasticsearch
运行成功后,可以直接在浏览器访问http://127.0.0.1:9200/ ,得到如下成功界面
叙述
docker还有很多其他第三方镜像,这里就不再说明了,使用docker常用命令大致如上讲解的;docker在互联网公司很常见,但是一般环境搭建的权限都在运维手上,不过这不妨碍在测试环境自己组建和个人研究;由于它能快速的部署而受到很多人喜爱,现在本人做的程序一般都会去生成一个镜像方便部署,感觉起来很不错,希望大家可以多多交流。
Docker、Zookeeper、Kafka常用参数详解
1、拉取Zookeeper镜像
docker pull wurstmeister/zookeeper
注解:pull,从docker仓库拉取一个镜像。
后面的参数格式:镜像名称:版本。:版本,为可选参数。不写的话,就是拉取默认版本latest。
2、拉取Kafka镜像
docker pull wurstmeister/kafka
查看已下载的镜像
docker images -a
注解:images,镜像列表。
-a 或 –all,为可选参数。显示所有镜像,不加该参数,默认是隐藏过程镜像的。
部署单点Zookeeper和单点Kafka,为后面的集群搭建做基础
1、创建Zookeeper单点容器
注解:run,创建新容器,并为容器配置一些参数。
- -t,在容器内部创建一个tty或者伪终端。
- -i,允许主机终端按照容器内部的标准与其交互。
- -d,后台运行容器并打印容器名称。
- –name,容器名称。
- -p,端口映射,参数格式为:主机物理端口:容器内部端口。
- 最后跟上的就是我们已经下载的镜像。
2、创建Kafka单点容器
注解:
- -e,配置容器环境变量。
- –link,链接到另一个容器,参数格式为:目标容器名称:在本容器内的别名。
这里的环境变量设置,其实就是对即将创建的Kafka配置server.properties文件的初始化。
查看容器
docker ps -a
注解:ps,容器列表。
- -a 或 –all,为可选参数。显示所有容器,不加该参数,默认仅显示运行中的容器。
3、测试
进入Kafka容器
注释:exec,在运行中的容器中,执行命令。
- 跟上容器名称,也就是创建容器时 –name 参数定义的名称。
- 如果没有定义,也可以用ID。
- 再跟上要执行的命令。
消息生产和消息消费测试
部署Zookeeper集群和Kafka集群
注意:这里没有使用 docker-compose,全部是手动搭建的方式。这样可以帮助我们熟悉使用docker,并了解Zookeeper和Kafka集群配置。
我们准备搭建3个Zookeeper节点和3个Kafka节点,集群不再适合使用link的方式进行容器间的通信。我们使用自定义网络,然后把容器加入自定义网络中。
1、创建自定义网络
查看网络
docker network ls
注释:network,管理网络。
- ls,网络列表
创建网络
再次查看网络
2、创建Zookeeper集群
1、创建Zookeeper节点1
注释:
-v,将宿守主机文件挂载到容器内部,参数格式:主机文件或目录:容器内文件或目录。当然了,既然是把主机文件挂载到容器内部,首先要先创建好主机的这些文件或目录,比如最重要的 zoo.cfg 文件,还有myid文件。myid服务器节点编号。
zoo.cfg中的集群核心配置如下:
#server.服务器节点编号=主机名:心跳端口:选举端口)
server.1=zookeeper1:2888:3888
server.2=zookeeper2:2888:3888
server.3=zookeeper3:2888:3888
三个节点上述配置一致。只是myid文件内容记录分别是1,2,3。
2、创建Zookeeper节点2
3、创建Zookeeper节点3
4、分别进入Zookeeper节点,查看zkServer运行状态
领导者已经选举成功,Zookeeper集群完成
3、创建Kafka集群
参数配置的含义,都已经有过解释了,直接看三个节点配置吧
4、测试
这次测试,小编使用宿守主机上的kafka进行测试。链接Kafka容器,用的是主机与容器的端口映射。