SOM-RK3399基于Debian系统安装Docker

Docker 是一个开源的平台,用于开发、部署和运行应用程序。它通过容器技术使得应用程序能够在任何环境下以一致的方式运行,解决了“环境不一致”导致的问题。

我们这里使用创建一个额外的分区用于docker的方法

查看当前分区,sudo parted -s ${DEV} unit MiB print会以 MiB 为单位显示设备的分区表,帮助你了解设备上的各个分区及其大小。

sudo apt update
sudo apt install parted fdisk
export DEV=/dev/mmcblk2 # 需要改成真实的设备
						# eMMC的设备节点是/dev/mmcblk2,TF卡的设备节点是/dev/mmcblk0
sudo parted -s ${DEV} unit MiB print

调整userdata分区大小

sudo passwd root  # 为root用户创建密码,如果之前没有做
su - root -c 'echo "overlayfs=enable userdata=8096" > /.init_wipedata'
sudo reboot

su - root -c 'echo "overlayfs=enable userdata=8096" > /.init_wipedata'
su - root: 切换到 root 用户的环境(包括所有环境变量)。
-c 'command': 这个选项让 su 执行一个特定的命令并立即退出,不会切换到 root 的交互式 shell。
'echo "overlayfs=enable userdata=8096" > /.init_wipedata': 这是实际要执行的命令。它会将 "overlayfs=enable userdata=8096" 这段内容写入到根目录下的 /.init_wipedata 文件中。这个文件通常用于保存系统启动时的某些配置或指令。
overlayfs=enable: 表示启用 overlayfs,这是一种文件系统,用于在不修改底层文件系统的情况下对文件系统进行更改。
userdata=8096 指定用户数据分区大小或其他相关参数。

在次查看分区大小,可以观察到userdata分区变为8G

export DEV=/dev/mmcblk2  # 需要改成真实的设备
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}

(echo n; echo ""; echo ""; echo ""; echo w) | sudo fdisk ${DEV}:
echo n: 这是 fdisk 命令的输入,用于创建一个新分区。
echo "": 这些空的 echo 命令相当于按回车键,用于选择默认值。具体来说,这些输入选择了默认的分区编号、默认的起始扇区和默认的结束扇区。
echo w: 这一步用于将修改写入磁盘,并退出 fdisk
整个命令通过管道 (|) 传递给 fdisk,用于自动化地执行分区创建操作。

NUM=$(sudo parted ${DEV} print | awk 'NF > 1 {p = $1} END {print p}'):
sudo parted ${DEV} print: 打印指定设备上现有的分区表。
awk 'NF > 1 {p = $1} END {print p}': 这个 awk 命令用于解析 parted 输出的分区信息,并获取最后一个分区的编号,将其存储在 NUM 变量中。

sudo mkfs.ext4 ${DEV}p${NUM}记录这里的UUID
mkfs.ext4 是一个用于在分区上创建 ext4 文件系统的命令。
${DEV}p${NUM} 是你指定的分区路径,其中 ${DEV} 是设备路径(如 /dev/mmcblk2),${NUM} 是新创建的分区编号。

挂载新分区到docker数据目录

sudo mkdir /var/lib/docker
sudo blkid ${DEV}p${NUM}
# 记下UUID
# 配置开机自动挂载新创建的分区
sudo vi /etc/fstab
# 在文件末尾加入如下内容(其中UUID需替换为真实的)
UUID=5246a7c1-c13a-4586-a001-fa740b84ff4d /var/lib/docker ext4 suid,dev,exec,auto,nouser,async,noatime,nofail 0 0
# 输入以下命令挂载分区
sudo mount /var/lib/docker

安装docker
因Docker安装程序需要使用iptables, 而Debian默认使用的是nftables, 因此安装前先设置Debian使用传统的iptables: 切换系统使用的 iptables 和 ip6tables 实现版本

[ -f /usr/sbin/iptables-legacy ] && sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
[ -f /usr/sbin/ip6tables-legacy ] && sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
sudo apt install lsb-release wget
codename=$(lsb_release -c | awk '{print $2}')
version=$(lsb_release -sr | cut -d'.' -f1)
wget https://download.docker.com/linux/debian/dists/${codename}/pool/stable/arm64/containerd.io_1.6.24-1_arm64.deb
wget https://download.docker.com/linux/debian/dists/${codename}/pool/stable/arm64/docker-ce-cli_24.0.6-1~debian.${version}~${codename}_arm64.deb
wget https://download.docker.com/linux/debian/dists/${codename}/pool/stable/arm64/docker-buildx-plugin_0.11.2-1~debian.${version}~${codename}_arm64.deb
wget https://download.docker.com/linux/debian/dists/${codename}/pool/stable/arm64/docker-ce_24.0.6-1~debian.${version}~${codename}_arm64.deb
wget https://download.docker.com/linux/debian/dists/${codename}/pool/stable/arm64/docker-compose-plugin_2.21.0-1~debian.11~${codename}_arm64.deb
sudo apt install ./containerd.io_1.6.24-1_arm64.deb \
  ./docker-ce_24.0.6-1~debian.${version}~${codename}_arm64.deb \
  ./docker-ce-cli_24.0.6-1~debian.${version}~${codename}_arm64.deb \
  ./docker-buildx-plugin_0.11.2-1~debian.${version}~${codename}_arm64.deb \
  ./docker-compose-plugin_2.21.0-1~debian.11~${codename}_arm64.deb

${codename} 是一个变量,代表你的 Debian 版本的代号。例如,如果你使用的是 Debian Bullseye,那么${codename}就是 bullseye。
这里的软件包如果因为网络问题安装不上可选择本地安装,从网站下载.deb包。
在这里插入图片描述
pool/:存放软件包的目录。

验证是否安装成功

sudo docker info
sudo docker info | grep storage -i

配置非root用户使用docker

sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo systemctl restart docker
sudo chmod a+rw /var/run/docker.sock
docker images #验证

参考 https://blog.csdn.net/Dontla/article/details/131855662

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ANIMZLS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值