博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker的使用
阅读量:6322 次
发布时间:2019-06-22

本文共 8095 字,大约阅读时间需要 26 分钟。

hot3.png

安装Docker(centos7)

  1. 查看liunx内核版本,命令:uname -r,版本必须高于3.10
  2. 安装一些必要的系统工具(非必需):
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  3. 添加软件源信息:
    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  4. 更新 yum 缓存:
    sudo yum makecache fast
  5. 安装 Docker-ce:
    sudo yum -y install docker-ce
  6. 启动 Docker 后台服务
    sudo systemctl start docker
  7. 测试
    docker run hello-world
  8. 配置阿里镜像地址,在 /etc/docker/daemon.json文件中(没有则新建)中新增如下配置:
    {  "registry-mirrors":["https://kfwkfulq.mirror.aliyuncs.com"]}
  9. 卸载
    yum remove docker-cerm -rf /var/lib/docker

用Docker运行一个redis

  1. 拉取镜像
    docker pull redis:4.0.7    #版本号可以不写,不写默认拉取的是latest,可以去Docker Hub上看有哪些版本
  2. 创建一个redis容器并启动服务
    docker run -d -v /home/docker/redis/redis.conf:/etc/redis/redis.conf -p 6379:6379 --name docker_redis redis:4.0.7  redis-server /etc/redis/redis.conf-d 表示后台运行容器  -v 表示给容器挂载文件  -p 表示宿主机和容器端口映射  --name 表示给容器取个名字  redis:4.0.7  是镜像的名称  redis-server 是启动redis服务的命令
  3. 启动容器中redis客户端来连接redis
    docker exec -it docker_redis redis-cli
  4. 其他常用操作
    docker images -a    #列出本地所有的镜像  	docker rmi redis    #删除本地的reids镜像	docker ps -a        #列出所有容器	docker start docker_redis  #启动docker_redis容器	docker stop docker_redis   #停止docker_redis容器	docker rm docker_redis     #删除docker_redis容器	docker exec -it docker_redis /bin/bash  #打开一个docker_redis容器的终端	docker stop $(docker ps -a -q)   #stop停止所有容器	docker rm $(docker ps -a -q)    #remove删除所有容器	docker cp 容器名:文件路径 宿主机文件路径	#将容器中的文件拷贝出来	docker cp 宿主机文件路径 容器名:文件路径	#将文件拷贝到容器中

本地构建一个redis镜像

  1. 编写Dockerfile文件
    ####################################################	# 使用本地的redis包,基于centos,构建一个redis镜像	####################################################	# 指定基础镜像	FROM centos:latest	# 定义作者	MAINTAINER zyq	# 安装基础工具	RUN yum install -y gcc make	# 安装redis	WORKDIR /home		ADD redis-4.0.1.tar.gz ./  #会自动解压的	WORKDIR ./redis-4.0.1	RUN make PREFIX=/usr/local/bin install #编译安装redis	WORKDIR ../	RUN rm -rf redis-4.0.1	RUN yum remove -y make gcc 	RUN yum clean all	#使用本地redis配置文件	ADD redis.conf /etc/redis/redis.conf  	# 指定与宿主机通信端口	EXPOSE 6379	# 容器启动时启动redis服务	ENTRYPOINT redis-server /etc/redis/redis.conf
    关于dockerfile文件的命令参考:
  2. 构建镜像
    docker build -t zyq/redis:4.0.1 .
  3. 创建容器
    docker run -d -v /home/docker/redis/log:/var/log/redis -v /home/docker/redis/data:/home/redis/data -p 6379:6379 --name redis zyq/redis:4.0.1

用Docker搭建一个redis集群

  1. 创建6个redis配置文件,port依次未 6380 到 6385,然后cluster-enable设置为yes

  2. 用上面的DockerFile文件构建一个redis-cluser镜像,DockerFile文件删除下面内容

    # 删掉这些内容	ADD redis.conf /etc/redis/redis.conf 	EXPOSE 6379		ENTRYPOINT redis-server /etc/redis/redis.conf

    然后build镜像

    docker build -t zyq/redis-cluster:4.0.1 .
  3. 用构建好的redis-cluser镜像创建6个节点容器

    docker run -d -v /home/docker/redis/redis-cluster/redis6380.conf:/etc/redis/redis.conf --net=host --name redis-6380 zyq/redis-cluster:4.0.1 redis-server /etc/redis/redis.conf	docker run -d -v /home/docker/redis/redis-cluster/redis6381.conf:/etc/redis/redis.conf --net=host --name redis-6381 zyq/redis-cluster:4.0.1 redis-server /etc/redis/redis.conf	docker run -d -v /home/docker/redis/redis-cluster/redis6382.conf:/etc/redis/redis.conf --net=host --name redis-6382 zyq/redis-cluster:4.0.1 redis-server /etc/redis/redis.conf	docker run -d -v /home/docker/redis/redis-cluster/redis6383.conf:/etc/redis/redis.conf --net=host --name redis-6383 zyq/redis-cluster:4.0.1 redis-server /etc/redis/redis.conf	docker run -d -v /home/docker/redis/redis-cluster/redis6384.conf:/etc/redis/redis.conf --net=host --name redis-6384 zyq/redis-cluster:4.0.1 redis-server /etc/redis/redis.conf	docker run -d -v /home/docker/redis/redis-cluster/redis6385.conf:/etc/redis/redis.conf --net=host --name redis-6385 zyq/redis-cluster:4.0.1 redis-server /etc/redis/redis.conf
  4. 检查容器创建情况

    # 查看所有容器信息	docker ps -a
  5. 使用redis-trib.rb创建集群

    # ip是使用的宿主机的ip	./redis-trib.rb create --replicas 1 192.168.195.88:6380 192.168.195.88:6381 192.168.195.88:6382 192.168.195.88:6383 192.168.195.88:6384 192.168.195.88:6385

    这里值得注意的时,如果docker的网络模式不是用的host,则我们只能使用这个方法:。 否则我们在docker宿主机上使用集群是没问题的,但在其他机器上是会出毛病。如下面这种错误

    192.168.195.88:6385> set a 1	(error) MOVED 15495 172.17.0.5:6379

    关于docker的网络模式可参考:

  6. 测试

    C:\Users\zyq>redis-cli -h 192.168.195.88 -p 6385 -c	192.168.195.88:6385> set a 1	-> Redirected to slot [15495] located at 192.168.195.88:6382	OK
下面使用Redis Cluster 4.0 NAT/Docker搭建一下
  1. 修改前面6个redis配置的文件,如下:
    cluster-announce-ip 192.168.195.88  #宣布的ip,这里用宿主机的IP地址	cluster-announce-port 6380  #宣布的数据端口,对应当前配置文件的端口,不要每个文件都设置的一样	cluster-announce-bus-port 16380	  #宣布的集群总线端口,不要每个文件都设置的一样,这里用数据端口+10000
    其余5个配置文件做根据各自端口做相应修改,然后开始build
    docker build -t zyq/redis-cluster:4.0.1 .
  2. 用构建好的redis-cluser镜像创建6个节点容器
    docker run -d -p 6380:6380 -p 16380:16380 -v /home/docker/redis/redis-cluster/redis6380.conf:/etc/redis/redis.conf --name redis-6380 zyq/redis-cluster:4.0.1 redis-server /etc/redis/redis.conf	docker run -d -p 6381:6381 -p 16381:16381 -v /home/docker/redis/redis-cluster/redis6381.conf:/etc/redis/redis.conf --name redis-6381 zyq/redis-cluster:4.0.1 redis-server /etc/redis/redis.conf	docker run -d -p 6382:6382 -p 16382:16382 -v /home/docker/redis/redis-cluster/redis6382.conf:/etc/redis/redis.conf --name redis-6382 zyq/redis-cluster:4.0.1 redis-server /etc/redis/redis.conf	docker run -d -p 6383:6383 -p 16383:16383 -v /home/docker/redis/redis-cluster/redis6383.conf:/etc/redis/redis.conf --name redis-6383 zyq/redis-cluster:4.0.1 redis-server /etc/redis/redis.conf	docker run -d -p 6384:6384 -p 16384:16384 -v /home/docker/redis/redis-cluster/redis6384.conf:/etc/redis/redis.conf --name redis-6384 zyq/redis-cluster:4.0.1 redis-server /etc/redis/redis.conf	docker run -d -p 6385:6385 -p 16385:16385 -v /home/docker/redis/redis-cluster/redis6385.conf:/etc/redis/redis.conf --name redis-6385 zyq/redis-cluster:4.0.1 redis-server /etc/redis/redis.conf
  3. 创建集群
    # 查看各个节点容器的ip	docker inspect redis-6385 redis-6384 redis-6383 redis-6382 redis-6381 redis-6380 | grep IPA	# 使用redis-trib.rb创建集群,ip是使用的容器自身的ip,就是上面查出的那个	./redis-trib.rb create --replicas 1 172.17.0.2:6380 172.17.0.3:6381 172.17.0.4:6382 172.17.0.5:6383 172.17.0.6:6384 172.17.0.7:6385
    如果创建集群的时候卡住,可以看一下防火墙是否添加了 6380-6385 和 16380-16385这几个端口
  4. 测试
    C:\Users\zyq>redis-cli -h 192.168.195.88 -p 6380 -c	192.168.195.88:6380> set a 1	-> Redirected to slot [15495] located at 192.168.195.88:6382	OK

使用docker-compose

Compose是一个用于定义和运行多容器Docker应用程序的工具。有关Compose的详细内容,请参阅github上的。

  1. 安装docker-compose
    # 下载安装文件	curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose	# 添加执行权限:	chmod +x /usr/local/bin/docker-compose	# 测试是否安装成功:	docker-compose --version
  2. 编写docker-compose.yml文件:q
    version: '3'	services: 		redis0: 			container_name: redis-6380			image: zyq/redis-cluster:4.0.1			ports: 			- 6380:6380			- 16380:16380			volumes: 			- /home/docker/redis/redis-cluster/redis6380.conf:/etc/redis/redis.conf			command: redis-server /etc/redis/redis.conf		redis1: 			container_name: redis-6381			image: zyq/redis-cluster:4.0.1			ports: 			- 6381:6381			- 16381:16381			volumes: 			- /home/docker/redis/redis-cluster/redis6381.conf:/etc/redis/redis.conf			command: redis-server /etc/redis/redis.conf		redis2: 			container_name: redis-6382			image: zyq/redis-cluster:4.0.1			ports: 			- 6382:6382			- 16382:16382			volumes: 			- /home/docker/redis/redis-cluster/redis6382.conf:/etc/redis/redis.conf			command: redis-server /etc/redis/redis.conf		redis3: 			container_name: redis-6383			image: zyq/redis-cluster:4.0.1			ports: 			- 6383:6383			- 16383:16383			volumes: 			- /home/docker/redis/redis-cluster/redis6383.conf:/etc/redis/redis.conf			command: redis-server /etc/redis/redis.conf		redis4: 			container_name: redis-6384			image: zyq/redis-cluster:4.0.1			ports: 			- 6384:6384			- 16384:16384			volumes: 			- /home/docker/redis/redis-cluster/redis6384.conf:/etc/redis/redis.conf			command: redis-server /etc/redis/redis.conf		redis5: 			container_name: redis-6385			image: zyq/redis-cluster:4.0.1			ports: 			- 6385:6385			- 16385:16385			volumes: 			- /home/docker/redis/redis-cluster/redis6385.conf:/etc/redis/redis.conf			command: redis-server /etc/redis/redis.conf
  3. 启动
    docker-compose up -d

转载于:https://my.oschina.net/u/2424727/blog/2963205

你可能感兴趣的文章
如何退出minicom【学习笔记】
查看>>
Sqlserver 数据库基本查询
查看>>
图书馆维护系统总结
查看>>
[hadoop源码阅读][5]-counter的使用和默认counter的含义
查看>>
SAP HUM 如何对一个HU做上架?
查看>>
LINUX系统中动态链接库的创建与使用{补充}
查看>>
三维视觉国际会议首度在中国举办
查看>>
达索系统入手XFlow开发商 强化3DEXPERIENCE平台的仿真能力
查看>>
Loadrunner 性能测试服务器监控指标
查看>>
自动化运维工具之ansible
查看>>
memcached的安装
查看>>
freebsd系统安装
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
Linux LTP 测试框架
查看>>
log4j 每次运行生成文件
查看>>
“经常加班”有误区
查看>>
jquery各种事件触发实例
查看>>
我的友情链接
查看>>
MY TroubleShooting
查看>>