@yangxuan
2017-01-06T17:01:15.000000Z
字数 4019
阅读 6342
树莓派
Docker
RPi
本文格式说明:
这是命令,每个代码块都是整个粘贴就可以,不需要分行输入
这是附加信息说明
这种是引用,一般是使用在专有名词上或文件上,方便阅读
本文系统: RASPBIAN JESSIE LITE 2016-11-25 (JESSIE 也可以)
(如果已经配置好可以跳到 安装 docker
部分):
配置 Wi-Fi:
(整个复制下面的三行代码到终端,把 ssid
或 psk
后面括号内替换为你的无线名称和密码)
echo "network={
ssid="ssid_here"
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 来提升读写:
echo "dtparam=sd_overclock=100" | sudo tee --append /boot/config.txt
重启后生效
更改键盘布局:
sudo sed -i -e 's/XKBLAYOUT="gb"/XKBLAYOUT="us"/g' /etc/default/keyboard
更改时区:
sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
使用国内软件源(加快速度)
RASPBIAN 的软件源包括两部分
一个是 /etc/apt/sources.list
,也就是 archive.raspbian.org
替换其为东软的源并屏蔽掉官方源(整个复制下面的三行代码到终端):
sudo sed -i '1 s/^/#/g' /etc/apt/sources.list &&
echo "deb http://mirrors.neusoft.edu.cn/raspbian/raspbian/ jessie main contrib non-free rpi
#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 的反向代理:
sudo sed -i '1 s/^/#/g' /etc/apt/sources.list.d/raspi.list &&
echo "deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/ jessie main ui
#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 的反向代理来加快访问速度
更新系统软件:
sudo apt-get update&&sudo apt-get upgrade -y
(可选)之后重启
sudo reboot
curl -sSL https://get.docker.com | sh
依赖:
sudo apt-get update &&
sudo apt-get install apt-transport-https ca-certificates
sudo apt-key adv \
--keyserver hkp://ha.pool.sks-keyservers.net:80 \
--recv-keys 58118E89F3A912897C070ADBF76221572C52609D
添加源:
sudo 'cat > /etc/apt/sources.list.d/docker.list << "EOF"
deb http://mirrors.ustc.edu.cn/docker/apt/repo raspbian-jessie main
EOF'
安装 docker-engine:
sudo apt-get update &&
sudo apt-get install docker-engine
sudo service docker start
不需 sudo
运行 docker:
sudo groupadd docker &&
sudo usermod -aG docker $USER &&
sudo service docker restart
如果碰到这样的故障:
'overlay' not found as a supported filesystem on this host. Please ensure kernel is new enough and has overlay support loaded
可以这么解决:
sudo apt-get autoremove --purge docker-engine &&
sudo rm -rfv /var/lib/docker
sudo reboot
sudo apt-get update &&
sudo apt-get install docker-engine
使用 ustclug docker 镜像加速访问 docker hub:
sudo bash -c 'cat > /etc/docker/daemon.json << "EOF"
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
EOF'
sudo service docker restart
安装 docker web 管理页面 portainer:
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:
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"
指定授予用户读写权限
docker run -d \
-p 137:137/udp \
-p 138:138/udp \
-p 139:139 \
-p 445:445 \
-p 445:445/udp \
--restart='always' \
--hostname 'black-pearl' \
-v /home/pirate:/share \
--name samba dastrasmue/rpi-samba:v3 \
-u "pirate:hypriot" \
-s "share:/share:rw:pirate"
aria2:
在 webui-aria2 的 github 页面有 build 集成 aria2 及 webui-aria2 的说明
多数软件官方并没有提供 arm 架构的支持,而且也不能直接使用它们的 image,这是因为 base images 不同,可以参照 x86 版本的 Dockerfile 自己写
alpine: hypriot/rpi-alpine-scratch
raspbian: resin/rpi-raspbian
更多 base images 可以在上面两个用户的 repos 里面找:
https://github.com/vimagick/dockerfiles
列出 container:
docker ps -a
列出 image:
docker images
删除 container:
docker rm -f <NAME>
删除 image(需先停止相关的 container):
docker rmi ID
重启之后启动 container:
docker start CONTAINER ID
如果想重启之后让 container 自启动,可以添加启用服务时候添加 --restart=always
参数
更多命令参见其官方文档