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的安裝和使用,請參考我前面的文章

相關文章
相關標籤/搜索