Docker 简明部署教程

喵,首先需要准备一个干净的 Ubuntu 12.04 LTS 环境。
Tips: 如果使用 VPS 的话推荐使用基于 KVM / VMWare 虚拟化的,如果是 OpenVZ 什么的就算了… 洗洗睡吧

安装 Docker

首先需要升级内核,由于 Precise 默认提供的 3.2 内核里 LXC 的支持有点问题,所以我们需要升级到 3.8:

1
2
sudo apt-get update
sudo apt-get install -y linux-image-generic-lts-raring linux-headers-generic-lts-raring

升级完成后重启一下,让内核生效:

1
sudo reboot

然后导入 Docker 的 Key 并安装之:

1
2
3
4
5
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
sudo sh -c "echo deb http://get.docker.io/ubuntu docker main\
> /etc/apt/sources.list.d/docker.list"

sudo apt-get update
sudo apt-get install -y lxc-docker

准备基础镜像

接下来我们需要准备一个基础镜像,对于我等 Debian 脑残粉,嗯下面的基础镜像就以 Debian 7 Wheezy 为例子啦~

当然,你也可以直接用 docker pull debian 从官方 registry 下载,但是 Cloudflare 在国内的可用性实在是太烂了,还是自己做算了。

制作镜像需要用到 debootstrap 这个包,我们先安装一下:

1
sudo apt-get install -y debootstrap

然后生成一只 Debian:

1
debootstrap wheezy debian-wheezy http://mirrors.espresso.li/debian

嗯注意请把 http://mirrors.espresso.li/debian 换成你所使用的 Debian 源的地址,上面写的这个源是不对外开放的喵

接下来我们把它导入 Docker:

1
tar -C debian-wheezy -c . | sudo docker import - espresso/debian

嗯好了接下来你们自己玩儿吧我上班去了。。。

解決 EdgeRouter 雙 WAN 時某一出口無法正常 NAT 的問題

前幾天在路由器上跑 mtr 把 ssh 跑死了,由於沒接 Console 的線我也不知道為什麼所以乾脆重啟了一下。

然後,我聯通出口的 NAT 掛掉了。 :-(

我的網絡架構是這樣子的:

接入層 EdgeRouter Lite:

  • eth0 接入到室內交換機
  • eth1 上聯公用 TP-LINK 路由器,使用 DHCP 接入長城寬帶
  • eth2 上聯聯通 EPON 終端設備,通過 PPPoE 接入聯通寬帶

重啟之後由於 eth1 的 DHCP 先獲取到了 IP 地址,系統的默認路由就變成了 eth1。

於是後來 eth2 上連接的 PPPoE 連接完成後沒有修改默認路由,NAT 自然不知道把數據往哪裡扔了,所以… 解決辦法很簡單咯:

1
sudo ip route replace default via pppoe0

搭建 Exim4 來去除 Google Apps 發送郵件時提示以某某的身份發送的問題

之前為了防止各個服務商沒事兒洩漏我 E-mail 地址,我每次註冊服務時填寫的註冊郵箱地址都是 provider-name@xswan.net 這種形式的,本來這樣沒什麼問題,但是 … 要回覆的時候問題就來了。

首先我們把這個郵箱添加到 Send mail as 裡去,然後 … 嗯發郵件的時候,就會出現這樣討厭的提示了:

06$TKM1B6LFD8R2O~_NXFYY.jpg

在 Google Apps 的後臺找了半天也沒發現能重寫 Envelope-From 這個頭的地方,那就搭建一個 Exim4 好啦~

這裡我使用的是 DigitalOcean 的 VPS 來搭建 Exim4,主要原因是:

  1. 可以設置 PTR,郵件服務器不做反向解析的話到達率可是很低的喲
  2. 性價比高,5 USD 還 SSD 你到哪兒找去(LowEndBox 什麼的地方除外)

操作系統我使用的是 Debian 7 x64,安裝步驟如下:

1. 安裝 Exim4

1
2
3
apt-get update
apt-get -y upgrade
apt-get -y install mailutils exim4-daemon-light

2. 配置 Exim4
把以下內容覆蓋到 /etc/exim4/update-exim4.conf.conf 然後運行 dpkg-reconfigure exim4 一路 Next 即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
dc_eximconfig_configtype='internet'
dc_other_hostnames=''
dc_local_interfaces=''
dc_readhost=''
dc_relay_domains=''
dc_minimaldns='true'
dc_relay_nets='216.239.32.0/19;64.233.160.0/19;66.249.80.0/20;72.14.192.0/18;209.85.128.0/17;66.102.0.0/20;74.125.0.0/16;64.18.0.0/20;207.126.144.0/20;173.194.0.0/16'
dc_smarthost=''
CFILEMODE='644'
dc_use_split_config='true'
dc_hide_mailname=''
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'

上面的 dc_relay_nets 裡是 Google 的 IP 段,獲取方法在 這裡

3. 配置 Exim4 重寫規則
將以下內容寫入 /etc/exim4/conf.d/rewrite/32\_exim4-rewrite-envelope-from

1
a@loli.vg $h_from F

a@loli.vg 是我的郵箱地址,實際操作中請按換成自己的嗯。。

修改完成後重啟 exim4:

1
invoke-rc.d exim4 restart

4. 安全加固
其實就是用 iptables 把來自非 Google 的 IP 屏蔽掉而已,雖然第二步的 dc_relay_nets 已經處理了,但是我覺得拒絕投遞的日誌出現也很煩,那就在 iptables 裡再屏蔽一次好了 :-)

1
2
3
4
5
6
7
8
9
10
11
12
iptables -A INPUT -s 216.239.32.0/19 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -s 64.233.160.0/19 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -s 66.249.80.0/20 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -s 72.14.192.0/18 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -s 209.85.128.0/17 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -s 66.249.80.0/20 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -s 66.102.0.0/20 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -s 74.125.0.0/16 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -s 66.249.80.0/20 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -s 207.126.144.0/20 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -s 173.194.0.0/16 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 25 -j DROP

5. 修改域名 A 記錄和 SPF 記錄
首先添加一條 _spf.moease.org,記錄類型為 SPF(沒有 SPF 的選 TXT):
"v=spf1 a:mx1.moease.org ip4:198.211.101.101 ?all"

這裡的 mx1.moease.org 就是我運行 Exim4 的機器的 Hostname,198.211.101.101 是它的 IP 地址。

然後將 moease.org 的 SPF 記錄修改為:
"v=spf1 include:_spf.moease.org include:_spf.google.com -all"

關於 SPF 記錄的更多知識可以在小允的 Blog 裡找到,這裡就不再敘述了。

6. 修改 Google Apps 郵件發送設置
打開 Google Apps 控制面板,依次打開:
Google Apps > Gmail > Advanced Settings

在打開的頁面裡找到 Outbound gateway,填上郵件服務器的地址保存即可,我這裡填寫的是 mx1.moease.org
(沒有的請先升級到付費版本)

好啦,完結撒花~