使用docker在manjaro linux系统上运行windows和ubuntu

因为最近项目必须要使用指定版本的solidworks和maxwell(都只能在win系统上使用), 且目前的ubuntu容器是没有桌面的,导致我运行不了一些带图形的ros2功能。无奈之下,决定使用docker-compose写一下配置文件,彻底解决问题。

docker的基本操作和ros2安装看这篇文章的第一、二个专题:

实验环境搭建集锦-CSDN博客


dockerfile和docker-compose.yml的区别

dockerfile构建镜像,但没有运行镜像。需要用docker run运行

docker-compose.yml构建镜像也运行镜像,更适合多个镜像容器的编辑。编辑后直接使用 sudo docker compose up构建并运行(前提:默认文件名为docker-compose.yml)


使用docker-compose.yml安装windows-in-docker

建立一个docker-compose-win.yml文件

version: "3"
services:windows:image: dockurr/windowscontainer_name: windowsdevices:- /dev/kvmcap_add:- NET_ADMINports:- 8006:8006- 3389:3389/tcp- 3389:3389/udpstop_grace_period: 2mrestart: on-failureenvironment:VERSION: win10RAM_SIZE: 8GCPU_CORES: 4DISK_SIZE: 100G

尽量不要使用下面的目录挂载,没啥用不说,还总给报错。而且putty或者filezilla也是不管用的,因为docker容器本质上都是linux系统,只不过运行的可能会是win/ubuntu/其他。

    volumes: - /mnt/sharedisk/win10:C:\\User

这里开命令行证实一下,docker容器里并没有C:\\User这种路径,只有

如果在主机上运行docker cp,主机上的文件也只会复制到底层linux的文件目录下

docker cp docker-compose-linux.yml windows:/tmp

在宿主机上安装docker-compose并运行:

yay -S docker-compose
sudo docker compose -f docker-compose-win.yml up

如果每次都重新运行一次sudo docker compose -f docker-compose-win.yml up,会更换一个新的container id,但是已经安装好的软件还是会被保留的,因为并没有改变名字或者里面的设置。

所以每次需要打开的时候,直接运行

sudo docker start 容器id

想传输文件/下载的话,我一般会用百度网盘。目前用着还没啥问题,体验感很好。像我这里的port设置的是8006,所以我访问的网址就是主机网址:8006,http就可以登陆上去

另外,也可以通过安装支持RDP远程访问的软件, 在软件服务器地址和端口内容中分别填写IP地址和tcp/udp的port,在我这里是3389(我安装的软件是Remmina)。用户名填写为docker,密码不填写

根据Docker的设计,卷的大小通常是在创建时确定的,且默认情况下不支持动态扩容。因此,直接通过修改docker-compose文件来扩展现有卷的大小是不可能的,除非使用特定的存储驱动或文件系统支持动态调整。如果想要把这个容器从100G扩大到120G或者缩小,需要

sudo docker compose -f docker-compose-win.yml down -v  //删除卷
sudo docker rm 容器id            //直接删除容器
sudo docker compose -f docker-compose-win.yml up//重建资源

其他方法相对来说麻烦很多,这里就不提了。唯一的问题就在于需要重新安装各种软件,这个会有些麻烦,所以我最后还是没舍得再折腾扩容,100g足够跑solidworks,maxwell和comsol,还是很够用的。

使用docker-compose.yml安装ubuntu-desktop

建立一个docker-compose-linux.yml文件

version: "3"
services:ubuntu:image: colinchang/ubuntu-desktopcontainer_name: ubuntu_desktopshm_size: 1gports:- "主机地址:6901:6901"          #这么写可以限制本地访问environment:RAM_SIZE: 4GCPU_CORES: 2DISK_SIZE: 80GVNC_PW: 123456user: rootrestart: always目前的用户名是kasm_user,密码是123456

输入以下命令:

sudo docker compose -f docker-compose-linux.yml up

正在构建,需要保持网络畅通

可以先登陆上桌面,创建新的用户后,修改一下文件,让它不再使用root登陆就可以加强安全性。这个登陆用的用户名在没有创建新用户之前是无法通过文件被改变的。

另外就是个人发现,如果

ports:- 6901:6901        

 则firefox和chrome都可以通过https+本地路径+端口登陆上去,注意这里必须换成https,但是firefox登陆上去会报错,显示无法查看剪切板的内容

如果

ports:- "主机地址:6901:6901"

则只有chrome可以登陆上去,但不会有报错。最后放张图~

目前电脑上有的容器可以通过sudo docker ps -a命令来查看

剩下就都是老生常谈了,关于ros2安装的部分可以移步这篇文章

实验环境搭建集锦_isaac lab pycharm-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/80130.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch中的_source字段讲解

_source 在 Elasticsearch 查询中用于限制返回的字段,类似于 SQL 中的 SELECT 指定列。 代码示例: esSearchResults = es_service.search_documents({"query": {"terms": {"file_id":

【论文阅读20】-CNN-Attention-BiGRU-滑坡预测(2025-03)

这篇论文主要探讨了基于深度学习的滑坡位移预测模型,结合了MT-InSAR(多时相合成孔径雷达干涉测量)观测数据,提出了一种具有可解释性的滑坡位移预测方法。 [1] Zhou C, Ye M, Xia Z, et al. An interpretable attention-based deep…

C++ 的 IO 流

💬 :如果你在阅读过程中有任何疑问或想要进一步探讨的内容,欢迎在评论区畅所欲言!我们一起学习、共同成长~! 👍 :如果你觉得这篇文章还不错,不妨顺手点个赞、加入收藏,并…

spring cloud gateway前面是否必须要有个nginx

在 **"客户端 → Nginx (前置限流) → Spring Cloud Gateway → 微服务(Sentinel 熔断限流)"** 的架构中,**Spring Cloud Gateway 前面并不强制要求必须有 Nginx**,是否需要取决于具体场景。以下是详细分析: 一、必须使用 Nginx 的…

Spark和Hadoop之间的对比和联系

(一)Spark概述 Spark是一种基于内存的快速、通用、可拓展的大数据分析计算引擎。Hadoop是一个分布式系统基础架构。 1)官网地址:Apache Spark™ - Unified Engine for large-scale data analytics 2)文档查看地址&…

多线程进阶(Java)

注:此博文为本人学习过程中的笔记 1.常见的锁策略 当我们需要自己实现一把锁时,需要关注锁策略。Java提供的synchronized已经非常好用了,覆盖了绝大多数的使用场景。此处的锁策略并不是和Java强相关的,只要涉及到并发编程&#…

c++STL——stack、queue、priority_queue的模拟实现

文章目录 stack、queue、priority_queue的模拟实现使用部分模拟实现容器适配器deque的介绍原理真实结构deque的迭代器deque的操作deque的优缺点 stack的模拟实现按需实例化queue的模拟实现priority_queue的模拟实现为何引入仿函数代码实现 stack、queue、priority_queue的模拟实…

【深度学习—李宏毅教程笔记】Transformer

目录 一、序列到序列(Seq2Seq)模型 1、Seq2Seq基本原理 2、Seq2Seq模型的应用 3、Seq2Seq模型还能做什么? 二、Encoder 三、Decoder 1、Decoder 的输入与输出 2、Decoder 的结构 3、Non-autoregressive Decoder 四、Encoder 和 De…

C++镌刻数据密码的树之铭文:二叉搜索树

文章目录 1.二叉搜索树的概念2.二叉搜索树的实现2.1 二叉搜索树的结构2.2 二叉搜索树的节点寻找2.2.1 非递归2.2.2 递归 2.3 二叉搜索树的插入2.3.1 非递归2.3.2 递归 2.4 二叉搜索树的删除2.4.1 非递归2.4.2 递归 2.5 二叉搜索树的拷贝 3.二叉树的应用希望读者们多多三连支持小…

系统架构设计师:流水线技术相关知识点、记忆卡片、多同类型练习题、答案与解析

流水线记忆要点‌ ‌公式 总时间 (n k - 1)Δt 吞吐率 TP n / 总时间 → 1/Δt(max) 加速比 S nk / (n k - 1) | 效率 E n / (n k - 1) 关键概念 周期:最长段Δt 冲突‌: ‌数据冲突(RAW) → 旁路/…

强制重装及验证onnxruntime-gpu是否正确工作

#工作记录 我们经常会遇到明明安装了onnxruntime-gpu或onnxruntime后,无法正常使用的情况。 一、强制重新安装 onnxruntime-gpu 及其依赖 # 强制重新安装 onnxruntime-gpu 及其依赖 pip install --force-reinstall --no-cache-dir onnxruntime-gpu1.18.0 --extra…

桌面我的电脑图标不见了怎么恢复 恢复方法指南

在Windows操作系统中,“我的电脑”或在较新版本中称为“此电脑”的图标,是访问硬盘驱动器、外部存储设备和系统文件的重要入口。然而,有些用户可能会发现桌面上缺少了这个图标,这可能是由于误操作、系统设置更改或是不小心删除造成…

2025.04.20【Lollipop】| Lollipop图绘制命令简介

Customize markers See the different options allowing to customize the marker on top of the stem. Customize stems See the different options allowing to customize the stems. 文章目录 Customize markersCustomize stems Lollipop图简介R语言中的Lollipop图使用ggp…

docker-compose搭建kafka

1、单节点docker-compose.yml version: 3 services:zookeeper:image: zookeeper:3.8container_name: zookeeperports:- "2181:2181"volumes:- ./data/zookeeper:/dataenvironment:ZOO_MY_ID: 1ZOO_MAX_CLIENT_CNXNS: 100kafka:image: bitnami/kafka:3.7container_na…

【问题】一招解决vscode输出和终端不一致的困扰

背景(闲话Trae) Trae是挺好,用了几天,发现它时不时检查文件,一检测就转悠半天,为此我把当前环境清空,就留一个正在调的程序,结果还照样检测,虽然没影响什么,…

Git,本地上传项目到github

一、Git的安装和下载 https://git-scm.com/ 进入官网,选择合适的版本下载 二、Github仓库创建 点击右上角New新建一个即可 三、本地项目上传 1、进入 要上传的项目目录,右键,选择Git Bash Here,进入终端Git 2、初始化临时仓库…

从零开始配置spark-local模式

1. 环境准备 操作系统:推荐使用 Linux 或 macOS,Windows 也可以,但可能会有一些额外的配置问题。 Java 环境:Spark 需要 Java 环境。确保安装了 JDK 1.8 或更高版本。 检查 Java 版本: bash 复制 java -version 如果…

前端~地图(openlayers)绘制车辆运动轨迹(仿高德)

绘制轨迹路线轨迹路线描边增加起点终点图标绘制仿高德方向箭头模仿车辆动态运动动画 车辆运行轨迹 车辆轨迹经纬度坐标 const linePoints [new Point([123.676031, 43.653421]),new Point([123.824347, 43.697124]),new Point([124.197882, 43.946811]),new Point([124.104498…

分布式之CAP原则:理解分布式系统的核心设计哲学

声明:CAP中的P原则都是需要带着的 在分布式系统的设计与实践中,CAP原则(又称CAP定理)是开发者必须掌握的核心理论之一。它揭示了分布式系统在一致性(Consistency)、可用性(Availability&#x…

IF=40.8|肿瘤免疫:从免疫基因组学到单细胞分析和人工智能

一、写在前面 今天分享的是发表在《Signal Transduction and Targeted Therapy》上题目为"Technological advances in cancer immunity: from immunogenomics to single-cell analysis and artificial intelligence"的文章。 IF:40.8 DOI:10.1038/s41392…