Post

Docker

docker相关笔记

权限设置

docker进程默认是以root用户运行的,免sudo运行需要将用户添加到docker组中

1
2
3
4
5
# 创建docker组
sudo groupadd docker

# 将用户添加到docker组
sudo usermod -aG docker $USER

重启后即可免sudo运行docker

代理配置

docker的网络默认不会走代理,需要在进程服务文件夹配置代理设置

1
sudo mkdir /etc/systemd/system/docker.service.d
1
sudo vim /etc/systemd/system/docker.service.d/proxy.conf

在代理文件中,添加代理信息,以clash-verge为例

1
2
3
[Service] 
Environment="HTTP_PROXY=127.0.0.1:7897" 
Environment="HTTPS_PROXY=127.0.0.1:7897"

最后重启docker,并重启daemon进程

1
2
sudo systemctl daemon-reload
sudo systemctl restart docker
1
docker info

如果输出了代理信息即配置成功

docker ros可视化

需要配置Docker以便支持X11显示系统,用于图形界面显示。以osrf中的ros:humble-desktop为例。 在容器外的终端执行如下命令,允许任意主机连接到本机的X server

1
xhost +

随后启动容器

1
2
3
4
5
6
7
docker run -it \
    --net=host \
    --env="DISPLAY" \
    --env="QT_X11_NO_MITSHM=1" \
    --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
    --name ros_rviz_container \
    osrf/ros:humble-desktop

即可使用rviz2等进行可视化显示

参数说明:

  • –net=host: 使 Docker 容器共享主机的网络环境,这样 ROS 可以正常通信
  • –env=”DISPLAY”: 将主机的 DISPLAY 环境变量传递给容器,允许容器中的GUI程序使用主机的显示
  • –env=”QT_X11_NO_MITSHM=1”: 防止共享内存导致的图形渲染问题
  • –volume=”/tmp/.X11-unix:/tmp/.X11-unix:rw”: 允许容器访问主机的X11 unix socket
This post is licensed under CC BY 4.0 by the author.