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