ros2 安装

推荐linux版本:ubuntu 22.04

一、创建docker具有systemctl权限的容器:

1. 撰写Dockerfile

FROM ubuntu:22.04

# 安装 systemd 和 dbus(systemctl 通讯需要它)
RUN apt-get update && apt-get install -y \
    systemd \
    systemd-sysv \
    dbus \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# 告知 systemd 运行在容器环境
ENV container docker

# 启动时默认执行 systemd
CMD ["/lib/systemd/systemd"]

2. build镜像

在 Dockerfile 所在目录运行:

docker build -t my-ubuntu-with-systemd .
# 创建别名(改名)
docker tag old-name:v1 new-name:v2

3. 创建容器

docker run -itd   --name my-ubuntu4  --privileged --cgroupns=host  -v /sys/fs/cgroup:/sys/fs/cgroup:ro   ubuntu2204-with-systemd:v1 /lib/systemd/systemd

登录容器验证:

docker exec -it <容器id> /bin/bash
docker stauts

二、ros安装

容器创建:

docker run -it --name ros2  -d --restart unless-stopped -e TZ=Asia/Shanghai  -v /home/container/ros2/data:/data \
--privileged --cgroupns=host  -v /sys/fs/cgroup:/sys/fs/cgroup:rw \
-p 8022:22 \
--device /dev:/dev \
-v /home/container/ros2/data:/data \
-v  /tmp/.X11-unix:/tmp/.X11-unix \
-v /run/user/1000/pulse:/run/user/1000/pulse \
-v /etc/machine-id:/etc/machine-id \
-v  /var/lib/dbus:/var/lib/dbus \
-v  /home/pi/docker_ros2/tmp:/home/ubuntu/share/tmp \
-e PULSE_SERVER=unix:/run/user/1000/pulse/native \
-e LIBGL_ALWAYS_SOFTWARE=1 \
-e DISPLAY=:0 \
ubuntu2204-with-systemd:v1 /lib/systemd/systemd

--net=host 容器使用宿主机ip, 端口-p映射忽略

docker run -it --name test --net=host -d --restart unless-stopped -e TZ=Asia/Shanghai -v /home/container/ros2/data:/data
--privileged --cgroupns=host -v /sys/fs/cgroup:/sys/fs/cgroup:rw ubuntu2204-with-systemd:v1 /lib/systemd/systemd
-p 8026:22 ubuntu2204-with-systemd:v1 /lib/systemd/systemd

docker run -it --name test -p 8022:22 --net=host -d --restart unless-stopped -e TZ=Asia/Shanghai -v /home/container/ros2/data:/data
--privileged --cgroupns=host -v /sys/fs/cgroup:/sys/fs/cgroup:rw ubuntu2204-with-systemd:v1 /lib/systemd/systemd

ubuntu:22.04 /bin/bash

创建claude环境

docker commit claude my_claude_env:v1.0

docker run -it --name claude_study1 -d --restart unless-stopped -e TZ=Asia/Shanghai -v /home/container/ros2/data:/data
--privileged --cgroupns=host -v /sys/fs/cgroup:/sys/fs/cgroup:rw
-p 8030:22
-p 28080:8080
-p 28090:8090
my_claude_env:v1.0 /lib/systemd/systemd

ps -ef | grep python
kill -9 xxx

posted @ 2026-04-23 16:17  kevin_zoui  阅读(2)  评论(0)    收藏  举报