# ROS2 Developnment Container

**URL:** https://forum.eduart-robotik.com/t/ros2-developnment-container/101
**Category:** Robots unite!
**Tags:** software
**Created:** [October 12, 2023, 1:35pm UTC](https://forum.eduart-robotik.com/t/ros2-developnment-container/101 "2023-10-12T13:35:51Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![Ilian](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.eduart-robotik.com/ilian/32/77_2.png) [@Ilian](https://forum.eduart-robotik.com/u/Ilian)
#### Post date: [October 12, 2023, 1:35pm UTC](https://forum.eduart-robotik.com/t/ros2-developnment-container/101/1 "2023-10-12T13:35:51Z")

</div>

Ich habe einen Develonment container nach einem Guide aufgesetzt, der kann aber weiß Gott warum nicht mit dem Netzwerk kommunizieren. Uns wurde ja am Donnerstag damals gesagt, dass es gute Dev Container gibt. Unter diesem Topic bitte ich um ein Paar Dev Container, die empfehlenswert sind. Danke

---

<div class="post-metadata">

### Author: ![MarkusEdu](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.eduart-robotik.com/markusedu/32/30_2.png) [@MarkusEdu](https://forum.eduart-robotik.com/u/MarkusEdu)
#### Post date: [October 14, 2023, 6:17pm UTC](https://forum.eduart-robotik.com/t/ros2-developnment-container/101/2 "2023-10-14T18:17:20Z")

</div>

Guten Abend,

welcher Container ist das denn genau?

Zur not nehme einen von EduArt und werfe alles aus dem Compose-File raus, was du nicht benötigst. Beispiel: [GitHub - EduArt-Robotik/edu\_robot: Defines a interface to all Eduart robots and also their realisations.](https://github.com/EduArt-Robotik/edu_robot) das Compose-File liegt im Ordner “docker”. Verwende das deiner Platform (IOT2050 oder IPC127E).

Gutes Gelingen 😉

---

<div class="post-metadata">

### Author: ![Ilian](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.eduart-robotik.com/ilian/32/77_2.png) [@Ilian](https://forum.eduart-robotik.com/u/Ilian)
#### Post date: [October 15, 2023, 11:15am UTC](https://forum.eduart-robotik.com/t/ros2-developnment-container/101/3 "2023-10-15T11:15:24Z")

</div>

Hallo,

ich nutze [dieses](https://github.com/athackst/vscode_ros2_workspace) Preset. Innerhalb des Containers funktioniert alles, das problem liegt aber darin, das ich nichs von außerhalb des Containers empfange. Ich hab gelesen, das man bei ROS1 den Container privileged laufen lassen muss, aber bei ROS2 sollte das doch auch so funktionieren.

Ilian

---

<div class="post-metadata">

### Author: ![snaens](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.eduart-robotik.com/snaens/32/72_2.png) [@snaens](https://forum.eduart-robotik.com/u/snaens)
#### Post date: [October 15, 2023, 10:13pm UTC](https://forum.eduart-robotik.com/t/ros2-developnment-container/101/4 "2023-10-15T22:13:07Z")

</div>

Vermutlich musst du den container mit `--network=host` einrichten, sonst hat der container keinen direkten Zugriff auf deine Netzwerkverbindung. Stattdessen bekommt er sein eigenes “fake Netzwerk”, worin aber keine Verbindung zu deiner ROS app aufgebaut werden kann.

`--privileged` bringt was wenn der container mit dem hostsystem interagieren soll (mit hardware kommunizieren, GUI Fenster öffnen, etc).  
_Aber_ man sollte es nur nutzen wenn es wirklich gebraucht wird, wegen security usw.

---

<div class="post-metadata">

### Author: ![Ilian](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.eduart-robotik.com/ilian/32/77_2.png) [@Ilian](https://forum.eduart-robotik.com/u/Ilian)
#### Post date: [October 17, 2023, 8:38am UTC](https://forum.eduart-robotik.com/t/ros2-developnment-container/101/5 "2023-10-17T08:38:06Z")

</div>

Das argument --network=host ist schon gesetzt. Funktioniert immer noch nicht. Das sind die arguments, mit denen der Container läuft:  
“–network=host”,  
“–cap-add=SYS\_PTRACE”,  
“–security-opt=seccomp:unconfined”,  
“–security-opt=apparmor:unconfined”,  
“–volume=/tmp/.X11-unix:/tmp/.X11-unix”,  
“–volume=/mnt/wslg:/mnt/wslg”,  
“–ipc=host”

---

<div class="post-metadata">

### Author: ![Christian](https://avatars.discourse-cdn.com/v4/letter/c/b2d939/32.png) [@Christian](https://forum.eduart-robotik.com/u/Christian)
#### Post date: [October 18, 2023, 9:04am UTC](https://forum.eduart-robotik.com/t/ros2-developnment-container/101/6 "2023-10-18T09:04:00Z")

</div>

Hi,

ich verwende für VSCode den DevContainer. Dafür verwende ich diese Config:

```json
{
  "name": "eduart_ros2_workspace",
  "image": "eduartrobotik/eduart-ros-base:humble-1.2.1",
  "runArgs": [
    "-it",
    "--device",
    "/dev/dri",
    "--ipc=host",
    "--net=host",
    "--pid=host",
    "--env=DISPLAY",
    "--volume=/tmp/.X11-unix:/tmp/.X11-unix:rw",
    "--privileged",
    "-v", "/dev:/dev"
  ],
  "settings": {
    "terminal.integrated.shell.linux": "/bin/bash"
  },
  "remoteUser": "user",
  "extensions": [
  	"ms-vscode.cmake-tools",
  	"ms-python.python",
  	"llvm-vs-code-extensions.vscode-clangd",
  	"streetsidesoftware.code-spell-checker",
  	"streetsidesoftware.code-spell-checker-german",
  	"eamodio.gitlens",
  	"ms-vscode.makefile-tools",
  	"ms-vscode.cpptools"
  ]
}

```

Auf Linux hat man mit dieser auch Zugriff auf Devices wie Joystick und man kann auch GUI Applikationen wie RViz aus dem Container öffnen.

Hier ist eine Anleitung, wie man diesen Dev Container aufsetzt:

> **[Get started with development Containers in Visual Studio Code](https://code.visualstudio.com/docs/devcontainers/tutorial)**
>
> Get started with development Containers in Visual Studio Code

Die Config von oben muss man in der Datei devcontainer.json schreiben, die dann unter dem Ordner .devcontainer liegt. Der Ordner muss in deinem Workspace liegen. Das steht aber auch in der Anleitung.
