文档章节

如何构建Memcached Docker容器

dockerer
 dockerer
发布于 2015/12/02 14:46
字数 1299
阅读 3560
收藏 97
点赞 4
评论 2

 如何把Memcached运行到docker容器中?

Docker

Docker为容器(应用程序)提供运行环境。使用Docker镜像创建容器,既可以通过人工执行命令,也可以通过cSphere平台可视化操作。

 Memcached简介

Memcached是一个分布式,开源的数据存储引擎。它被设计用来在RAM(替换了低速的传统硬盘)中存储特定种类的数据,供应用程序进行快速检索。减少了处理申请所花费的时间,通过减少查询的次数来抵消沉重缓慢的数据集或者API,比如传统的数据库(MySQL等)。

通过引进一个灵巧的,精心设计并经过最优化的缓存机制,它变得可以处理更大的请求量,执行更多的程序。这是Memcached最重要的应用实例,因为它也是这样缓存其他应用或内容的。

可以深度依赖,并被用在网站或者其他应用的生产中,Memcached已经成为一个即时提升性能的工具,而不必使用更好的硬件条件(比如更多的服务器或者服务资源)。

Memcached的工作方式是将关键词和他们对应的值(最大能达到1MB)保存在一个关联矩阵中(比如哈希表),延展和分布在大量的虚拟服务器中。

开始创建Memcached镜像

基于我们之前学习的Docker系列文章里面的知识,我们直接深入到创建Dockerfile来实现自动构建安装Mamcached功能的镜像(将可以用来运行沙盒化的Memcached实例)。

快速回顾:什么是Dockerfile?
Dockerfile是包含可执行的声明的命令的脚本,将以给定的顺序执行,来让Docker自动的创建一个新的Docker镜像。这给部署工作带来了极大的帮助。

这些文件(Dockerfile)使用FROM命令,总是以对基础镜像的描述开头。从那开始,构建进程开始运行,向主机提交(保存镜像的状态)的每一步的操作形成了最终的镜像。

用法:

 # Build an image using the Dockerfile at current location
 # Tag the final image with [name] (e.g. *nginx*)
 # Example: sudo docker build -t [name] .
 sudo docker build -t memcached_img .

创建Memcached镜像的Dockerfile

通过熟悉文本编辑器,创建一个新的Dockerfile:

首先让我们定义一下Dockerfile的目标,并声明需要使用的基础镜像。

 ############################################################
 # Dockerfile to run Memcached Containers
 # Based on Ubuntu Image
 ############################################################

 # Set the base image to use to Ubuntu
 FROM ubuntu

 # Set the file maintainer (your name - the file's author)
 MAINTAINER cSphere

然后我们就可以开始安装Memcached

 
 # Install Memcached
 RUN apt-get install -y memcached

设置默认对外开放的容器端口:

 # Port to expose (default: 11211)
 EXPOSE 11211

设置默认的执行命令和入口(例如Memcached进程):

 # Set the user to run Memcached daemon
 USER daemon
 
 # Set the entrypoint to memcached binary
 ENTRYPOINT memcached

 # Default Memcached run command arguments
 CMD ["-u", "root", "-m", "128"]

### 最终的Dockfile

 ############################################################
 # Dockerfile to run Memcached Containers
 # Based on Ubuntu Image
 ############################################################
 
 # Set the base image to use to Ubuntu
 FROM ubuntu
 
 # Set the file maintainer (your name - the file's author)
 MAINTAINER Maintaner Name
 
 # Install Memcached
 RUN apt-get install -y memcached
 
 # Port to expose (default: 11211)
 EXPOSE 11211
 
 # Set the user to run Memcached daemon
 USER daemon
 
 # Set the entrypoint to memcached binary
 ENTRYPOINT memcached

    # Default Memcached run command arguments
 CMD ["-m", "128"]

    Dockerfile准备完毕!

创建Memcached容器

构建memcached镜像:“csphere-memcached”

 sudo docker build -t  csphere-memcached.

**Note**:不要遗漏了最后的“ .” ,Docker需要它来找到Dockerfile。

启动memcached容器

使用下面的命令来创建一个新容器,可以根据你的需求修改这个例子。

 # sudo docker run -name csphere-memcached -d -p 45001:11211 csphere-memcached

“csphere-memcached”容器,已启动,可使用45001端口连接使用。

限制Memcached容器的内存

如果想要限制一个Docker容器进程可以使用的内存量,只要设置`-m [memory amount]`并标上限制就ok。

运行一个内存限制为256MB的容器:

   ` # sudo docker run -name csphere-memcached -m 256m -d -p 45001:11211 csphere-memcached`

检查此容器内存限制是否设置成功,执行以下命令:

 `# Example: docker inspect [container ID] | grep Memory
sudo docker inspect csphere-memcached | grep Memory`

测试Memcached容器

我们使用一个简单的Python CLI程序来测试。

确保你的主机拥有为Python/Memcached准备的必要库文件:

   ` sudo apt-get update && sudo apt-get -y upgrade
 sudo apt-get install -y python-pip
 pip install python-memcached`

创建一个简单的Python脚本,名为cache.py

把下面的内容复制粘贴进去:

 ` # Import python-memcache and sys for arguments
 import memcache
 import sys
 
 # Set address to access the Memcached instance
 addr = 'localhost'
 
 # Get number of arguments
 # Expected format: python cache.py [memcached port] [key] [value]
 len_argv = len(sys.argv)
 
 # At least the port number and a key must be supplied
 if len_argv < 3:
     sys.exit("Not enough arguments.")
 
 # Port is supplied and a key is supplied - let's connect!
 port  = sys.argv[1]
 cache = memcache.Client(["{0}:{1}".format(addr, port)])
 
 # Get the key
 key   = str(sys.argv[2])
 
 # If a value is also supplied, set the key-value pair
 if len_argv == 4:

     value = str(sys.argv[3])
     cache.set(key, value)
 
     print "Value for {0} set!".format(key)
 
 # If a value is not supplied, return the value for the key
 else:
 
     value = cache.get(key)
 
     print "Value for {0} is {1}.".format(key, value)`
  

      测试Docker的Memcached实例:
    
   # Example: python cache.py [port] [key] [value]
 python cache.py 45001 my_test_key test_value
 
 # Return: Value for my_test_key set
 
 # See if the key is set:
 python cache.py 45001 my_test_key
 
 # Return: Value for my_test_key is test_value.

docker的更多知识,请观看免费培训视频(http://csphere.cn/training)。

 

 

© 著作权归作者所有

共有 人打赏支持
dockerer

dockerer

粉丝 82
博文 35
码字总数 62430
作品 0
海淀
项目经理
加载中

评论(2)

paul2011
paul2011

引用来自“冰的斌”的评论

“它被设计用来在RAM(替换了低速的传统硬盘)”RAM还用注释?注释就注释了,还这么不专业
考虑广大人民群众,由浅入深的学习曲线比较友好
游而不击
游而不击
“它被设计用来在RAM(替换了低速的传统硬盘)”RAM还用注释?注释就注释了,还这么不专业
Docker学习笔记一 简介

写在前面 工作原因需要接触很火的Docker,所以开始这个系列的笔记。初步制定的学习教材是《第一本Docker书》,辅以一些网上材料,所以笔记先以此书为主要内容。 1.0 容器的简介 容器与管理程...

一万
2016/07/07
47
0
docker link使用示例

创建dockerfile,本文将dockerfile命名为Dockerfile_memcached(文件名可随意定义): # Memcached VERSION 2.2 FROM ubuntu:12.04 MAINTAINER Marker.King majk@vip.qq.com make sure the p......

马金凯
2014/02/17
0
1
Docker file的详解

-----------------------------------------------------------Dockerfile------------------------------------------------------ Dockerfile是一个镜像的表示,可以通过Dockerfile来描述构......

wbf961127
2017/11/14
0
0
Docker简单介绍

Docker简单介绍 Docker是一个能够把开发的应用程序非常方便地部署到容器的开源引擎。由Docker公司团队编写,基于Apache 2.0开源授权协议发行。Docker的主要目的例如以下: 提供一个简单的,轻...

技术mix呢
2017/10/18
0
0
Dockerfile的理解

Dockerfile文件详解 Docker镜像的制作有docker commit 和Dockerfile,官方推荐使用Dockerfile来制作 通过一个实例来看下docker镜像的制作过程: 1、创建一个Dockerfile的文件 2、在文件中写入...

kesungang
2017/05/10
0
0
docker-reviewboard(让reviewboard安装、迁移更简单)

ReviewBoard是个开源的、可扩展的、友好的基于Web的代码评审工具,是用Python框架Django开发的。 还记得之前安装ReviewBoard时折腾了好久 ReviewBoard官方文档很完善,官网上有详细的安装指南...

donhui
2015/06/30
0
0
使用 Dockerfile 构建镜像

Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令。Docker程序将这些Dockerfile指令翻译真正的Linux命令。Dockerfile有自己书写格式...

周新宇1991
2016/11/23
0
0
docker 构建magent的memcached 集群

基于swarm 构建magent的memcached 集群: Magent 是一款开源的 Memcached 代理服务器软件,使用它可以搭建高可用性的集群应用的 Memcached 服务 ,备份 Memcached 数据,尽管 Memcached 服务...

Wilson9527
01/02
0
0
Docker 之Dockerfile 快速学习(二)

Dockerfile文件的说明: 格式: INSTRUCTION arguments 虽然指令忽略大小写,但建议用大写 # 是注释 MAINTAINER命令: MAINTAINER命令用来指定维护者的姓名和联系方式 FROM命令: FROM <imag...

ZhouLS
2014/07/18
0
0
CentOS 64(位)docker安装与启动

一、docker简介 Docker 提供了一个可以运行你的应用程序的封套(envelope),或者说容器,是轻量级的“容器引擎+映像仓库”,在LXC(linux轻量级容器)的基础上构建,可以运行任何应用程序。 ...

xiaoshushu1991
2017/03/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Win10专业版安装GIT后使用Git Bash闪退解决办法

百度后把过程和最终解决办法记录下来: 百度首先出来的解决办法如下: 来自:https://segmentfault.com/q/1010000012722511?sort=created 重启电脑 重新安装 安装到C盘 尝试网上的教程 \Git...

特拉仔
3分钟前
0
0
设计模式

1.装饰器模式 概念 允许向一个现有的对象添加新的功能,同时又不改变其结构。装饰者可以在所委托被装饰者的行为之前或之后加上自己的行为,以达到特定的目的。 实现 增加一个修饰类包裹原来的...

EasyProgramming
17分钟前
1
0
用python2和opencv进行人脸识别

一、安装cv2 sudo apt-get install python-opencv opencv-data 二、 Haar特征分类器 Haar特征分类器就是一个XML文件,该文件中会描述人体各个部位的Haar特征值。包括人脸、眼睛、嘴唇等等。 ...

wangxuwei
17分钟前
0
0
python模板中循环字典

{% for k,v in user.items %} {{ k}} {{ v}} {% endfor %}

南桥北木
46分钟前
0
0
Java8系列之重新认识HashMap

简介 Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashMap、Hashtable、LinkedHashMap和TreeMap,类继承关系如下图所示: 下面针对各个实现类...

HOT_POT
49分钟前
0
0
获取调用方的className

/** * 获取调用方的class * @return */private static String getInvoke() { StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace(); S......

iborder
今天
0
0
深入了解一下Redis的内存模型!

一前言 Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分。 我们使用Redis时,会接触Redis的5种对象类型(字符...

Java填坑之路
今天
1
0
从实践出发:微服务布道师告诉你Spring Cloud与Spring Boot他如何选择

背景 随着公司业务量的飞速发展,平台面临的挑战已经远远大于业务,需求量不断增加,技术人员数量增加,面临的复杂度也大大增加。在这个背景下,平台的技术架构也完成了从传统的单体应用到微...

老道士
今天
1
0
大数据学习的各个阶段

第一阶段:Linux课程讲解Linux基础操作,讲的是在命令行下进行文件系统的操作,这是Hadoop学习的基础,后面的所有视频都是基于linux操作的。鉴于很多学员没有linux基础,特增加该内容,保证零linux...

董黎明
今天
0
0
CVE-2013-0077 堆溢出分析

找了很久才发现这个环境比较容易搭建分析... 环境: 系统---Win XP SP3 漏洞程序:QQPlayer 3.7.892.400 出错DLL:quartz.dll 6.5.2600.5512 调试工具:x32db+gflag.exe 过程: 首先gflag设置...

Explorer0
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部