当前位置: 首页 > news >正文

使用DockerFile一键创建自定义linux开发环境

1,使用dcokerfile文件构建镜像,参考如下文件

    # 使用ubuntu:20.04镜像作为基础
FROM ubuntu:20.04# 调整时区
ENV DEBIAN_FRONTEND=noninteractive TZ=Asia/Shanghai# build参数
ARG user=xiang usergroup=duo# 设置默认工作路径
WORKDIR /home/${user}# 拷贝主机的目录内容
#COPY /home/* /home/# 添加普通用户组
RUN groupadd -g 1000 ${usergroup} && \# 添加普通用户useradd --system --create-home --no-log-init --uid 1000 --groups ${usergroup} --shell /bin/bash ${user} && \adduser ${user} sudo && \# 给创建的用户设置密码,密码为12345678echo "${user}:12345678" | chpasswd && \# 复制pip国内源配置至普通用户mkdir /home/xiang/.pip && \echo '[global]' >> /home/xiang/.pip/pip.conf && \echo 'ndex-url=http://mirrors.aliyun.com/pypi/simple/' >> /home/xiang/.pip/pip.conf && \echo '[install]' >> /home/xiang/.pip/pip.conf && \echo 'trusted-host=mirrors.aliyun.com' >> /home/xiang/.pip/pip.conf && \# 修改系统软件包国内源sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list && \sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list && \# 安装常见软件库apt-get update && apt-get install -y sudo tzdata vim pkg-config build-essential ninja-build automake autoconf libtool wget curl git gcc libssl-dev bc slib squashfs-tools android-sdk-libsparse-utils jq python3-distutils scons parallel tree python3-dev python3-pip device-tree-compiler ssh cpio fakeroot libncurses5 flex bison libncurses5-dev genext2fs rsync unzip dosfstools mtools tclsh ssh-client android-sdk-ext4-utils && \# 安装高版本的Cmakewget -P /home https://github.com/Kitware/CMake/releases/download/v3.26.4/cmake-3.26.4-linux-x86_64.sh && \chmod +x /home/cmake-3.26.4-linux-x86_64.sh && \sh /home/cmake-3.26.4-linux-x86_64.sh --skip-license --prefix=/usr/ && \# 清理缓存,减少镜像体积apt-get clean# 容器创建后,默认登陆以bash作为登陆环境
CMD ["/bin/bash"]

我这个也是参考网上大佬改的使用Docker搭建基于Ubuntu22.04的milk-v duo开发环境 - Duo - MilkV Community,都有注释,可以自己看着修改。

使用以下命令开始构建

docker build -t futurea/duo_env -f ./duo_env.Dockerfile --network host  .

2,启动容器

docker run --name duo -it -u xiang -v /dev:/dev --privileged -v $(pwd):/home/duo -w /home futurea/duo_env

run指令解释:

  • -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

  • -d: 后台运行容器,并返回容器ID;

  • -i: 以交互模式运行容器,通常与 -t 同时使用;

  • -P: 随机端口映射,容器内部端口随机映射到主机的端口

  • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口

  • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

  • -u:指定启动的用户

  • --name="nginx-lb": 为容器指定一个名称;

  • --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

  • --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

  • -h "mars": 指定容器的hostname;

  • -e username="ritchie": 设置环境变量;

  • --env-file=[]: 从指定文件读入环境变量;

  • --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;

  • -m :设置容器使用内存最大值;

  • --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

  • --link=[]: 添加链接到另一个容器;

  • --expose=[]: 开放一个端口或一组端口;

  • --volume , -v: 绑定一个卷

3,当我们退出想重新进入使用以下命令

docker exec -it -u xiang duo bash

4,如果报错说容器没有启动,那么我们使用以下命令,然后再进入容器

docker start duo

5,编译

容器启动后即可进行编译了,环境已经全部搭建完成了。

相关文章:

使用DockerFile一键创建自定义linux开发环境

1,使用dcokerfile文件构建镜像,参考如下文件 # 使用ubuntu:20.04镜像作为基础 FROM ubuntu:20.04# 调整时区 ENV DEBIAN_FRONTENDnoninteractive TZAsia/Shanghai# build参数 ARG userxiang usergroupduo# 设置默认工作路径 WORKDIR /home/${user}# 拷贝…...

“深入探索JVM:解密Java虚拟机的工作原理“

标题:深入探索JVM:解密Java虚拟机的工作原理 摘要:本文将深入探索Java虚拟机(JVM)的工作原理,从字节码到实际执行过程,从内存管理到垃圾回收等方面进行解析,帮助读者更好地理解和优…...

【华为OD机试】数字最低位排序【2023 B卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 给定一个非空数组(列表) 起元素数据类型为整型 请按照数组元素十进制最低位从小到大进行排序 十进制最低位相同的元素,相对位置保持不变 当数组元素为负值时,十进制最低为等同于去除符号…...

【Odoo16前端源码分析】xml模板的加载

一、模板内容的来源 情况A,组件类的template属性,比如ActionContainer.template /* odoo/addons/web/static/src/webclient/actions/action_container.js */export class ActionContainer extends Component {setup() {..} } .. ActionContainer.templ…...

Open3D (C++) 计算矩阵的广义逆

目录 一、算法原理1、广义逆2、计算过程二、代码实现三、结果展示四、参考链接本文由CSDN点云侠原创,原文链接。爬虫网站自重,把自己当个人,爬些不完整的误导别人有意思吗???? 一、算法原理 1、广义逆 非方阵不存在逆,但是存在广义逆(伪逆)。对于一个矩阵...

11.物联网操作系统内存管理

一。STM32编译过程及程序组成 STM32编译过程 程序的组成、存储与运行 MDK生成的主要文件分析 1.STM32编译过程 1.源文件(Source code)--》目标文件(Object code) .c(C语言)通过armcc生成.o,.s(汇编&…...

举办活动发布会,如何得到媒体支持?

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 举办活动发布会并得到媒体报道的支持是一个关键的宣传和推广手段。以下是一些建议,帮助你增加吸引媒体关注和报道的机会: 1. 策划新闻价值:确保你的发…...

1139 First Contact(unique函数,string.substr()函数)

PTA | 程序设计类实验辅助教学平台 用map套个set来实现邻接表&#xff08;排序都免了&#xff09; #include<bits/stdc.h> using namespace std; int n,m,k; string a,b; map<string,set<string>>mp; int main() {cin.tie(0);cin >> n >> m;fo…...

Python元编程-装饰器介绍、使用

目录 一、Python元编程装饰器介绍 二、装饰器使用 1. 实现认证和授权功能 2.实现缓存功能 3.实现日志输出功能 三、附录 1. logging.basicConfig介绍 2. 精确到毫秒&#xff0c;打印时间 方法一&#xff1a;使用datetime 方法二&#xff1a;使用time 一、Python元编程…...

python进程池的使用

进程池的创建 apply() apply()方法用于向进程池提交一个任务&#xff0c;并等待任务完成并返回结果。 apply_async() apply_async()方法用于向进程池提交一个异步任务&#xff08;即无需等待任务完成&#xff09;&#xff0c;将任务加入到进程池的队列里&#xff0c;并立即…...

Dockerfile构建lamp镜像

1、构建目录 [rootdocker ~]# mkdir compose_lamp [rootdocker ~]# cd compose_lamp/ 2、编写Docekerfile [rootdocker compose_lamp]# vim Dockerfile #基础镜像 FROM centos:7#维护该镜像的用户信息 MAINTAINER Crushlinux <crushlinux163.com>#安装httpd RUN yum -…...

LeetCode724. 寻找数组的中心下标

题干 给你一个整数数组 nums &#xff0c;请计算数组的 中心下标 。 数组 中心下标 是数组的一个下标&#xff0c;其左侧所有元素相加的和等于右侧所有元素相加的和。 如果中心下标位于数组最左端&#xff0c;那么左侧数之和视为 0 &#xff0c;因为在下标的左侧不存在元素。…...

【云计算 | Docker】Docker容器后台运行不了?entrypoint在作妖?

1. 问题 使用镜像alpine起个容器&#xff0c;使其保持后台运行&#xff0c;正常情况有如下的效果&#xff0c;可以发现容器保持运行状态。 [rootk8s-master helloWorld]# docker run -dit docker.io/alpine /bin/sh 8d39d7579d5e4f1a560aef16ba57ab5cae2506ea9105e21cbc0634…...

DAY02_Spring第三方资源配置管理Spring容器Spring注解开发Spring整合Mybatis和Junit

目录 一 第三方资源配置管理1 管理DataSource连接池对象问题导入1.1 管理Druid连接池1.2 管理c3p0连接池 2 加载properties属性文件问题导入2.1 基本用法2.2 配置不加载系统属性2.3 加载properties文件写法 二 Spring容器1 Spring核心容器介绍问题导入1.1 创建容器1.2 获取bean…...

烘焙小程序蛋糕店烘焙店源码点心店小程序源码

本系统开发使用JAVA技术栈开发 使用uniapp技术栈 支持微信小程序 &#xff0c;对接打印机&#xff0c;对接第三方同城跑腿平台 用户端使用&#xff1a;uniapp 管理端使用&#xff1a;vueelementui 后台服务使用&#xff1a;springbootjpa...

HarmonyOS 开发基础(五)对用户名做点啥

一、实现用户名检验 条件渲染 、生命周期 1.规定用户名长度 2.限定使用的数字及字母&#xff08;涉及正则表达&#xff09; // 导出方式直接从文件夹 import MyInput from "../common/commons/myInput" Entry Component /* 组件可以基于struct实现&#xff0c;组件…...

【前端】搭建Vue3框架

目录 一、搭建准备二、node.js安装1、下载并安装2、配置默认安装目录和缓存日志目录①、创建默认安装目录和缓存日志目录&#xff08;我的node.js目录在D盘&#xff0c;所以直接在node.js文件夹下创建&#xff09;②、执行命令&#xff0c;配置默认安装目录和缓存日志目录到刚才…...

Opencv-C++笔记 (15) : 像素重映射 与 图像扭曲

文章目录 一、重映射简介二、图像扭曲 一、重映射简介 重映射&#xff0c;就是把一幅图像中某位置的像素放置到另一图像指定位置的过程。即&#xff1a; 在重映射过程中&#xff0c;图像的大小也可以同时发生改变。此时像素与像素之间的关系就不是一一对应关系&#xff0c;因…...

【Java】UWB高精度工业人员安全定位系统源码

基于VueSpring boot前后端分离架构开发的一套UWB技术高精度定位系统源码。 UWB高精度人员定位系统提供实时定位、电子围栏、轨迹回放等基础功能以及各种拓展功能,用户可根据实际需要任意选择搭配拓展功能。该系统简易部署&#xff0c;方便使用&#xff0c;实时响应。UWB高精度定…...

文本NLP噪音预处理(加拼写检查)

最近总结修改了下预处理方法&#xff0c;记录下 首先download需要的依赖 pip install pyenchantpip install nltk pyenchant 是用来检测拼写正确的&#xff0c;如果你的文本里面可能包含非正确拼写的单词&#xff0c;那就忽略它&#xff0c;nltk用来做分词的。 python -m nlt…...

Cursor Free VIP:三步解锁AI编程助手完整功能的终极指南

Cursor Free VIP&#xff1a;三步解锁AI编程助手完整功能的终极指南 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your t…...

用PyTorch和TorchText搞定AG_NEWS新闻分类:从数据加载到75%准确率的保姆级代码

用PyTorch和TorchText实现AG_NEWS新闻分类&#xff1a;从零到75%准确率的完整指南 当你第一次接触文本分类任务时&#xff0c;可能会被数据处理和模型构建的复杂性吓到。本文将带你用PyTorch和TorchText从零开始构建一个新闻分类器&#xff0c;无需任何先验知识&#xff0c;只需…...

Mac Mouse Fix:让普通鼠标释放专业级生产力

Mac Mouse Fix&#xff1a;让普通鼠标释放专业级生产力 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 还在忍受MacOS下鼠标滚动卡顿、侧键功能…...

node2vec在Spark上的分布式实现:处理大规模图的终极解决方案

node2vec在Spark上的分布式实现&#xff1a;处理大规模图的终极解决方案 【免费下载链接】node2vec 项目地址: https://gitcode.com/gh_mirrors/no/node2vec 想要处理包含数千万甚至上亿节点的大规模图网络数据吗&#xff1f;node2vec在Spark上的分布式实现为你提供了处…...

Windows用户福音:不用Mac也能搞定uniapp的iOS证书和Profile文件(附详细截图)

Windows平台下高效生成uniapp iOS证书与Profile文件的完整指南 对于许多使用uniapp进行跨平台开发的Windows用户而言&#xff0c;iOS证书和Profile文件的生成一直是个令人头疼的问题。传统方法要求开发者必须拥有Mac设备&#xff0c;这无疑增加了开发门槛和成本。但事实上&…...

麒麟kylinV10系统yum源优化与rpm包管理实战

1. 麒麟kylinV10系统yum源优化实战 第一次用麒麟kylinV10系统时&#xff0c;最让我头疼的就是默认yum源速度慢得像蜗牛。记得有次安装个基础开发工具&#xff0c;等了半小时进度条才动了一点点。后来发现通过优化yum源配置&#xff0c;下载速度能提升10倍不止。下面就把我这几年…...

Wan2.2-T2V-A5B在自媒体场景实战:批量生成诗意文案短视频

Wan2.2-T2V-A5B在自媒体场景实战&#xff1a;批量生成诗意文案短视频 1. 为什么自媒体需要轻量级视频生成工具 在内容创作领域&#xff0c;短视频已经成为最主流的内容形式之一。特别是结合诗意文案的短视频&#xff0c;在各大平台都拥有极高的用户粘性和传播度。然而&#x…...

OpenClaw权限管控:安全使用SecGPT-14B的5条黄金法则

OpenClaw权限管控&#xff1a;安全使用SecGPT-14B的5条黄金法则 1. 为什么需要特别关注OpenClaw的权限安全&#xff1f; 去年我在调试一个自动整理文档的OpenClaw任务时&#xff0c;曾不小心让AI助手误删了整个工作目录——仅仅因为我在配置时勾选了"允许文件删除"…...

Qwen3-TTS在VSCode中的开发调试技巧:从语音克隆到音色设计

Qwen3-TTS在VSCode中的开发调试技巧&#xff1a;从语音克隆到音色设计 1. 开发环境搭建 1.1 Python虚拟环境配置 在VSCode中开发Qwen3-TTS项目&#xff0c;首先需要配置合适的Python环境。推荐使用conda或venv创建独立的虚拟环境&#xff0c;避免依赖冲突。 # 使用conda创建…...

蓝桥杯二分算法通关指南:模板+真题+避坑,O(logn)秒杀大数据题

蓝桥杯二分算法通关指南&#xff1a;模板真题避坑&#xff0c;O(logn)秒杀大数据题 文章目录蓝桥杯二分算法通关指南&#xff1a;模板真题避坑&#xff0c;O(logn)秒杀大数据题一、蓝桥杯二分核心题型&#xff08;精简必背&#xff09;1. 二分查找&#xff08;基础必考&#xf…...