搭建Docker开发环境_Linux

2023-09-19 23:36:17

环境搭建

Docker

sudo apt  install docker.io

Docker运行权限

#添加docker group
sudo groupadd docker# 将当前用户添加到docker组
sudo gpasswd -a ${USER} docker# 重启docker服务:
sudo service docker restart
​
# 查看用户组及成员:
cat /etc/group | grep docker

Docker加速

# 编辑 Docker 配置文件
$ sudo vim /etc/docker/daemon.json
​
# 加入以下配置项
{
    "registry-mirrors": [
        "https://dockerproxy.com",
        "https://hub-mirror.c.163.com",
        "https://mirror.baidubce.com",
        "https://ccr.ccs.tencentyun.com"
    ]
}# 重启docker
$ sudo service docker restart

Docker容器创建

# 推荐:Ubuntu 18.04 版本  
# 拉取Ubuntu镜像
docker pull ubuntu:18.04

# 进入关联源码目录挂载使用绝对路径,启动Docker
cd ~
docker run -it -v ${PWD}:${PWD} --privileged --name Ubuntu18_Lubancat2 ubuntu:18.04

# 环境依赖
apt-get update

# Docker 补充
apt install -y bc time rsync curl vim sudo

# 安装 SDK 构建所需要的软件包
apt install -y git ssh make gcc libssl-dev liblz4-tool u-boot-tools curl \
expect g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support \
qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g++-multilib \
unzip device-tree-compiler python-pip libncurses5-dev python3-pyelftools \
dpkg-dev

# 添加用户
adduser gaoyang3513

# 为用户username添加sudo权限
sudo usermod -a -G sudo gaoyang3513

# sudo 免密,在sudoer.d目录新建docker-nopasswd
#    添加内容:gaoyang3513 ALL=(ALL) NOPASSWD: ALL
sudo visudo /etc/sudoers.d/docker-nopassswd

# 切换用户
su gaoyang3513

Python版本切换

# 添加,优先python3
update-alternatives --install /usr/bin/python python /usr/bin/python2 100
update-alternatives --install /usr/bin/python python /usr/bin/python3 150# 切换
update-alternatives --config python

版本工具

Repo

# 环境配置
mkdir -p ~/.local/bin/
export PATH=~/.local/bin/:$PATH

# 下载
curl https://storage.googleapis.com/git-repo-downloads/repo > .local/bin/repo

# 权限
chmod a+x .local/bin/repo

# 生效
source .profile

Git

git config --global user.name "gaoyang3513"
git config --global user.email "gaoyang3513@163.com"

git config --global core.editor vim

开发

SDK代码拉取

在线
#github地址
repo --trace init --depth=1 --repo-url https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -u https://github.com/LubanCat/manifests.git -b linux -m rk356x_linux_release.xml 

# 同步源码
repo --trace sync -c -j4
离线(推荐)
# 离线SDK,解压
cd SDK_RK3568_Linux_New 
7z x ../../01-Resource/01-鲁班猫/8-SDK源码压缩包/LubanCat_rk356x_Linux_SDK_20230711.7z

repo init --depth=1 -u https://github.com/LubanCat/manifests.git -b linux -m rk356x_linux_release.xml

# 检出.repo 目录下的 git 仓库并同步
repo sync -l -j10
# 不推荐同步
# repo sync -c -j10

Debian

安装软件包

sudo apt install binfmt-support qemu-user-static

# 安装 debian 根文件系统构建依赖的软件包,无视过程报错
sudo dpkg -i debian/ubuntu-build-service/packages/*
sudo apt-get install -f

编译

# 选择目标
#     10. BoardConfig-LubanCat-RK3568-debian-xfce.mk
./build.sh lunch

打包

# 一键编译 u-Boot, kernel, Rootfs, Recovery, 并打包为 update.img 镜像
./build.sh

问题

  • 错误1../build.sh: line 717: /usr/bin/time: No such file or directory
atp instal -y time
  • 错误2. 2023-09-08T01:18:53 You must install 'rsync' on your build machine

    apt install -y rsync
    
  • 错误3. fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle

    # vi ~/bin/repo
    ​
    - REPO_URL = 'https://gerrit.googlesource.com/git-repo'
    + REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
    

    或repo init时参数--repo-url指定,如:--repo-url https://mirrors.tuna.tsinghua.edu.cn/git/git-repo

  • 错误.Failed to run livebuild, please check your network connection.

    if [ -f binary-tar.tar.gz ]; then \
            tar -jcf linaro-buster-alip-`date +%Y%m%d`-1.config.tar.bz2 auto/ config/ configure; \
            sudo mv binary.contents linaro-buster-alip-`date +%Y%m%d`-1.contents; \
            sudo mv chroot.packages.live linaro-buster-alip-`date +%Y%m%d`-1.packages; \
            sudo mv binary-tar.tar.gz linaro-buster-alip-`date +%Y%m%d`-1.tar.gz; \
            md5sum linaro-buster-alip-`date +%Y%m%d`-1.build-log.txt linaro-buster-alip-`date +%Y%m%d`-1.config.tar.bz2 linaro-buster-alip-`date +%Y%m%d`-1.contents linaro-buster-alip-`date +%Y%m%d`-1.packages linaro-buster-alip-`date +%Y%m%d`-1.tar.gz > linaro-buster-alip-`date +%Y%m%d`-1.md5sums.txt; \
            sha1sum linaro-buster-alip-`date +%Y%m%d`-1.build-log.txt linaro-buster-alip-`date +%Y%m%d`-1.config.tar.bz2 linaro-buster-alip-`date +%Y%m%d`-1.contents linaro-buster-alip-`date +%Y%m%d`-1.packages linaro-buster-alip-`date +%Y%m%d`-1.tar.gz > linaro-buster-alip-`date +%Y%m%d`-1.sha1sums.txt; \
    fi
     Failed to run livebuild, please check your network connection. 
    VERSION=none TARGET=xfce SOC=rk356x ./mk-buster-rootfs.sh
    

    直接原因为binary-tar.tar.gz文件未生成,根本原因为qemu中挂载/proc目录失败,解决方案:参考1.docker 中使用mount命令报错:mount: permission denied

技巧

# 新开
docker exec -it Ubuntu20_RK3568 /bin/bash
更多推荐

多线程并发或线程安全问题如何解决

1、通过volatile关键字修饰变量,可以实现线程之间的可见性,避免变量脏读的出现,底层是通过限制jvm指令的重新排序实现的,适用于一个线程修改,多个线程读的场景。2、通过synchronized锁(任意对象)来实现线程同步,自动锁的思想,底层实现原理:当又线程进入同步代码快之后,利用jvm的计数器将锁的标记位置为1

开学季ipad电容笔哪款好?便宜的电容笔推荐

随着数码产品不断地更新和添加新的特性功能,iPad的平板已经可以和笔记本电脑相媲美了。而时至今日,随着技术的进步,ipad已经不再是一款单纯的娱乐设备,而是一款集学习、绘画、办公于一体的功能。为提高生产力,搭配上一款好用的电容笔是很有必要的。随着苹果Pencil的普及,国产平板电脑也在迅速发展,下面我就为大家介绍几款高

抖音矩阵系统-60+自媒体平台一键发布-短视频获客系统

当老板做企业的,想在抖音上做生意的,一定一定要开通蓝V企业号线索版来做矩阵。看看我每天的线索都是999+,客服都接待不过来,现在还有300个客资未分配,抖音都在推了企业员工号的玩法,你还在质疑什么?在抖音上做矩阵,真的能将你的生意放大100倍!你只有一个账号,每天就发一条视频,而我们的客户有几百个账号,每天发上千条视频

软件需求文档、设计文档、开发文档、运维文档大全

在软件开发过程中,文档扮演着至关重要的角色。它不仅记录了项目的需求、设计和开发过程,还为项目的维护和管理提供了便利。本文将详细介绍软件开发文档的重要性和作用,以及需求分析、软件设计、开发过程、运维管理和项目管理等方面的文档要求。引言软件开发文档是一种用于记录、沟通和理解软件开发过程的工具。它不仅提供了软件的详细描述,而

从 AI 代码生成模型到 AI 编程助手应用实战

▼最近直播超级多,预约保你有收获近期直播:《从AI编程助手到AIAgent应用实战》随着科技的发展,软件设计方式也在不断地演进,从最初的面向机器,到面向过程,再到面向对象,面向领域,最后到现在快要成为可能的面向自然语言。在软件设计开发领域,我们一直在探索更高效的开发方式—1—AI编程的发展史AI编程的前身,自动代码生成

OJ练习第178题——收集树中金币

收集树中金币力扣链接:2603.收集树中金币题目描述给你一个n个节点的无向无根树,节点编号从0到n-1。给你整数n和一个长度为n-1的二维整数数组edges,其中edges[i]=[ai,bi]表示树中节点ai和bi之间有一条边。再给你一个长度为n的数组coins,其中coins[i]可能为0也可能为1,1表示节点i处

Linux的Redis集群搭建-主从集群哨兵模式

上次教大家在linux中安装单机版本的redis:Linux安装Redis(图文解说详细版)这次我们讲一下Linux安装redis的集群版本文章目录🌴准备redis环境🌴第一步,下载redis🌴第二步,传输到三台服务器中🌴第三步,解压文件🌴第四步,安装gcc环境🌴第五步,编译🌴第六步,安装🌴主从复制集群

代码随想录算法训练营Day48 (day47休息) | 动态规划(9/17) LeetCode 198.打家劫舍 213.打家劫舍II 337.打家劫舍III

来到了新的一块内容:打家劫舍问题。第一题198.HouseRobberYouareaprofessionalrobberplanningtorobhousesalongastreet.Eachhousehasacertainamountofmoneystashed,theonlyconstraintstoppingyo

S5的未来:即将到来的协议改进和可能性

大家好!在网络通信领域,S5代理协议一直扮演着重要的角色。它的灵活性和功能性使其成为许多应用程序和系统中的首选协议。今天,我将和大家分享关于S5的未来发展,包括即将到来的协议改进和可能性,让我们一起来看看吧!1.协议改进的动力尽管S5在提供代理服务方面表现出色,但仍存在一些限制和改进空间。随着网络技术的不断进步和应用场

TensorFlow框架 -- 入门详解

文章目录引言TensorFlow简介背景特点1.安装和配置1.1安装步骤1.1.1CPU版本1.1.2GPU版本安装:1.2验证安装:2.TensorFlow基础2.1数据类型与结构2.1.1张量(Tensors)2.1.2变量(Variables)2.1.3操作(Operations)2.2计算图(Computati

华为OD机试 - 计算面积 - 逻辑分析(Java 2023 B卷 100分)

目录专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明华为OD机试2023B卷题库疯狂收录中,刷题点这里专栏导读本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题

热文推荐