<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://wiki.linuxsa.org/index.php?action=history&amp;feed=atom&amp;title=Docker_%E5%AE%89%E8%A3%85_Memcached</id>
	<title>Docker 安装 Memcached - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.linuxsa.org/index.php?action=history&amp;feed=atom&amp;title=Docker_%E5%AE%89%E8%A3%85_Memcached"/>
	<link rel="alternate" type="text/html" href="https://wiki.linuxsa.org/index.php?title=Docker_%E5%AE%89%E8%A3%85_Memcached&amp;action=history"/>
	<updated>2026-04-20T11:12:54Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://wiki.linuxsa.org/index.php?title=Docker_%E5%AE%89%E8%A3%85_Memcached&amp;diff=322&amp;oldid=prev</id>
		<title>Evan：​/* docker memcache for wiki  at 201910 */</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxsa.org/index.php?title=Docker_%E5%AE%89%E8%A3%85_Memcached&amp;diff=322&amp;oldid=prev"/>
		<updated>2020-03-02T07:16:31Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;docker memcache for wiki  at 201910&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=docker memcache for wiki  at 201910=&lt;br /&gt;
==install==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
docker run --name memcached -d -p 11211:11211 memcached:1.5-alpine --restart=always &lt;br /&gt;
&lt;br /&gt;
#如果已经启动了则可以使用如下命令：&lt;br /&gt;
$docker update --restart=always &amp;lt;CONTAINER ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
memcached:&amp;lt;version&amp;gt;-alpine dokcer 官方的是没有密码的  安全只能是加防火墙或者下面这个不是官方的 在2020年，我自己打包了 算是安全了&lt;br /&gt;
&lt;br /&gt;
docker run -d --name memcached -p 11211:11211 -e MEMCACHED_USERNAME=memcache -e MEMCACHED_PASSWORD=123456 frodenas/memcached &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==** securyty==&lt;br /&gt;
&lt;br /&gt;
https://github.com/memcached/memcached/wiki/SASLHowto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===iptables===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
用iptables 因为本身安装docker后自带了呢 &lt;br /&gt;
&lt;br /&gt;
由这个得知 &lt;br /&gt;
&lt;br /&gt;
iptables -L  --line-numbers&lt;br /&gt;
Chain DOCKER (2 references)&lt;br /&gt;
num  target     prot opt source               destination         &lt;br /&gt;
1    ACCEPT     tcp  --  anywhere             172.17.0.3           tcp dpt:http&lt;br /&gt;
2    ACCEPT     tcp  --  anywhere             172.17.0.2           tcp dpt:11211&lt;br /&gt;
3    ACCEPT     tcp  --  anywhere             172.18.0.3           tcp dpt:http&lt;br /&gt;
4    ACCEPT     tcp  --  anywhere             172.18.0.2           tcp dpt:mysql&lt;br /&gt;
&lt;br /&gt;
所有的iptable 应该 是 所有有http的去visa memcached memcached 不然会 登录有问题呢 在容器内部11211不通端口时 发现原因的&lt;br /&gt;
&lt;br /&gt;
iptables  -I INPUT -p tcp -s  172.17.0.3    --dport 11211 -j ACCEPT&lt;br /&gt;
iptables  -I INPUT -p tcp -s  172.18.0.3    --dport 11211 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
#本来是只允许10.138.132.61 对Memcache服务器的访问&lt;br /&gt;
iptables  -I INPUT -p tcp -s  10.138.132.61    --dport 11211 -j ACCEPT&lt;br /&gt;
iptables -I  INPUT -p tcp -s    10.138.132.61   --dport 11211 -j ACCEPT&lt;br /&gt;
iptables -A INPUT -p tcp -m tcp --dport 11211 -j DROP&lt;br /&gt;
&lt;br /&gt;
最终在内部测试  &lt;br /&gt;
&lt;br /&gt;
容器# telnet  10.138.132.61 11211&lt;br /&gt;
Trying 10.138.132.61...&lt;br /&gt;
Connected to 10.138.132.61.&lt;br /&gt;
Escape character is &amp;#039;^]&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
相关 &lt;br /&gt;
-- 查找所有规则&lt;br /&gt;
iptables -L INPUT --line-numbers&lt;br /&gt;
&lt;br /&gt;
-- 删除一条规则&lt;br /&gt;
iptables -D INPUT 11 （注意，这个11是行号，是iptables -L INPUT --line-numbers 所打印出来的行号）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
外网是11211不通 但是内网的呢 默认是通的 &lt;br /&gt;
 &lt;br /&gt;
root@-01:/data# telnet  172.18.0.1 11211&lt;br /&gt;
Connected to 172.18.0.1.&lt;br /&gt;
Escape character is &amp;#039;^]&amp;#039;.&lt;br /&gt;
^]quit &lt;br /&gt;
&lt;br /&gt;
root@-01:/data# telnet 138.68.59.0  11211&lt;br /&gt;
Connected to 138.68.59.0.&lt;br /&gt;
Escape character is &amp;#039;^]&amp;#039;. &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.helplib.cn/yangchunyan110/how-to-install-and-secure-memcached-on-ubuntu-16-04 在Ubuntu 16.04上，如何安装和保护Memcached ]&lt;br /&gt;
&lt;br /&gt;
===other===&lt;br /&gt;
docker run -it `docker ps -aqf &amp;quot;name=memcached&amp;quot;` /bin/sh&lt;br /&gt;
  &lt;br /&gt;
# Stats&lt;br /&gt;
echo -e &amp;quot;stats&amp;quot; | nc localhost 11211&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-l是监听的服务器IP地址，可以有多个地址&lt;br /&gt;
&lt;br /&gt;
修改memcached的配置文件，修改15行OPTIONS中的-l 127.0.0.1， 添加你的内网IP &lt;br /&gt;
&lt;br /&gt;
elnet localhost 11211&lt;br /&gt;
flush_all&lt;br /&gt;
&lt;br /&gt;
同样也可以使用：&lt;br /&gt;
echo &amp;quot;flush_all&amp;quot; | nc localhost 11211&lt;br /&gt;
&lt;br /&gt;
使用flush_all 后并不是删除memcache上的key，而是置为过期&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=python client=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
客户端连接实例 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pip install python-binary-memcached&lt;br /&gt;
&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
# -*- coding: utf-8 -*-&lt;br /&gt;
import bmemcached&lt;br /&gt;
client = bmemcached.Client((&amp;#039;192.168.10.214:11211&amp;#039;), &amp;#039;memcached&amp;#039;, &amp;#039;RV3kEjX5Ug5ufTKO&amp;#039;) &lt;br /&gt;
print client.set(&amp;#039;key&amp;#039;, &amp;#039;value11111111111&amp;#039;)&lt;br /&gt;
print client.get(&amp;#039;key&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
python 1.py &lt;br /&gt;
True&lt;br /&gt;
value11111111111&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
https://help.aliyun.com/document_detail/48437.html?spm=a2c4g.11186623.6.566.52fe6ac3bBPGYx&lt;br /&gt;
&lt;br /&gt;
=php 客户端连接=&lt;br /&gt;
&lt;br /&gt;
==有密码的 php-memcached==&lt;br /&gt;
详情见  [[Php连接有密码的memcached服务]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$connect = new Memcached;  //声明一个新的memcached链接&lt;br /&gt;
$connect-&amp;gt;setOption(Memcached::OPT_COMPRESSION, false); //关闭压缩功能&lt;br /&gt;
$connect-&amp;gt;setOption(Memcached::OPT_BINARY_PROTOCOL, true); //使用binary二进制协议&lt;br /&gt;
$connect-&amp;gt;setOption(Memcached::OPT_TCP_NODELAY, true); //重要，php memcached有个bug，当get的值不存在，有固定40ms延迟，开启这个参数，可以避免这个bug&lt;br /&gt;
$connect-&amp;gt;addServer(&amp;#039;192.168.1.3&amp;#039;, 11211); //添加memcached地址及端口号&lt;br /&gt;
$connect-&amp;gt;setSaslAuthData(&amp;#039;user&amp;#039;, &amp;#039;password&amp;#039;); &lt;br /&gt;
$connect-&amp;gt;set(&amp;quot;hello&amp;quot;, &amp;quot;world&amp;quot;);&lt;br /&gt;
echo &amp;#039;hello: &amp;#039;,$connect-&amp;gt;get(&amp;quot;hello&amp;quot;);&lt;br /&gt;
$connect-&amp;gt;quit();&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
https://help.aliyun.com/document_detail/48432.html&lt;br /&gt;
&lt;br /&gt;
==没密码的 php-memcache==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$memcache = memcache_connect(&amp;#039;192.168.10.214&amp;#039;, 11211);//主机和mamcache的端口号&lt;br /&gt;
&lt;br /&gt;
if ($memcache) {&lt;br /&gt;
&lt;br /&gt;
//存入一个名字为str_key对应值为“String to store in memcached”的字符串。&lt;br /&gt;
	$memcache-&amp;gt;set(&amp;quot;str_key&amp;quot;, &amp;quot;String to store in memcached&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	$memcache-&amp;gt;set(&amp;quot;num_key&amp;quot;, 123);&lt;br /&gt;
	$array = Array(&amp;#039;assoc&amp;#039;=&amp;gt;123, 345, 567);&lt;br /&gt;
	$memcache-&amp;gt;set(&amp;quot;arr_key&amp;quot;, $array);&lt;br /&gt;
        //如果输入这些键名，就说明链接成功&lt;br /&gt;
	var_dump($memcache-&amp;gt;get(&amp;#039;str_key&amp;#039;));&lt;br /&gt;
	var_dump($memcache-&amp;gt;get(&amp;#039;num_key&amp;#039;));&lt;br /&gt;
	var_dump($memcache-&amp;gt;get(&amp;#039;arr_key&amp;#039;));&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
	echo &amp;quot;Connection to memcached failed&amp;quot;;//链接失败&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=pull hub docker=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
docker pull memcached&lt;br /&gt;
&lt;br /&gt;
启动memcached容器&lt;br /&gt;
&lt;br /&gt;
使用下面的命令来创建一个新容器，可以根据你的需求修改这个例子。&lt;br /&gt;
&lt;br /&gt;
 docker run --name memcached -d -p 45001:11211 memcached&lt;br /&gt;
&lt;br /&gt;
“csphere-memcached”容器，已启动，可使用45001端口连接使用。&lt;br /&gt;
限制Memcached容器的内存&lt;br /&gt;
&lt;br /&gt;
如果想要限制一个Docker容器进程可以使用的内存量，只要设置-m [memory amount]并标上限制就ok。&lt;br /&gt;
&lt;br /&gt;
运行一个内存限制为256MB的容器：&lt;br /&gt;
&lt;br /&gt;
# sudo docker run -name csphere-memcached -m 256m -d -p 45001:11211 csphere-memcached&lt;br /&gt;
&lt;br /&gt;
检查此容器内存限制是否设置成功，执行以下命令：&lt;br /&gt;
&lt;br /&gt;
# Example: docker inspect [container ID] | grep Memory sudo docker inspect csphere-memcached | grep Memory&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=dockerfile=&lt;br /&gt;
https://github.com/evan886/docker-memcached&lt;br /&gt;
&lt;br /&gt;
有空参考一下下面的，自己build一个喽&lt;br /&gt;
&lt;br /&gt;
=see also=&lt;br /&gt;
[https://www.ityoudao.cn/posts/lnmp-memcached-installation/ LNMP之Memcached服务器的安装部署]&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/qwssd/article/details/77198839 Linux下安装配置带SASL认证的Memcached]&lt;br /&gt;
&lt;br /&gt;
[http://shiyanjun.cn/archives/873.html?utm_source=tuicool&amp;amp;utm_medium=referral Memcached服务器安装、配置、使用详解]&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/dengwenquan2011/article/details/6965991 Memcache基础教程]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/lxf2323881/article/details/79273465 十分钟学会memcache，比你想象的要简单]&lt;br /&gt;
&lt;br /&gt;
[https://hub.docker.com/_/memcached/ memcached on docker]&lt;br /&gt;
&lt;br /&gt;
[http://dockone.io/article/868 如何构建Memcached Docker容器]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/allus0918/article/details/50481927 memcached启动与清理缓存]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://blog.csdn.net/dutsoft/article/details/71101809 Python项目使用memcached缓存]&lt;br /&gt;
&lt;br /&gt;
[[category:容器]] [[category:ops]] [[category: container]]&lt;/div&gt;</summary>
		<author><name>Evan</name></author>
	</entry>
</feed>