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

使用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博客

相关文章:

  • JDOM处理XML:Java程序员的“乐高积木2.0版“
  • Android 应用wifi direct连接通信实现
  • 第33讲|遥感大模型在地学分类中的初探与实战
  • word选中所有的表格——宏
  • PostgreSQL数据库RPM方式安装详解
  • Python语法系列博客 · 第6期[特殊字符] 文件读写与文本处理基础
  • OCR技术与视觉模型技术的区别、应用及展望
  • 大学第一次笔记本清灰
  • 2.2/Q2,GBD数据库最新文章解读
  • 通过 Samba 服务实现 Ubuntu 和 Windows 之间互传文件
  • 单元测试的一般步骤
  • Linux操作系统--环境变量
  • PHP异常处理__Throwable
  • Vue 3 中将 ref 创建的响应式对象数据转换为普通(非响应式)的数据
  • 自动化测试相关协议深度剖析及A2A、MCP协议自动化测试应用展望
  • 基于大模型的下肢静脉曲张全流程预测与诊疗方案研究报告
  • [Swift]pod install成功后运行项目报错问题error: Sandbox: bash(84760) deny(1)
  • Django 实现服务器主动给客户端发送消息的几种常见方式及其区别
  • 医院科研科AI智能科研支撑平台系统设计架构方案探析
  • Java 动态代理教程(JDK 动态代理)(以RPC 过程为例)
  • 广汽全域赋能,领程皮卡概念车重磅登陆上海车展
  • 继微软之后,亚马逊也放缓人工智能数据中心计划
  • 国家疾控局局长沈洪兵:将逐步缩小国内免疫规划与国际差距
  • 山西一国道塌陷致2死后续:地质雷达检测出10处道路病害
  • 广西三江通报“网约车司机加价”:对网约车平台进行约谈
  • 被指违反代理协议遭南航暂停售票资格, 去哪儿网:今起恢复