如何构建Memcached Docker容器

Posted cSphere容器平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何构建Memcached Docker容器相关的知识,希望对你有一定的参考价值。

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

如何构建Memcached Docker容器

Docker

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

Memcached简介

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

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

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

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

开始构建Memcached镜像

基于我们之前学习的Docker系列的视频里面,我们继续编写Dockerfile来实现自动构建Mamcached镜像。

快速回顾:什么是Dockerfile?

Dockerfile是包含可执行的声明的命令的脚本,将以给定的顺序执行,来让Docker自动的创建一个新的Docker镜像。这给部署工作带来了极大的帮助,如果是微小的镜像也给传输带来了极大的便利,希云推出了微镜像服务,下载微镜像请看

Dockerfile的第一条命令FROM,指定基础镜像。基于基础镜像,构建新镜像进程开始运行,向主机提交(commit容器生成镜像)的每一步的操作形成了最终的镜像。

用法:

sudo docker build -t csphere-memcached . 

创建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"]

最终的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

# 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 ["-u", "root", "-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的更多知识,请观看docker培训视频(

感谢您阅读此文,希云将在本周四为大家继续分享docker技术文章,请大家保持关注!

cSphere1.0版本已发布,正式商用!欢迎咨询 400-686-1560

Docker技术如何落地企业带来价值

希云是Docker领域的专家,致力于通过Docker技术提供更好的云计算产品和服务。希云品牌下的产品包括了

  • COS容器操作系统

  • cSphere容器管理平台

  • CDT基于容器的开发测试平台

  • CShow基于容器的项目演示平台

  • CHub企业版Registry

并提供相关的培训和咨询服务

  • 微镜像服务

  • Docker企业培训

  • 应用Docker化咨询

  • 软件SaaS化咨询

  • PaaS化咨询

欢迎企业垂询:

  • 邮箱:contactus@csphere.cn

回复以下数字,获取文章内容

以上是关于如何构建Memcached Docker容器的主要内容,如果未能解决你的问题,请参考以下文章

如何构建Memcached Docker容器

如何减少安装 R 库的 Docker 容器的构建时间?

Service 之间如何通信?- 每天5分钟玩转 Docker 容器技术(101)

容器,云和代码:Yelp如何使用Mesos和Docker构建混合云?

使用阿里云容器服务Jenkins实现持续集成和Docker镜像构建

Docker学习总结(69)—— 不用 Docker 如何构建容器