创建一个容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG]
| OPTIONS | 说明 |
|---|---|
| --name="容器名字" | 如果不指定,则系统随机产生 |
| -d | 后台运行容器 |
| -i | 以交互模式运行容器,通常与-t同时使用 |
| -t | 为容器重新分配一个伪输入终端 |
| --rm | 容器退出时自动清理容器内部的文件系统 |
docker run -dit --rm --name ros-master --network net-sim ros:noetic-ros-core-focal roscore
以上:
- 以
ros:noetic-ros-core-focal镜像模板创建一个容器ros-master,连接到网络net-sim。 - 在后台运行,分配一个伪输入终端,以交互模式运行命令
roscore。 - 退出时自动清理容器内部的文件系统。
| OPTIONS | 说明 |
|---|---|
| --gpus all | 使用所有gpu |
| -e, --env=[] | 指定环境变量,容器中可以使用该环境变量 |
| -v, --volume=[] | 给容器挂载存储卷,挂载到容器的某个目录 |
docker run -dit --rm --name sim-server --network net-sim \
--gpus all \
-e ROS_MASTER_URI=http://ros-master:11311 \
-e DISPLAY=$DISPLAY \
-e QT_X11_NO_MITSHM=1 \
-e NO_AT_BRIDGE=1 \
-e LIBGL_ALWAYS_SOFTWARE=1 \
-e NVIDIA_DRIVER_CAPABILITIES=all \
-v /tmp/.X11-unix:/tmp/.X11-eunix \
$SERVER_IMAGE
以上:
- 以
SERVER_IMAGE的值即SERVER_IMAGE:-tb5zhh/icra-2023-server:latest镜像模板创建一个容器sim-server,连接到网络net-sim。 - 在后台运行,分配一个伪输入终端。
- 设置参数:
a. 使用所有gpu
b. 赋值环境变量ROS_MASTER_URI,DISPLAY,QT_X11_NO_MITSHM,NO_AT_BRIDGE,LIBGL_ALWAYS_SOFTWARE,NVIDIA_DRIVER_CAPABILITIES
c. 给容器挂载存储卷/tmp/.X11-unix,挂载到/tmp/.X11-eunix - 退出时自动清理容器内部的文件系统。