CentOS 6.5下利用Docker使用Letsencrypt

问题来源

Letsencrypt依赖python 2.7及以上,而CentOS 6.5又只支持到2.6,每次执行letsencrypt都会卡在升级上,老是过不去,最后决定使用docker解决此问题。html

步骤

安装docker

docker缺省要求CentOS 7,但实际在CentOS 6.5上也是能够安装的,只不过包名不叫docker,而是docker-iopython

yum install docker-io

配置国内镜像

如你所知,docker在国内访问不了,因此须要配置国内镜像,按照这篇文章的说法:docker

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://ed92cb97.m.daocloud.io

而后,你须要从新启动docker服务:segmentfault

service docker restart

错误

颇有可能,这时你的docker起不来:app

Cannot connect to the Docker daemon. Is 'docker -d' running on this host?

ps aux | grep docker也看不到docker进程。当你执行docker -d命令时:curl

INFO[0000] Listening for HTTP on unix (/var/run/docker.sock)
INFO[0000] [graphdriver] using prior storage driver "devicemapper"
WARN[0000] Running modprobe bridge nf_nat failed with message: , error: exit status 1
FATA[0000] Error starting daemon: Error initializing network controller: Error creating default "bridge" network: can't find an address range for interface "docker0"

这时,你须要vi /etc/sysconfig/network-scripts/route-eth0,把其中有172.16.0.0的这一行注释掉,在前面加一个#号。而后:this

route del -net 172.16.0.0 netmask 255.240.0.0
/etc/init.d/network restart

再次执行service docker restart,而后,执行ps aux | grep docker,你会看到docker进程已启动。url

运行

装好以后,就能够执行了:unix

docker run --rm -it -v "/var/log/letsencrypt:/var/log/letsencrypt" -v "/etc/letsencrypt:/etc/letsencrypt" lojzik/letsencrypt renew

几个参数解释一下:
--rm表示删除container,每次执行完以后,须要把container删除,不然系统里留一堆没用的container很浪费。
-it表示交互。
-v表示把咱们本系统的目录配置给container使用,冒号前面是本系统的路径,冒号后面是container里的路径。由于咱们以前已经在本系统安装过letsencrypt而且配置过了,因此直接用相同的就能够。
后面是包名。
再日后是所执行的命令,在这里我只须要执行renew就行了,其它命令同certbot
运行完以后能够执行rest

docker images

看一下,系统自动下载了一个letsencryptimage进来,只是第一次下,之后就不须要下了。
能够执行docker ps -a检查确保没有垃圾container留在系统里。若是有的话,执行docker rm container-name删除之。

利用docker,咱们实现了彻底不依赖CentOS的独立python以及letsencrypt,这样无论你系统是什么,都不会影响letsencrypt的正常使用。

关于letsencrypt的安装和使用,请参考我前面的文章

相关文章
相关标签/搜索