客户要求在rk3399上安装docker,搜了很久资料有限,东平四凑,花了几天时间才搞定,分享下吧,给需要的人

1 docker 安装
本文档适合 rk3399debian 平台,其他平台若要使用,请谨慎参考。安装之前请先确认
板子能否正常连接网络,安装所需要的一切安装包都是通过网络下载。另外,一切命令都是
通过串口输入(也可以通过 ssh 网络操作),本系统暂不支持 adb 输入。
1.1 配置 kernel
由于瑞芯微平台默认不支持 docker 容器,所以需要打开 kernel 中相关 docker 配置,即
修改 rk3399v1debian/kernel/arch/arm64/configs/ rockchip_linux_defconfig,修改后,重新编译
烧写即可,此步骤略,具体修改如下:
CONFIG_POSIX_MQUEUE=y
CONFIG_CGROUP_PIDS=y
CONFIG_MEMCG=y
CONFIG_MEMCG_SWAP=y
CONFIG_CGROUP_PERF=y
CONFIG_RT_GROUP_SCHED=y
CONFIG_BLK_CGROUP=y
CONFIG_BLK_DEV_THROTTLING=y
CONFIG_CFQ_GROUP_IOSCHED=y
CONFIG_INET_ESP=y
CONFIG_NETFILTER=y
CONFIG_BRIDGE_NETFILTER=y
CONFIG_NF_CONNTRACK=y
CONFIG_NF_CONNTRACK_FTP=y
CONFIG_NF_CONNTRACK_TFTP=y
CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
CONFIG_NETFILTER_XT_MATCH_IPVS=y
CONFIG_IP_VS=y
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_VS_RR=y
CONFIG_IP_VS_NFCT=y
CONFIG_NF_CONNTRACK_IPV4=y
CONFIG_IP_NF_IPTABLES=y
CONFIG_IP_NF_FILTER=y
CONFIG_IP_NF_NAT=y
CONFIG_IP_NF_TARGET_MASQUERADE=y
CONFIG_IP_NF_TARGET_REDIRECT=y
CONFIG_BRIDGE=y
CONFIG_CGROUP_NET_PRIO=y
CONFIG_DUMMY=y
CONFIG_MACVLAN=y
CONFIG_IPVLAN=y
CONFIG_VXLAN=y
CONFIG_VETH=y
CONFIG_BTRFS_FS=y
CONFIG_BTRFS_FS_POSIX_ACL=y
CONFIG_AUTOFS4_FS=y
CONFIG_OVERLAY_FS=y
CONFIG_SQUASHFS_LZ4=y
CONFIG_SQUASHFS_LZO=y
CONFIG_SQUASHFS_XZ=y
1.2 docker 安装 指令
1.2.1 连接串口,波特率 1500000 :

rk3399 docker rk3399 docker 内核_linux


1.2.2 具体指令如下:

apt-get update

apt-get install apt-transport-https

apt-get install ca-certificates

apt-get install curl

apt-get install gnupg2

apt-get install software-properties-common

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add –

apt-key fingerprint 0EBFCD88

注:相关命令网址:https://docs.docker.com/install/linux/docker-ce/debian/

1.2.3 下载 r docker 安装包:

wget https://download.docker.com/linux/debian/dists/stretch/pool/stable/arm64/

containerd.io_1.2.6-3_arm64.deb

wget https://download.docker.com/linux/debian/dists/stretch/pool/stable/arm64/

docker-ce-cli_19.03.2~3-0~debian-stretch_arm64.deb

wget https://download.docker.com/linux/debian/dists/stretch/pool/stable/arm64/

docker-ce_19.03.2~3-0~debian-stretch_arm64.deb

注:docker 下载网址: https://download.docker.com/linux/debian/dists/stretch/pool/stable/arm64/

1.2.4 安装 docker: :

dpkg -i containerd.io_1.2.6-3_arm64.deb

dpkg -i docker-ce-cli_19.03.2~3-0~debian-stretch_arm64.deb

dpkg -i docker-ce_19.03.2~3-0~debian-stretch_arm64.deb

1.2.5 测试 docker:

输入指令,出现下图表示 docker 安装成功:

docker run hello-world

rk3399 docker rk3399 docker 内核_docker_02

2 在 在 docker 中 中安装 安装 ubuntu18.04

2.1 下载 ubuntu18.04 :

docker pull arm64v8/ubuntu:18.04

2.2 docker 测试 ubuntu18.04

docker run --device=/dev/videox:/dev/videox -d -it --privileged --name test-ubuntu

arm64v8/ubuntu:18.04 /bin/bash

注:执行 docker ps -n 5 videox 中的 x 根据挂载的 usb 摄像头产生节点动态修改。

出现下面红框中的信息,说明 ducker 中安装 ubuntu18.04 成功

rk3399 docker rk3399 docker 内核_linux_03


2.3 启动 ubuntu18.04

docker exec -it test-ubuntu /bin/bash

注:执行 cat /etc/issue

出现如下界面说明进入 ubuntu18.04 成功:

rk3399 docker rk3399 docker 内核_ubuntu_04


3 安装 dlib

3.1 安装依赖的软件包

apt-get update

apt-get install python

apt-get install python-pip

apt-get install pkg-config

apt-get install libopenblas-dev

apt-get install liblapack-dev

apt-get install cmake

apt-get install libboost-all-dev

3.2 下载 dlib

3.2.1 安装 git:

apt-get install git

b 3.2.2 github 上克隆

方法如下:

cd ~

git clone https://github.com/davisking/dlib.git

cd dlib/tools/python

mkdir build

cd build/

cmake ..

make –j8

如果出现如下错误,需要增加 swap space,如下操作:

创建空文件

dd if=/dev/zero of=/media/swapfile.img bs=1024 count=1M

生成文件交换系统

mkswap /media/swapfile.img

设置开机启动

# Add this line to /etc/fstab

vim /etc/fstab

//加入

/media/swapfile.img swap swap sw 0 0

激活

swapon /media/swapfile.img

验证是否成功

cat /proc/swaps

grep 'Swap' /proc/meminfo

注:地址 https://www.jianshu.com/p/901399e0e44b

rk3399 docker rk3399 docker 内核_ubuntu_05


3.2.3 导入 b dlib 到 python

cd ~/dlib

python setup.py install

python

import dlib as dlib

如下图:

rk3399 docker rk3399 docker 内核_ubuntu_06


4 安装 opencv

4.1 安装依赖的软件包

apt-get install build-essential

apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev

libswscale-dev

apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev

libtiff-dev libjasper-dev libdc1394-22-dev

apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

liblapacke-dev

apt-get install libxvidcore-dev libx264-dev

apt-get install libatlas-base-dev gfortran

apt-get install ffmpeg

apt-get install python-opencv

4.2 下载编译 opencv 源码

下载:cd ~

wget https://github.com/opencv/opencv/archive/3.4.7.zip

解压:unzip 3.4.7.zip

编译:cd opencv-3.4.7/

mkdir build

cd build/

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

make -j4

安装:make install

设置库文件路径:vi /etc/ld.so.conf.d/opencv.conf

写入:/usr/local/lib

生效:ldconfig

添加环境变量:vi /etc/profile

写入:PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig

export PKG_CONFIG_PATH

生效:source /etc/profile

测试:cd opencv-3.4.7/samples/cpp/example_cmake

cmake .

make

ls

如果有如下图红框内所示文件说明 opencv 安装成功

rk3399 docker rk3399 docker 内核_rk3399 docker_07


4.3 导入 opencv 到 到 python

具体导入方法如下:

命令行输入: python

命令行导入:import cv2

如下图所示说明导入成功:

rk3399 docker rk3399 docker 内核_ubuntu_08


5 安装 tensorflow

5.1 下载软件包:

wget

https://github.com/lhelontra/tensorflow-on-arm/releases/download/v1.14.0-buster/tensorflow- 1.14.0-cp27-none-linux_aarch64.whl

5.2 安装 :

apt-get update

apt-get install python

apt-get install python-pip

apt-get install pkg-config

apt-get install python3-pip

pip2 install tensorflow-1.14.0-cp27-none-linux_aarch64.whl

rk3399 docker rk3399 docker 内核_ubuntu_09


5.3 测试:

测试命令如下:

命令行输入 python,再在 python 中输入一下命令,出现 Hello, TensorFlow! 表

示 TensorFlow 安装成功。

具体操作如下:

python

import tensorflow

hello = tensorflow.constant('Hello, TensorFlow!')

sess = tensorflow.Session()

sess.run(hello)

入下图所示:

rk3399 docker rk3399 docker 内核_rk3399 docker_10


修改记录: