场景

在 Virtualbox 上直接启动 boot2docker.iso , 并加载虚拟硬盘存放 images 以及个人数据. 远程 ssh 进入系统后进行 docker 操作. 如果能够本机操作,直接安装整合包.

下载

https://github.com/boot2docker/boot2docker/releases/download/v1.9.1/boot2docker.iso

Docker v1.9.1
Linux v4.1.13 (AUFS v4.1-20151116)
Parallels Tools v11.1.0-32202
VMware Tools (open-vm-tools) v10.0.0-3000743
VirtualBox Guest Additions v5.0.10
XenServer Tools (xe-guest-utilities) v6.6.80

Virtualbox

设置一个新的虚拟硬盘, 启动后设置硬盘 Lable 为 boot2docker-data, 重启后系统会自动挂载在 /var/lib/boot2docker 以及 /var/lib/docker 下, 前者放启动脚本, 后者放docker 数据.

fdisk /dev/sda
mkfs.ext4 -L boot2docker-data /dev/sda1
reboot

修改默认密码

默认帐号为 docker/tcuser,修改为自定义密码

openssl passwd -1 > mypasswd.txt
vi mypasswd.txt 在密码前面加上"docker:"
cd /var/lib/boo2docker
vi bootlocal.sh
chmod +x bootlocal.sh

bootlocal.sh 内容为:

#!/bin/sh
chpasswd -e < /var/lib/boot2docker/mypasswd.txt

重启 ok.

tips

目录 /var/lib/boot2docker 下可以存放一些启动脚本或定制数据.

- bootsync.sh       docker 服务启动前运行此脚本
- bootlocal.sh      系统启动完成后运行些脚本
- profile           自动装载硬盘后读取
- certs/            目录下可以放 Registry server's public certificate (in .pem format)

共享目录会按共享名自动装载, 如共享名为home/jsmith会 mount 到 /home/jsmith, 也可以手动 mount 到指定目录.

mount -t vboxsf -o uid=1000,gid=50 your-other-share-name /some/mount/location

场景

注:系统可以全部安装在 U 盘上,但引导必须有一个 SD 卡.

  • 小容量 microSD卡, 64M+即可,此处为8G
  • 大容量 U 盘,此处为16G,或 USB 外置硬盘,功耗要低点

安装步骤

按 [Rapberry Pi 2 运行 Docker]操作, 将 SD 卡部分换成大容量 U 盘.

SD 卡格式化为 FAT或 FAT32, 放入电脑.

将 U 盘上 FAT 分区中的所有文件 COPY 到 SD 卡根目录.

更改SD 卡 cmdline.txt 文件中的 root=/dev/mmcblk0p2为 root=/dev/sda2

+dwc_otg.lpm_enable=0 console=tty1 root=/dev/sda2 rootfstype=ext4 cgroup-enable=memory swapaccount=1 elevator=deadline rootwait console=ttyAMA0,115200 kgdboc=ttyAMA0,115200

sd卡,u 盘均插在 pi 2上并启动.

启动后 u 盘容量没有完全使用,手工修正

fidks /dev/sda
p

记下 sda2的起始点

/dev/sda2       133120 2429686 2296567  1.1G 83 Linux

重做 sda2分区

d
2
n
p
2
133120 或 回车
回车
w

重启一下.

partprobe
/sbin/resize2fs /dev/disk/by-label/root
reboot

df 一下.

df
Filesystem     1K-blocks   Used Available Use% Mounted on
/dev/root       14583904 800080  13134556   6% /
devtmpfs          469540      0    469540   0% /dev
tmpfs             473852      0    473852   0% /dev/shm
tmpfs             473852   6272    467580   2% /run
tmpfs               5120      0      5120   0% /run/lock
tmpfs             473852      0    473852   0% /sys/fs/cgroup
/dev/mmcblk0p1   7776384  45312   7731072   1% /boot

情景

  • Rapberry Pi 2 一个
  • Mac OS X 系统

安装步骤

下载Rapberry Pi 2系统并解压

wget http://downloads.hypriot.com/hypriot-rpi-20151115-132854.img.zip
unzip hypriot-rpi-20151115-132854.img.zip

系统简介

Detailed Features of HypriotOS “Hector”
a modern operating system based on Raspbian Jessie
a recent Raspberry Pi firmware and Device Tree to support a huge range of hardware add-ons
a kernel optimized for Docker-awesomeness: Kernel 4.1.12 with support for OverlayFS
support for Raspberry Pi 1 & 2 with the same SD card image
Docker Engine 1.9.0
Docker Compose 1.5.1
Docker Machine 0.4.1
Docker Swarm 1.0.0
support for network hotplugging
out-of-the-box support for WiFi
support for Avahi (aka mDNS aka Apple Bonjour)
support for Open vSwitch
our own package repository to easily update individual components

检查下载是否正确

shasum -a 256 hypriot-rpi-20151115-132854.img.zip
089bc64fc5f050f263aa65a67fac5fe48f8721c51f8a31f3d96fa426bc04674d  hypriot-rpi-20151115-132854.img.zip

准备好一张容量最少4G 的microSD卡. 查找其系统编号

diskutil list

... /dev/disk2 #: TYPE NAME SIZE IDENTIFIER 0: FDisk_partition_scheme *4.0 GB disk2 1: DOS_FAT_32 NO NAME 4.0 GB ...
这里为/dev/disk2,别看错.

取消挂载

diskutil unmountdisk /dev/disk2

写入系统到 SD 卡,设备名 disk2前有个字母 'r', 这样能加速写入

sudo dd if=hypriot-rpi-20151115-132854.img of=/dev/rdisk2 bs=1m
1430+1 records in
1430+0 records out
1499463680 bytes transferred in 112.464700 secs (13332750 bytes/sec)

sd 卡放在 pi 2上,启动吧.

sqlite3

使用场景

使用 pony 作为 orm读取 20w 条左右数据

取得所有字段,会自动封装成对象 select(u for u in User)

优化

只取需要的字段 select(u.id for u in User)

redis

使用场景

使用 redis.py 作为  写入 20w 条左右数据

m.incr('u_'+u[:7])

优化

使用连接池

pool = redis.ConnectionPool(host='127.0.0.1', port=6379, db=15)
m = redis.StrictRedis(connection_pool=pool)

使用批量提交

pipe = m.pipeline()
pipe.incr('u_'+u[:7])
pipe.set()
pipe.execute()

Ubuntu 14.04 在升级内核或是不安全断电情况下,重启后GRUB 会停留在系统选择界面,并不会自动超时,需要手动选择并按回车才能继续启动. 在不方便接触物理机或 VPS 远程开机时,是个很麻烦的事.

主要原因是/boot/grub/grub.cfg 把 timeout 设置成了'-1'.

  if [ "${recordfail}" = 1 ] ; then
   set timeout=-1
  else
   if [ x$feature_timeout_style = xy ] ; then
     set timeout_style=hidden
     set timeout=0
   # Fallback hidden-timeout code in case the timeout_style feature is
   # unavailable.
   elif sleep --interruptible 0 ; then
     set timeout=0
   fi
  fi

grub.cfg 会被重写覆盖,得修改/etc/default/grub,加入一行

  GRUB_RECORDFAIL_TIMEOUT=5

更新 grub.cfg

  update-grub

然后'-1'的设置会变更为'5',这样不用手动操作,系统会在5秒超时会继续启动,不再挂住.

day 13-16 Istanbul

  • 8.2 - 8.6

Ankara 到 istanbul 是全程双向6车道标准高速O-4,平均时速110,除了快到时因几起别人的小车祸导致堵了一小会. 而且 HGS 好象没扣费的样子.

休息站特意去看了一下,价格还过得去,没国内那么狠.

AVIS 还车也很顺利. 这次自驾总里程约2700KM,租车费2400TL,油费1200TL. 不得不说这油价真的是太高了. 可能新车也费油点,加上全程空调不能停,平均油耗11左右了.

感觉上大部分游客都在这里了,热闹是真很热闹.

酒店带厨房,总算能做点对胃口的东西吃了. SOK 超市在附近就有三个,买的蔬菜味道相当不错. 肉主要是鸡肉,少量牛肉. 当然少不了便宜又好吃的樱桃等水果.

地下水宫没在通票内,不过值得下去看看.

大皇宫观景台看海峡. 坐船巡游会经过.

蓝色清真寺外的方尖碑.

只有一站的小火车.类似的还有二处,用于爬山并接驳地铁线路.单独收费.

tips

  • 找个人少的地方或自动售票机,先买好通票,不然排队时间很长.
  • 几个主要景点都在一起,市内交通一人一张交通卡,就能很方便的跑来跑去.
  • 香料市场价格要好一点.
  • 独立大街南边小店价格不错,可以买点纪念品之类.
  • 啤酒有点贵.

day 12 Ankara

  • 8.1

回走70KM 左右的 D300,再走 E90. 可惜 E90估计是将来的名字,现在仍然是 D750编号,路况和 D300一样,除极少数几个点还在收尾, 路面都非常好,基本上能上100KM/H, 可惜现在还不是封闭高速路,当然也不收高速费.

出发稍晚了点,路上休息了小会,在盐湖又玩了一会,到达 Ankara 时近三点,饿得厉害,便在城堡里的小店吃了点东西. 虽然语言不通,但店家老奶奶和孙儿女们非常的热情,做出来的类似香河肉饼的东西,又便宜又好吃.

自驾建议经过盐湖时去玩一下,走 E90会经过,有指示牌.

tips

  • 同时标注D 级及 E 级的道路,估计是在升级中,路况都还不错,暂时也不收费.

day 10 Goreme

  • 7.30

D300一路过来,路况相当好,平均时速能上90. 一路主要是平坦的高原,路直得很,是最近开过最好的路.

Goreme 是个让人看一眼就感觉特别的地方. 洞窟酒店也相当有特色.

中午也总算吃到了瓦罐牛肉, 不然烤肉真要吃到吐了.

买了新的博物馆通票.

tips

  • D300除了极少几个红灯以及维修收尾的地方,大部分都和高速路况差不多. 特别是放眼望去,是广阔的平坦高原,视野及风景都相当不错.
  • 石窟房间有点湿冷,另外要当心擦伤
  • 玩 ATV 要注意防灰,戴好墨镜.

day 11 Goreme

  • 7.31

早上热气球是第二波. 比能看到日出的第一波晚了约半小时. 最大的三家没有订到.

上午去了另一个露天博物馆,下午绿线二个地下城. 通票果然好用.

晚上就在镇子里瞎逛.

tips

  • 天空没什么云,太阳晒得很厉害,要防止晒伤
  • 加油感觉还是道达尔好点,一是价格稍便宜,二是会仔细帮你擦洗边上所有的玻璃,三是感觉上加的油经用一点
  • 如果玩的地方多,建议买通票.