本篇內(nèi)容主要講解“怎么構(gòu)建Memcached Docker容器”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“怎么構(gòu)建Memcached Docker容器”吧!
從策劃到設(shè)計(jì)制作,每一步都追求做到細(xì)膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶提供成都做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)站策劃、網(wǎng)頁設(shè)計(jì)、域名申請(qǐng)、虛擬主機(jī)、網(wǎng)絡(luò)營(yíng)銷、VI設(shè)計(jì)、 網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶的口碑塑造優(yōu)易品牌,攜手廣大客戶,共同發(fā)展進(jìn)步。
如何把Memcached運(yùn)行到docker容器中?
Docker
Docker為容器(應(yīng)用程序)提供運(yùn)行環(huán)境。使用Docker鏡像創(chuàng)建容器,既可以通過人工執(zhí)行命令,也可以通過cSphere平臺(tái)可視化操作。
Memcached簡(jiǎn)介
Memcached是一個(gè)分布式,開源的數(shù)據(jù)存儲(chǔ)引擎。它被設(shè)計(jì)用來在RAM(替換了低速的傳統(tǒng)硬盤)中存儲(chǔ)特定種類的數(shù)據(jù),供應(yīng)用程序進(jìn)行快速檢索。減少了處理申請(qǐng)所花費(fèi)的時(shí)間,通過減少查詢的次數(shù)來抵消沉重緩慢的數(shù)據(jù)集或者API,比如傳統(tǒng)的數(shù)據(jù)庫(MySQL等)。
通過引進(jìn)一個(gè)靈巧的,精心設(shè)計(jì)并經(jīng)過最優(yōu)化的緩存機(jī)制,它變得可以處理更大的請(qǐng)求量,執(zhí)行更多的程序。這是Memcached最重要的應(yīng)用實(shí)例,因?yàn)樗彩沁@樣緩存其他應(yīng)用或內(nèi)容的。
可以深度依賴,并被用在網(wǎng)站或者其他應(yīng)用的生產(chǎn)中,Memcached已經(jīng)成為一個(gè)即時(shí)提升性能的工具,而不必使用更好的硬件條件(比如更多的服務(wù)器或者服務(wù)資源)。
Memcached的工作方式是將關(guān)鍵詞和他們對(duì)應(yīng)的值(最大能達(dá)到1MB)保存在一個(gè)關(guān)聯(lián)矩陣中(比如哈希表),延展和分布在大量的虛擬服務(wù)器中。
開始創(chuàng)建Memcached鏡像
基于我們之前學(xué)習(xí)的Docker系列文章里面的知識(shí),我們直接深入到創(chuàng)建Dockerfile來實(shí)現(xiàn)自動(dòng)構(gòu)建安裝Mamcached功能的鏡像(將可以用來運(yùn)行沙盒化的Memcached實(shí)例)。
快速回顧:什么是Dockerfile?
Dockerfile是包含可執(zhí)行的聲明的命令的腳本,將以給定的順序執(zhí)行,來讓Docker自動(dòng)的創(chuàng)建一個(gè)新的Docker鏡像。這給部署工作帶來了極大的幫助。
這些文件(Dockerfile)使用FROM命令,總是以對(duì)基礎(chǔ)鏡像的描述開頭。從那開始,構(gòu)建進(jìn)程開始運(yùn)行,向主機(jī)提交(保存鏡像的狀態(tài))的每一步的操作形成了最終的鏡像。
用法:
# 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 .
創(chuàng)建Memcached鏡像的Dockerfile
通過熟悉文本編輯器,創(chuàng)建一個(gè)新的Dockerfile:
首先讓我們定義一下Dockerfile的目標(biāo),并聲明需要使用的基礎(chǔ)鏡像。
############################################################
# 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
設(shè)置默認(rèn)對(duì)外開放的容器端口:
# Port to expose (default: 11211)
EXPOSE 11211
設(shè)置默認(rèn)的執(zhí)行命令和入口(例如Memcached進(jìn)程):
# 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準(zhǔn)備完畢!
創(chuàng)建Memcached容器
構(gòu)建memcached鏡像:“csphere-memcached”
sudo docker build -t csphere-memcached.
**Note**:不要遺漏了最后的“ .” ,Docker需要它來找到Dockerfile。
啟動(dòng)memcached容器
使用下面的命令來創(chuàng)建一個(gè)新容器,可以根據(jù)你的需求修改這個(gè)例子。
# sudo docker run -name csphere-memcached -d -p 45001:11211 csphere-memcached
“csphere-memcached”容器,已啟動(dòng),可使用45001端口連接使用。
限制Memcached容器的內(nèi)存
如果想要限制一個(gè)Docker容器進(jìn)程可以使用的內(nèi)存量,只要設(shè)置`-m [memory amount]`并標(biāo)上限制就ok。
運(yùn)行一個(gè)內(nèi)存限制為256MB的容器:
` # sudo docker run -name csphere-memcached -m 256m -d -p 45001:11211 csphere-memcached`
檢查此容器內(nèi)存限制是否設(shè)置成功,執(zhí)行以下命令:
`# Example: docker inspect [container ID] | grep Memory
sudo docker inspect csphere-memcached | grep Memory`
測(cè)試Memcached容器
我們使用一個(gè)簡(jiǎn)單的Python CLI程序來測(cè)試。
確保你的主機(jī)擁有為Python/Memcached準(zhǔn)備的必要庫文件:
` sudo apt-get update && sudo apt-get -y upgrade
sudo apt-get install -y python-pip
pip install python-memcached`
創(chuàng)建一個(gè)簡(jiǎn)單的Python腳本,名為cache.py
把下面的內(nèi)容復(fù)制粘貼進(jìn)去:
` # 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)`
測(cè)試Docker的Memcached實(shí)例:
# 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.
到此,相信大家對(duì)“怎么構(gòu)建Memcached Docker容器”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!