DOCKER制作ROS运行的镜像文件

#想要制作一个在windows下运行的镜像文件,运行后可以在windows下直接学习ROS2。过程中遇到一些问题,慢慢的都解决了,比如汉字的显示,汉字的输入,图形界面等。#

首先,需要安装Docker Desktop,个人版不需要注册也可以运行。

在个人文件夹下,创建一个dockerfile文件,注意没有后缀,用记事本打开。

输入下面的代码:

bash 复制代码
# 基础镜像
FROM ubuntu:22.04
 
ENV DEBIAN_FRONTEND=noninteractive
 
# 安装基本组件
RUN apt-get update && apt-get install -y \
fcitx fcitx-pinyin fcitx-config-gtk fcitx-frontend-all \
fcitx-module-dbus fcitx-ui-classic \
im-config language-pack-zh-hans fonts-wqy-zenhei locales \
xfce4 xfce4-goodies x11vnc xvfb \
firefox wget curl net-tools sudo git \
python3 python3-pip supervisor \
&& apt-get clean && rm -rf /var/lib/apt/lists/*

# 设置系统语言为中文
RUN locale-gen zh_CN.UTF-8 && \
update-locale LANG=zh_CN.UTF-8 && \
dpkg-reconfigure locales

# 安装中文输入法配置工具(可选)
RUN apt-get update && apt-get install -y fcitx-config-gtk

# 设置环境变量,确保 Fcitx 在启动时加载
ENV GTK_IM_MODULE=fcitx
ENV QT_IM_MODULE=fcitx
ENV XMODIFIERS="@im=fcitx"
 
# 创建用户
RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo
 
# 设置默认分辨率
ENV DISPLAY=:1
ENV RESOLUTION=1920x1080
 
# 下载 noVNC 和 websockify(源码),多试几次
WORKDIR /opt
RUN git clone https://github.com/novnc/noVNC /opt/noVNC \
&& git clone https://github.com/novnc/websockify /opt/websockify \
&& chmod +x /opt/websockify/run \
&& ln -s /opt/noVNC/vnc_lite.html /opt/noVNC/index.html
 
 
# 设置 VNC 密码
RUN mkdir -p /home/docker/.vnc \
&& x11vnc -storepasswd 123456 /home/docker/.vnc/passwd
 
# 复制 supervisord 配置文件
COPY supervisord.conf /etc/supervisor/conf.d/vnc.conf
 
WORKDIR /home/docker
 
EXPOSE 6080
 
CMD ["/usr/bin/supervisord", "-n"]

制作配置文件supervisord.conf,和dockerfile放在一个目录下

bash 复制代码
[program:xvfb]
command=/usr/bin/Xvfb :1 -screen 0 1280x800x24
autostart=true
autorestart=true
 
[program:x11vnc]
command=/usr/bin/x11vnc -display :1 -passwd 123456 -forever -shared
autostart=true
autorestart=true
 
[program:startxfce4]
command=/usr/bin/startxfce4
environment=DISPLAY=":1"
autostart=true
autorestart=true
 
[program:novnc]
command=/opt/websockify/run 0.0.0.0:6080 localhost:5900 --web=/opt/noVNC
autostart=true
autorestart=true

CMD进入命令行,进入dockerfile所在的目录,创建镜像,注意后面的.不要忘记拷贝,github.com一次连接可能不成功,需要多试几次。

bash 复制代码
docker build -t my-novnc .

创建容器并运行,-it进入命令行,-p映射端口,-v映射本地文件夹,文件夹根据实际进行替换

bash 复制代码
docker run -it -p 6080:6080 -v D:/Learning/Ubuntu:/mnt --name my-novnc-ros my-novnc

容器运行后,从网页http://localhost:6080 进入,密码123456

使用小鱼的一键安装指令安装ROS2,安装提示进行安装即可:

bash 复制代码
wget http://fishros.com/install -O fishros && . fishros

根据需要安装terminator终端和办公软件:

bash 复制代码
sudo apt install terminator libreoffice

安装VS Code,并运行

bash 复制代码
wget https://go.microsoft.com/fwlink/?LinkID=760868 -O code.deb
sudo dpkg -i code.deb
code --no-sandbox --user-data-dir "/mnt"

安装 VS Code 的插件,有些插件已经过时了,根据提示安装新的插件:

C++/Python/chinese/ROS/vscode-icon/msg language support//urdf/intellicode/markdown all in one

设置环境变量

bash 复制代码
source /opt/ros/humble/local_setup.bash

启用中文输入法

bash 复制代码
fcitx &

测试ROS安装

bash 复制代码
ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key
相关推荐
小柒儿3369 小时前
从单Agent到多智能体系统:多智能体协作重塑自动化边界
运维·自动化
QYR-分析11 小时前
注塑机机械手自动化装备行业发展研判:存量升级催生增量红利,2032 年市场规模逼近 9 亿美元
运维·自动化
牢姐与蒯11 小时前
Linux基本指令及知识点(二)
linux·运维·服务器
ᥬ 小月亮12 小时前
SonarQube使用教程(Docker安装)
运维·docker·容器
去伪存真202512 小时前
数字样机、态势推演与3D汇报场景下的平台选型对比
运维·服务器
自动化测试行业观察12 小时前
从“自动化”到“智能化”:TestMan AI测试平台引领软件测试范式转移
运维·自动化测试·人工智能·测试工具·自动化·app测试·移动应用测试
xiaoxiangsiyan12 小时前
运维之前端反调试学习
运维·前端·学习·状态模式
RisunJan12 小时前
Linux命令-spell(Unix 拼写检查工具 —— 文本校对的基础利器)
linux·运维·unix
深圳市恒星物联科技有限公司13 小时前
破解复杂水务监测难题:投入式压力液位计如何实现“零中断”长效运维?
运维·物联网·智慧城市
自律最差的编程狗13 小时前
从零搭建:VMware + Ubuntu + Docker + MySQL 完整指南
mysql·ubuntu·docker