docker配置redis集群和scrapyd服务

Redis集群的配置方式我们上一篇已经介绍过了,而且使用Dockerfile配置文件我们也介绍了,不过介绍的并不详细,可能有些人看不明白,这篇我们再介绍一些Docker的一些常用命令。

Redis集群的Docker部署

我们已经有了Docker利器,环境部署自然是要使用了。那么让我们先思考一下,redis集群配置中需要绑定本机IP,而我们拉起容器时IP是随机的,那么我们必须要固定docker容器ID。

固定docker容器IP地址

首先我们要查看一下拉起的容器IP地址

查看docker容器IPdocker inspect 容器ID |grep IPA

要固定IP我们先了解一下Docker的网络模式Docker安装后,默认会创建下面三种网络类型:

bridgehostnone

启动 Docker的时候,用--net参数,可以指定网络类型,如:docker run -itd --name redis-16379 --net bridge --ip 172.18.0.2 -p 16379:6379 scrapy_redis:latest /bin/bash

  • bridge:桥接网络

默认情况下启动的Docker容器,都是使用 bridge,Docker安装时创建的桥接网络,每次Docker容器重启时,会按照顺序获取对应的IP地址,这个就导致重启下,Docker的IP地址就变了

  • none:无指定网络

使用 --network=none ,docker 容器就不会分配局域网的IP

  • host: 主机网络

使用 --network=host,此时,Docker 容器的网络会附属在主机上,两者是互通的,也就是Docker容器中的端口会自动映射到主机。例如,在容器中运行一个Web服务,监听8080端口,则主机的8080端口就会自动映射到容器中。

我们要通过创建自定义网络的方式来设置固定IP

创建自定义网络:(设置固定IP)启动Docker容器的时候,使用默认的网络是不支持指派固定IP的,如下:

  • 步骤1: 创建自定义网络

创建自定义网络,并且指定网段:172.18.0.0/16docker network create --subnet=172.18.0.0/16 mynetwork

  • 步骤2: 创建Docker容器

docker run -itd --name redis-scrapyd-1 --net mynetwork --ip 172.18.0.2 -p 16379:6379 -p 16800:6800 scrapy_redis:latest /bin/bash --net使用我们创建的网络模式,--ip指定容器IP地址,-p指定端口映射

使用GitHub创建docker镜像

docker build命令用来拉取镜像,而且可以指定使用git地址来创建镜像。例如我的Git地址:https://github.com/xingxingzaixian/docker_scrapy_redis_python3.6.git,大家都可以使用一下命令来创建镜像

  1. 创建镜像
docker build -t scrapyd_redis https://github.com
/xingxingzaixian/docker_scrapy_redis_python3.6.git

镜像创建好了,可以创建自定义网络

  1. 创建自定义网络
docker network create --subnet=172.18.0.0/16 mynetwork

使用以下命令拉起容器:

  1. 拉起容器
docker run -itd --name redis-16379 --net mynetwork --ip 172.18.0.2 -p 16379:6379 -p 16800:6800 scrapy_redis:latest /bin/bash

拉起容器后,我们要修改redis启动配置文件的绑定IP

  1. 修改redis启动配置

我在git中上传的redis.conf文件中bind配置为localhost,方便替换

docker exec 容器ID sed -i "s/localhost/172.18.0.3/g" /app/redis.conf

启动容器内scrapyd和redis服务

  1. 启动scrapyd和redis服务
docker exec -d 容器ID redis-server /app/redis.conf
docker exec -d 容器ID scrapyd

六个容器都启动以后,就可以启动Redis集群

  1. 启动Redis集群

随便进入一个容器,执行启动Redis集群命令

/app/redis-stable/src/redis-trib.rb create --replicas 1 
ip1:port1 ip2:port2 ip3:port3 ip4:port4 ip5:port5 ip6:port6 

然后我们就可以在本地通过远程访问云服务器的地址来访问redis集群

注意:

使用git地址创建的镜像中redis的配置文件绑定地址是固定的,如果我们在不同的主机上进行部署,那么容器的固定IP写成一样的还是可以的,但是如果是在同一个机器上就一定要修改容器内的redis.conf的绑定地址。

安装上面的步骤启动的是redis集群服务,如果想使用单独的redis服务,只要把redis.conf文件中集群相关的配置注释即可

# cluster-enabled yes(启动集群模式)
# cluster-config-file nodes-7000.conf(7000和port要对应)
# cluster-node-timeout 15000

原文发布于微信公众号 - python爬虫实战之路(gh_f26a568fdea8)

原文发表时间:2018-06-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏A周立SpringCloud

Docker系列教程17-默认bridge网络中配置DNS

本文依然是一篇翻译,英文原文https://docs.docker.com/engine/userguide/networking/default_networ...

4029
来自专栏纯洁的微笑

Docker(四):Docker 三剑客之 Docker Compose

前两篇文章我们介绍了 Dockerfile 的使用Docker(二):Dockerfile 使用介绍,我们知道使用一个 Dockerfile 模板文件可以定义一...

3963
来自专栏编程

在容器中部署mysql与数据持久化

通过上一节的学习,我们知道了如何部署一个不带数据库的静态nginx页面;但一般的web应用中,还需要部署mysql数据库,本节我们将学习如何使用容器部署mysq...

2779
来自专栏finleyMa

docker学习系列7 容器化Node项目

本节我们自己打包一个docker镜像并发布到官方的镜像仓库中。这样任何人只需执行以下命令: docker run -d -p 3000:3000 finley...

1891
来自专栏Samego开发资源

初识docker compose工具

1693
来自专栏Debian社区

使用apt-mirror搭建debian镜像源

debian官方提供了脚本ftpsync来搭建源镜像,而 apt-mirror 是一个更简单便捷的源镜像搭建工具。

1692
来自专栏古时的风筝

Docker:镜像操作和容器操作

镜像操作 列出镜像: $ sudo docker images REPOSITORY TAG IMAGE ID...

21610
来自专栏运维小白

Docker镜像管理

Docker镜像管理 docker pull centos//可以下载centos镜像,速度很慢 配置docker加速器,参考链接 vi /etc/docker...

3625
来自专栏编程坑太多

『中级篇』构建自己的Docker镜像(16)

PS:为啥推荐用Dockerfile的方式,因为文件可以随便编辑,如果你用容器的话,你发给别人如何发麻烦不?还是单文件方便吧。

2036
来自专栏程序小工

【Docker】更新docker镜像源

使用 docker 拉取 Docker Hub 上镜像时,可能会由于网络限制,导致下载失败。可以将 docker 的镜像源设置为国内的镜像, 目前支持的镜像源...

1.5K2

扫码关注云+社区