boot2dockerをCloudAtCostで使う


インストール

dd if=boot2docker.iso of=/dev/sda bs=1M;sync;sync;sync;reboot

データ保存領域

fdisk /dev/sda
  • 500Mのswapと、残りをsda3に割り当て
mkswap /dev/sda2
mkfs.ext4 -L boot2docker-data /dev/sda3
  • reboot

/var/lib/boot2docker/bootlocal.sh

  • OS起動時に自動実行されるスクリプト。
/var/lib/boot2docker/bootlocal.sh
ip addr add 192.168.58.220/24 dev eth0
ip route add default via 192.168.58.1
echo nameserver 8.8.8.8 >> /etc/resolv.conf

echo 'TZ="JST-9"' > /etc/sysconfig/timezone

mount -o bind /var/lib/boot2docker/home /home/docker
sh /home/docker/bin/iptables.sh
sh /home/docker/bin/startup.sh

必要なファイルを設置

  • /var/lib/boot2docker/.ssh にdockerユーザ用鍵を置く

sshd設定

/mnt/sda3/var/lib/boot2docker/ssh/sshd_config
UseDNS no
Port 23421
PasswordAuthentication no
PermitRootLogin no
  • パスワード認証を無効にして、sshポートを適当に変える。
  • シンボリックリンクは以下に設定されている。
    • /usr/local/etc/ssh -> /var/lib/boot2docker/ssh/

/home/dockerの永続化

mkdir -p /var/lib/boot2docker/home
chown -R docker:staff /var/lib/boot2docker/home
mount -o bind /var/lib/boot2docker/home /home/docker

iptables

/home/docker/bin/iptables.sh
#!/bin/sh

# iptables 初期化
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD

# 受信を破棄 / 送信を許可 / 通過を拒否
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

# 自ホストからのアクセスをすべて許可
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# 内部から行ったアクセスに対する外部からの返答アクセスを許可
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# ping(icmp)許可
iptables -I INPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -I INPUT -p icmp --icmp-type 8 -j ACCEPT

#-----------
# ポート開放
#-----------
for i in 22 80
do
  iptables -A INPUT -p tcp --dport $i -j ACCEPT
done

# 上記のルールにマッチしなかったアクセスはログを記録して破棄
iptables -A INPUT -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES INPUT] : '
iptables -A INPUT -j DROP
iptables -A FORWARD -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES FORWARD] : '
iptables -A FORWARD -j DROP

PATHの追加

/home/docker/.profile
export PATH=$PATH:~/bin/

X転送可能にする

パッケージダウンロード
BASE=http://tinycorelinux.net/6.x/x86_64/tcz
for i in \
  Xorg-7.7-bin libXinerama libGL libXcursor libXext libX11 libxcb libXau libXdmcp libXdamage libXfixes libxshmfence libXxf86vm libdrm libXrender fontconfig freetype libSM libICE harfbuzz libpng \
  libXmu Xorg-fonts
do
  wget $BASE/$i.tcz
  tce-load -i $i.tcz
done
/usr/local/etc/ssh/sshd_config
X11Forwarding yes
X11DisplayOffset 10