How to Install Docker on Debian/zh
From FriendlyELEC WiKi
Contents
1 安装前的检查和准备
Docker现在推荐使用的存储驱动是Overlay2, 而由于根文件系统已经使用了OverlayFS, 所以可能无法直接安装,需要对分区作些调整,有如下两种调整方法, 下面将分别说明这两种方法,请根据需要选择其中一种:
- 方法1
- 让根文件系统不再使用OverlayFS (缺点: 恢复出厂设置的功能将无法工作);
- 方法2
- 根文件系统继续使用OverlayFS, 创建一个额外的分区存放docker数据;
注意事项:
- 此操作会擦除用户数据,需要预先备份好数据
- 需要将固件更新至2023/03/14或之后的版本,或者单独更新boot.img
- 命令中出现的/dev/mmcblkX设备节点是虚构的节点,需要改成真实的设备,eMMC的设备节点是/dev/mmcblk2,TF卡的设备节点是/dev/mmcblk0
2 方法1: 让根文件系统不使用OverlayFS
- 写特定内容到 /.init_wipedata 后重启
sudo passwd root # 为root用户创建密码,如果之前没有做 su - root -c 'echo "overlayfs=disable" > /.init_wipedata' sudo reboot
- 重启后,使用parted命令查看当前的分区布局,正常情况下,可以看到根系统是以ext4格式挂载的,而不是之前的overlay:
sudo apt update sudo apt install parted export DEV=/dev/mmcblkX sudo parted -s ${DEV} unit MiB print
3 方法2: 创建一个额外的分区用于docker
- 查看当前的分区布局
sudo apt update sudo apt install parted fdisk export DEV=/dev/mmcblkX sudo parted -s ${DEV} unit MiB print
- 调整userdata分区的大小
这里以调整为8G大小为例:
sudo passwd root # 为root用户创建密码,如果之前没有做 su - root -c 'echo "overlayfs=enable userdata=8096" > /.init_wipedata' sudo reboot
重启后, 正常情况下,可以看到userdata分区已调整为8GB:
sudo parted -s ${DEV} unit MiB print
- 创建新分区并格式化
(echo n; echo ""; echo ""; echo ""; echo w) | sudo fdisk ${DEV} NUM=$(sudo parted ${DEV} print | awk 'NF > 1 {p = $1} END {print p}') # 获取最后一个分区的序号 sudo mkfs.ext4 ${DEV}p${NUM}
- 挂载新分区到docker数据目录
sudo mkdir /var/lib/docker sudo blkid ${DEV}p${NUM} # 配置开机自动挂载新创建的分区 sudo vi /etc/fstab # 在文件末尾加入如下内容(其中UUID需替换为真实的) UUID=2efab5a5-8b74-41d2-8747-4c00fff8514a /var/lib/docker ext4 suid,dev,exec,auto,nouser,async,noatime,nofail 0 0 sudo mount /var/lib/docker
4 安装docker
- 因Docker安装程序需要使用iptables, 而Debian默认使用的是nftables, 因此安装前先设置Debian使用传统的iptables:
command -v nft &> /dev/null && sudo update-alternatives --set iptables /usr/sbin/iptables-legacy command -v nft &> /dev/null && sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
- 开始安装Docker:
sudo apt install curl ca-certificates uidmap curl -fsSL https://get.docker.com | bash
- 验证是否安装成功:
sudo docker info
- 看看Docker是否使用了overlay2存储驱动:
$ docker info | grep storage -i Storage Driver: overlay2
5 配置非root用户使用docker
sudo groupadd docker sudo gpasswd -a ${USER} docker sudo systemctl restart docker sudo chmod a+rw /var/run/docker.sock
验证是否成功:
docker images
6 测试运行docker映像: 安装nextcloud网盘
mkdir ~/nextcloud -p docker run -d -p 8888:80 --name nextcloud -v ~/nextcloud/:/var/www/html/ --restart=always --privileged=true arm64v8/nextcloud
安装完成后, 在电脑浏览器上访问: http://设备IP地址:8888, 即可查看nextcloud网盘页面。