Windows11下Docker使用记录(一)

Docker使用记录(一)

在进行ROS项目开发时,如果只有一台Windows电脑,我们可以考虑使用WSL或Docker来搭建ROS环境。在尝试了两种方式后,我们认为使用Docker容器更为方便和安全。本文的特色在于解决了ROS仿真软件在Docker容器中可视化的问题。

简单介绍

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源 [1](#1)。

具体而言,Docker就是一个轻量级的虚拟机,可以让我们在每个独立的container容器(类似 iPhone 的 app)中进行开发而不会干扰host系统,非常安全可靠。

Docker安装

Windows中安装 Docker Desktop: https://www.docker.com/products/docker-desktop/

值得注意的是,官方文档有说明 "借助 Docker Desktop for Windows 中支持的 WSL 2 后端,可以在基于 Linux 的开发环境中工作并生成基于 Linux 的容器,同时使用 Visual Studio Code 进行代码编辑和调试,并在 Windows 上的 Microsoft Edge 浏览器中运行容器" [2](#2)。

翻译过来就是,在win11 系统中利用WSL2 安装的Ubuntu系统可以共享 win11中安装的docker desktop。只需确保如下设置:

Docker 常用命令

bash 复制代码
docker version  	#查看版本
docker ps 			#列出运行中的containers
docker info			#列出几乎images&containers所有相关信息
docker image ls		#列出所有镜像
docker container ls	#列出运行中的containers
bash 复制代码
docker run <options> <image_name>		#运行指定镜像
docker run -it <image_name>				#以交互模式运行指定镜像
bash 复制代码
docker stop <options> <container_id>	#关闭指定container
bash 复制代码
docker exec <options> <container_id> 	#进入指定容器
docker exec -it <container_id> 			#以交互模式进入指定容器
bash 复制代码
docker pull <image_name>		#从docker hub 里拉取镜像

也可以从Docker Desktop里直接拉取镜像

bash 复制代码
docker push <options> <image_name>		#将本地镜像上传至docker hub,但体积太大的会被拒绝
bash 复制代码
docker commit <options> <container_id> <new_image_name>	#将container转化为image

Docker 可视化

安装VcXsrv,可以看这篇,都是一样的操作。

Docker 使用GPU

确保host主机有Nvidia GPU,下载Nvidia发布的docker images.

可视化rviz、gazebo

当初使用docker就是为了在windows下使用ROS。查阅官方说明[3](#3),在docker container中可视化需要如下操作:

1.docker image 在Ubuntu(WSL2)下创建的

  1. 在 Ubuntu中输入:
bash 复制代码
docker run -it --env="DISPLAY" --env="QT_X11_NO_MITSHM=1" --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" --device=/dev/dri:/dev/dri <docker_image_name> bash



  1. 菜鸟教程 | Docker 教程: https://www.runoob.com/docker/docker-tutorial.html ↩︎

  2. https://learn.microsoft.com/zh-cn/windows/wsl/tutorials/wsl-containers ↩︎

  3. http://wiki.ros.org/docker/Tutorials/GUI ↩︎

相关推荐
Jack N1 小时前
【Strapi 系列之八】二次开发 + 生产部署,Docker + PostgreSQL + Nginx 一把梭
nginx·docker·postgresql·strapi
艾伦_耶格宇2 小时前
【kubernetes - 1.28版本】-7 K8S命令
云原生·容器·kubernetes
岁月宁静12 小时前
一个 AI 项目从本地到上线,要经过哪些步骤?全流程讲清楚
python·docker·agent
L02082414 小时前
Kubernetes Ingress|CNI 网络模型|Calico 网络策略|Pod 调度器完整实战教程
运维·网络·云原生·容器·kubernetes
吴声子夜歌16 小时前
Kubernetes权威指南——Kubernetes安装配置指南(网络配置)
网络·容器·kubernetes
闲云野鹤在人间16 小时前
Kubernetes Pod Scheduler 详解
云原生·容器·kubernetes
正经教主16 小时前
【FDE系列】阶段2:Day 42(UP详细版):Dockerfile 实战 — 把你的应用打包成镜像
人工智能·docker·fde
刘马想放假17 小时前
Copyparty 轻量文件共享:Docker Compose 部署、权限与多协议使用全指南
docker·容器
切糕师学AI18 小时前
Kubernetes 探针全解析:启动探针、存活探针与就绪探针(Startup/Liveness/Readiness Probe)
容器·kubernetes·探针·probe