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.