Docker容器下部署redis和zookeeper
“有物混成,先天地生,寂兮寥兮,独立而不改,周行而不殆,可以为天地母。
吾不知其名,字之曰道,强为之名曰大。
大曰逝,逝曰远。
远曰反。
故道大,天大,地大,王亦大。
域中有四大,而王居其一焉。
人法地,地法天,天法道,道法自然。”[1]
Docker
Mac下安装Docker很方便,直接下载docker for mac。安装之后在桌面的顶部有docker的菜单:
docker_mac_main.png
安装完之后,打开终端,即可运行各种docker指令。
核心概念
-
Docker Daemon
Docker引擎,就是运行在后台的一个守护进程,在我们启动它之后,我们就可以通过Docker客户端发送相关Docker的命令。 -
Docker Images
Docker镜像,我们通常会发布镜像到Docker Registry -
Docker Containers
Docker容器,在获取到Docker镜像之后,我们可以运行该镜像,此时便会启动一个Docker容器,该容器中运行镜像中的程序。如果把Docker镜像理解为一个类的话,那么Docker容器就是一个实例 -
Docker Client
Docker客户端,我们安装完Docker之后,我们打开终端使用docker 相关命令进行操作,这些命令便是Docker客户端的命令,另外还有一个基于REST API的Docker客户端,REST API一般用于在开发一些基于Docker运维的系统中使用。 -
Docker Registry
Docker镜像注册中心,Docker的官网的注册中心为http://hub.docker.com。我们也可以自己搭建自己的注册中心。
docker下安装redis
查找redis镜像
docker search redis
docker_serach_redis.png
基本上排在第一位的就是官方的镜像。
拉取redis镜像
docker pull redis:latest
其中redis:latest表示我们下载NAME为redis的镜像,latest表示TAG。
在执行完以上命令之后,Docker Client会从Docker镜像注册中心下载Redis的镜像,待下载之后,我们查看本地的镜像。
查看本地镜像
docker images
docker_images.png
其中IMAGE ID表示镜像ID,具有唯一性
创建并启动容器
使用以下命令,使用Reids镜像,创建并启动Redis容器
docker run -p 6379:6379 -v $PWD/data:/data -d redis:latest redis-server --appendonly yes
执行以上命令,我们就使用redis:latest镜像创建并启动了一个Redis容器
-p 6379:6379:将容器的6379端口映射成主机的6379端口
-v $PWD/data:/data :将主机中当前目录下的data挂载到容器的/data
redis-server --appendonly yes : 在容器执行redis-server启动命令,并打开redis持久化配置
查看容器启动情况
docker ps
docker_ps.png
其中Status表示运行状态,Up表示运行中,PORTS表示容器需要对外暴露的端口号
** 连接、查看容器**
我们使用Redis镜像使用redis-cli客户端,连接到redis容器
docker run -it redis:latest redis-cli -h 192.168.1.103
执行以上命令,我们就连接到redis容器,接下来我们就可以使用redis命令进行操作:
docker_dive_redis_cli.png
Docker下安装zookeeper
单节点的安装,跟上述安装redis步骤相同,我们回忆一下:
docker search zookeeper
docker pull zookeeper:latest
docker run -p 2181:2181 -v $PWD/data:/data -d zookeeper:latest
进入容器
docker exec -it 44b43e486817 /bin/bash
这篇博文讲述了 Docker容器进入的4种方式,可以移步去看看。
提交镜像以便重用
我们可以将上述redis、zookeeper镜像保存,这样可以很简单的进行多节点部署成集群的方式。
docker commit :从容器创建一个新的镜像。
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
如将上述的redis提交镜像:
docker commit -a "song" -m "my_redis_base_images" c5355f8853e4 redis:mybase
-
老子《道德经》第二十五章,老子故里,中国鹿邑。 ↩