Docker容器管理
单一容器管理
当我们需要单个zookeeper的时候直接拉取一个镜像就可以
1
docker pull zookeeper
拉取镜像之后需要将容器运行起来
1
2
3
4docker run --name single_zookeeper -d zookeeper:latest
--name的意思是给这次启动的zookeeper起个名字
-d 的意思是在后台运行此时就会在后台运行一个名字为single_zookeeper的容器,默认使用2181端口
我们可以使用下面的命令来查看日志
1
docker logs -f single_zookeeper
容器标识符
每个容器启动都会给容器分配一个CONTAINER_ID,默认是128位的,相当于主键,但是一般16位就可以保证唯一性
有个问题就是CONTAINER_ID虽然能够保证唯一性,但是比较难以记忆,所以就如上面示例一样可以使用 - -name给容器起一个别名
有了容器名字就可以通过名字来查询容器的一些信息,对容器进行一些操作,如下面
1
2
3docker ps -a | grep single_zookeeper //查看容器的运行状态
docker stop single_zookeeper //停止容器
docker start single_zookeeper //启动容器容器内部命令:
容器启动好后还不够,我们有时需要进入容器内部去执行一些命令,docker给我们提供了这样的命令,使用
1
2
3docker exec 容器名 容器内执行的命令
EX:
docker exec single_zookeeper ls如果需要执行多条命令可以加上 - it参数,这样就相当于进入了容器
1
docker exec -it single_zookeeper /bin/bash
这里要注意要带着后面的/bin/bash不然无法进入内部
多容器管理
docker 的理念是“一个容器一个进程”,一个服务如果需要多个容器,可以把多个容器起来后使用 —link选项来建立起来联系,这里我们使用一个比较通用和简单的方式 docker compose来启动一个zookeeper集群
首先我们新建一个文件名叫docker-compose.yml,其中内容为下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31version: '2'
services:
zoo1:
image: zookeeper
restart: always
container_name: zoo1
ports:
- "2181:2181"
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo2:
image: zookeeper
restart: always
container_name: zoo2
ports:
- "2182:2181"
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo3:
image: zookeeper
restart: always
container_name: zoo3
ports:
- "2183:2181"
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888下面我们取其中一个配置来进行分析一下配置文件及其含义:
1
2
3
4
5
6
7
8
9
10
11
12version: '2'
services:
zoo1:
image: zookeeper //指定启动容器的镜像
restart: always //当启动docker的时候,容器跟着一块启动
container_name: zoo1 //容器名字
ports: //暴露端口信息,将本地的2181(前)端口映射到容器的2181(后)端口
- "2181:2181"
environment: //t添加环境变量
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888容器启动及管理
1
2
3
4
5
6COMPOSE_PROJECT_NAME=multi_zookeeper docker-compose up //此时启动的是文件名为docker-compose.yml的配置文件,如果需要制定配置文件可以使用 -f 来制定配置文件
docker-compose ps //查看当前启动的容器
docker rm 容器名 //删除已停止的容器,删除前确保没有重要数据
综上,我们就把简单的容器管理学完了,其中顺带把zookeeper的环境配置给配置了一下,这就是docker的一个很明显的优势,本来我们只有一台机器的情况下是没办法来进行多台机器的模拟的,除非启动几台虚拟机,可是这样的代价比较高,并且虚拟机比较耗内存,而docker就给我们提供了这么简单的方式来构建一个zookeeper集群环境
有什么想法欢迎大家在下面评论,最好带上邮箱,回复评论会有邮件提醒