资讯专栏INFORMATION COLUMN

使用Docker过程中注意事项

zzbo / 855人阅读

摘要:本文以技术栈为例,列举并解释了一些面向进行应用程序开发和系统搭建中所需要注意的问题和技巧,以及平台在管理和帮助企业应用向转化中的作用。我们总结基于的组件的使用注意事项如下的外部存储挂载被开启无论是还是模式,都会需要在硬盘上进行存储。

本文以技术栈Redis为例,列举并解释了一些面向Docker进行应用程序开发和系统搭建中所需要注意的问题和技巧,以及Caicloud平台在Docker管理和帮助企业应用向Docker转化中的作用。由于应用程序千差万别,应用场景层出不穷,本文仅起到抛砖引玉的作用。

我们总结基于Docker的Redis组件的使用注意事项如下:

Redis的外部存储挂载

Persistence被开启:无论是RDB还是AOF模式,都会需要在硬盘上进行存储。以RDB为例,会自动存在本地硬盘一个叫dump.rdb的文件。如果没有挂载外部存储,这些数据在docker销毁后会消失。

主从设置下Replication对硬盘的需求:在Redis 2.8以前,Master与Slave的同步需要用存储(硬盘)作为中间媒介(自2.8此同步可不经过硬盘,但还属于试验内容)。在Docker环境下需要挂载Volume以保证这个步骤能正常运行。

Redis不能跑在daemonize的模式

Docker的容器需要其中的主进程一直在前端运行,使用daemonize的模式会使得container在运行后立即退出。幸运的是在Redis的配置文件中daemonize模式默认被关闭。如需运行daemon模式,应该在docker层面通过-d命令来进行。

Redis的日志文件目录应置为空

Docker的容器所产生的日志会被系统自动接收和管理;同时Caicloud的集群管理平台更会监测和聚合系统中所有容器的日志。因此在配置文件中将logfile设为空会享受Docker和Caicloud的自动日志收集和管理。

Redis Snapshot的注意事项

在主从结构下Snapshot应开启:如果在Redis的Master节点上配置了Persistenceoff (数据不会自动存储到硬盘上),那么我们同时还应该关掉Master节点的自动重启功能。由于Caicloud的自动修复功能会重启实效的容器(包括RedisMaster),我们应开启Snapshot功能。

对Persistence的需求:Redis会把Snapshot产生的rdb文件写在指定的目录中。默认情况下这个对应在Docker内部的一个目录,会随着Docker的销毁而销毁。如果有Persistence的需求,应该在生成Dockerfile和运行Redis容器时同时挂载外部的存储。

Redis的端口映射

Docker的容器在运行时默认会将容器内的应用端口映射成一个随机的主机端口,但这样会打破一些Redis服务。比如sentinel需要根据默认端口规则 (26379) 来进行自动发现。因此在Docker下运行Redis一定要使用 –p port:port的格式来明确使用默认的Redis端口规则。

Redis主从结构中的Master节点的发现

在主从结构中,从节点(slave)需要在配置文件中使用Master节点的IP,来实现与Master节点的互连。传统架构中这个IP可以预先通过静态绑定。在Caicloud体系中,系统不需要静态绑定具体的IP地址,而是可以通过DNS动态地发现,并通过运行Docker时的CMD命令来使用特定的脚本将Master IP动态添加到配置中。

多个Redis集群共存的情况

Caicloud下不会出现两个Redis Cluster混为一起(https://www.oschina.net/news/67037/container-redis-accident)的情况,因为Caicloud的独特网络特性(扁平化,每个机器有自己的网段)。如例子中提到的两个Redis 集群混在一起需要如下条件:

在某一个物理机上运行来自两个Redis 集群的server 实例(from cluster A and cluster B);

在两个Redis 集群中存在两个server 实例(from cluster A and cluster B)碰巧有同样的IP(在纯Docker环境下有可能,因为每个主机上的Docker会随机分配网段和IP)

在Caicloud环境下,每个Redis server都会被分配一个不同的IP,每两个Redis server 的IP必定不相同(每个机器有自己的网段,所以不同机器上的Docker在给container分配地址的时候不会撞车)。

(如果需要转载,请联系我们哦,尊重知识产权人人有责)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26527.html

相关文章

  • Docker machine安装过程

    摘要:是官方提供的一个工具,在集群环境中它可以帮助我们在远程的机器上安装。安装新版本中和版的已经集成了,系统中需要自己手动安装。这样做是为了让能够免密登陆到其他机器来执行安装命令。而并不是简单的安装使用。 Docker Machine 是 Docker 官方提供的一个工具,在集群环境中它可以帮助我们在远程的机器上安装 Dockerr。我们还可以通过 docker-machine 命令来管理这...

    Zack 评论0 收藏0
  • 30 分钟快速入门 Docker 教程

    摘要:分钟快速入门教程一欢迎来到世界与虚拟化在没有的时代,我们会使用硬件虚拟化虚拟机以提供隔离。仓库分为公开仓库和私有仓库,最大的公开仓库是官方仓库,国内的公开仓库也有很多选择,例如阿里云等。 30 分钟快速入门 Docker 教程 一、欢迎来到 Docker 世界 1. Docker 与虚拟化 在没有 Docker 的时代,我们会使用硬件虚拟化(虚拟机)以提供隔离。这里,虚拟机通过在操作系...

    LucasTwilight 评论0 收藏0
  • 轻松搞定|将PHP和Couchbase应用部署为Docker

    摘要:此时,可以构建映像,并将其部署为容器。从执行以下操作以上命令将使用文件中定义的端口,构建对应镜像和部署成为容器。 showImg(https://segmentfault.com/img/remote/1460000010122752); 数人云之前分享了《如何用Docker实现PHP命令行程序的CI/CD》,详细地介绍了整体过程中的思路以及以及注意事项,今天带来的文章将阐述怎样部署一...

    X1nFLY 评论0 收藏0
  • 30 分钟快速入门 Docker 教程

    摘要:分钟快速入门教程一欢迎来到世界与虚拟化在没有的时代,我们会使用硬件虚拟化虚拟机以提供隔离。仓库分为公开仓库和私有仓库,最大的公开仓库是官方仓库,国内的公开仓库也有很多选择,例如阿里云等。 原文地址:梁桂钊的博客博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」。一群同频者,一起成长,一起精进,打破认知的局限性。 30 分钟快速入门 Docker 教程...

    Binguner 评论0 收藏0
  • 30 分钟快速入门 Docker 教程

    摘要:分钟快速入门教程一欢迎来到世界与虚拟化在没有的时代,我们会使用硬件虚拟化虚拟机以提供隔离。仓库分为公开仓库和私有仓库,最大的公开仓库是官方仓库,国内的公开仓库也有很多选择,例如阿里云等。 原文地址:梁桂钊的博客博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」。一群同频者,一起成长,一起精进,打破认知的局限性。 30 分钟快速入门 Docker 教程...

    yexiaobai 评论0 收藏0

发表评论

0条评论

zzbo

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<