[关闭]
@yangxuan 2017-01-06T17:01:15.000000Z 字数 4019 阅读 6363

树莓派的 Docker 之旅

树莓派 Docker RPi


本文格式说明:

  1. 这是命令,每个代码块都是整个粘贴就可以,不需要分行输入

这是附加信息说明

这种是引用,一般是使用在专有名词上或文件上,方便阅读

本文系统: RASPBIAN JESSIE LITE 2016-11-25 (JESSIE 也可以)

配置系统

(如果已经配置好可以跳到 安装 docker 部分):

配置 Wi-Fi:

(整个复制下面的三行代码到终端,把 ssidpsk 后面括号内替换为你的无线名称和密码)

  1. echo "network={
  2. ssid="ssid_here"
  3. psk="psk_here"}" | sudo tee --append /etc/wpa_supplicant/wpa_supplicant.conf

新版系统(2016-11-25)识别 Wi-Fi 速度较慢,可以选用上一个版本 2016-09-28 JESSIE (镜像/种子),JESSIE LITE (镜像/种子),其它版本在其下载站点的 images 目录

如果你的存储卡是 Class 10,可以启用 sd overclock 来提升读写:

  1. echo "dtparam=sd_overclock=100" | sudo tee --append /boot/config.txt

重启后生效

更改键盘布局:

  1. sudo sed -i -e 's/XKBLAYOUT="gb"/XKBLAYOUT="us"/g' /etc/default/keyboard

更改时区:

  1. sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

使用国内软件源(加快速度)

RASPBIAN 的软件源包括两部分
一个是 /etc/apt/sources.list,也就是 archive.raspbian.org

替换其为东软的源并屏蔽掉官方源(整个复制下面的三行代码到终端):

  1. sudo sed -i '1 s/^/#/g' /etc/apt/sources.list &&
  2. echo "deb http://mirrors.neusoft.edu.cn/raspbian/raspbian/ jessie main contrib non-free rpi
  3. #deb-src http://mirrors.neusoft.edu.cn/raspbian/raspbian/ jessie main contrib non-free rpi" | sudo tee --append /etc/apt/sources.list

archive.raspbian.org 来自社区,与树莓派官方 (树莓派基金会) 没有任何关系,我们使用的大部分软件也都来自这里;国内的镜像站比如 tuna 或阿里提供的 raspbian 镜像都是这个站点的镜像

另一个是 /etc/apt/sources.list.d/raspi.list,也就是 archive.raspberrypi.org

下面屏蔽官方源并替换为 ustclug 的反向代理:

  1. sudo sed -i '1 s/^/#/g' /etc/apt/sources.list.d/raspi.list &&
  2. echo "deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/ jessie main ui
  3. #deb-src http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/ jessie main ui" | sudo tee --append /etc/apt/sources.list.d/raspi.list

archive.raspberrypi.org 来自基金会,这个软件源包括 kernel,bootloader,firmware以及基金会自己修改的软件(比如 ui 相关的,还有 chromium-browser),如果你删掉这个表的话就无法更新内核;这个源在国内似乎没有镜像,只能通过 ustclug 的反向代理来加快访问速度

更新系统软件:

  1. sudo apt-get update&&sudo apt-get upgrade -y

(可选)之后重启

  1. sudo reboot

docker 安装

  1. curl -sSL https://get.docker.com | sh

依赖:

  1. sudo apt-get update &&
  2. sudo apt-get install apt-transport-https ca-certificates
  1. sudo apt-key adv \
  2. --keyserver hkp://ha.pool.sks-keyservers.net:80 \
  3. --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

添加源:

  1. sudo 'cat > /etc/apt/sources.list.d/docker.list << "EOF"
  2. deb http://mirrors.ustc.edu.cn/docker/apt/repo raspbian-jessie main
  3. EOF'

安装 docker-engine:

  1. sudo apt-get update &&
  2. sudo apt-get install docker-engine
  1. sudo service docker start

不需 sudo 运行 docker:

  1. sudo groupadd docker &&
  2. sudo usermod -aG docker $USER &&
  3. sudo service docker restart

如果碰到这样的故障:

  1. 'overlay' not found as a supported filesystem on this host. Please ensure kernel is new enough and has overlay support loaded

可以这么解决:

  1. sudo apt-get autoremove --purge docker-engine &&
  2. sudo rm -rfv /var/lib/docker
  1. sudo reboot
  1. sudo apt-get update &&
  2. sudo apt-get install docker-engine

使用 ustclug docker 镜像加速访问 docker hub:

  1. sudo bash -c 'cat > /etc/docker/daemon.json << "EOF"
  2. {
  3. "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
  4. }
  5. EOF'
  1. sudo service docker restart

利用 docker 安装应用

安装 docker web 管理页面 portainer

  1. docker run -d --restart=always -p 80:9000 -v /var/run/docker.sock:/var/run/docker.sock --name Portainer portainer/portainer:arm

这里是把 portainer 映射到主机的 80 端口,并管理本机的 docker

访问 http://raspberrypi/ 即可访问 portainer

安装 gogs

  1. docker run -d --restart=always --name=gogs -p 10022:22 -p 10080:3000 -v /home/pirate/repos:/data gogs/gogs-rpi

gogs是一个轻量级的 git web 管理

访问 http://raspberrypi:10080 完成配置(个人用途的话数据库可以选择 sqlite)

安装 Samba:

hostname 更改为你的主机名

-v /home/pirate: 替换为你想挂载的目录

-u "pirate:hypriot" 替换为你想设定的 samba 用户名和密码

-s "share:/share:rw:pirate" 指定授予用户读写权限

  1. docker run -d \
  2. -p 137:137/udp \
  3. -p 138:138/udp \
  4. -p 139:139 \
  5. -p 445:445 \
  6. -p 445:445/udp \
  7. --restart='always' \
  8. --hostname 'black-pearl' \
  9. -v /home/pirate:/share \
  10. --name samba dastrasmue/rpi-samba:v3 \
  11. -u "pirate:hypriot" \
  12. -s "share:/share:rw:pirate"

aria2:

在 webui-aria2 的 github 页面有 build 集成 aria2 及 webui-aria2 的说明

多数软件官方并没有提供 arm 架构的支持,而且也不能直接使用它们的 image,这是因为 base images 不同,可以参照 x86 版本的 Dockerfile 自己写

docker 资源

docker hub

alpine: hypriot/rpi-alpine-scratch

raspbian: resin/rpi-raspbian

更多 base images 可以在上面两个用户的 repos 里面找:

resin

hypriot

https://github.com/hypriot

https://github.com/resin-io

https://github.com/vimagick/dockerfiles

https://blog.hypriot.com

https://resin.io

其它 docker 命令说明

列出 container:

  1. docker ps -a

列出 image:

  1. docker images

删除 container:

  1. docker rm -f <NAME>

删除 image(需先停止相关的 container):

  1. docker rmi ID

重启之后启动 container:

  1. docker start CONTAINER ID

如果想重启之后让 container 自启动,可以添加启用服务时候添加 --restart=always 参数

更多命令参见其官方文档

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注