ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
Create your docker file, here an example:
FROM ros:melodic-ros-base
# set enviroment
ENV ROS_MASTER_URI=http://<your master IP address>:11311
ENV ROS_IP=<your node "static" IP addresse>
ENV ROS_WS=/home/catkin_ws
RUN mkdir -p $ROS_WS/src
COPY <your directory to copy on container> $ROS_WS/src
WORKDIR $ROS_WS
# install ros dependencies packages
RUN apt update && apt-get install -y \
ros-melodic-desktop-full \
ros-melodic-navigation \
ros-melodic-moveit \
ros-melodic-gazebo-ros-control \
&& apt-get clean
RUN . "/opt/ros/$ROS_DISTRO/setup.sh" && cd $ROS_WS && catkin_make \
&& sed --in-place --expression \
'$isource "$ROS_WS/devel/setup.bash"' \
/ros_entrypoint.sh
# run ros package launch file
CMD [ "roslaunch", "<your package>", "<your launch file>" ]
build your image with --network=host:
sudo docker build --network=host -t <your docker hub>/<your image name>:<your tag> .
run your container with the parameter:
sudo docker run --rm --network=host <your docker hub>/<your image name>:<your tag>
Warning This is only a workaround. In this way you are opening all ports of your host to the docker container (see docker build doc mapping the container network to the device network layer.