1. 启动容器
docker run -td --privileged --name="orb3ssh1" --gpus=all -e "DISPLAY=$DISPLAY" -e "QT_X11_NO_MITSHM=1" -v "/tmp/.X11-unix:/tmp/.X11-unix:rw" -e "XAUTHORITY=$XAUTH" -e ROS_IP=127.0.0.1 --cap-add=SYS_PTRACE -v `pwd`/Datasets:/Datasets -v /etc/group:/etc/group:ro -v `pwd`/ORB_SLAM3:/ORB_SLAM3 -p 10132:22 orb3:v1 /bin/bash
重要的就一个参数: -p 10132:22(将主机的10132端口映射到docker的22端口)
orb3ssh1是可自定义的容器name,进入时要用
进入容器
docker exec -it orb3ssh1 bash
2. 修改密码
passwd
输入密码,再确认密码即可
3. 安装openssh-server和openssh-client
我的问题主要出现在这一步,安装openssh-server时报错
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
debconf: delaying package configuration, since apt-utils is not installed
dpkg: unrecoverable fatal error, aborting:
unknown group 'geoclue' in statoverride file
E: Sub-process /usr/bin/dpkg returned an error code (2
解决:参考链接
sudo rm /var/lib/dpkg/info/openssh-server*
sudo dpkg --configure -D 777 openssh-server
sudo apt -f install
第二步的结果:
第三部的结果:
4. 修改SSH配置文件以下选项
如果已经存在了/etc/ssh/sshd_config文件,则可以跳过第3步
修改:
vim /etc/ssh/sshd_config
在最后添加一行:
PermitRootLogin yes
vim操作:输入i可进入INSERT模式,然后进行更改,ESC键退出,再输入:wq保存退出(注意有冒号)
5. 重启ssh服务
/etc/init.d/ssh restart
我这里报错:
Privilege separation user sshd does not exist
解决:
vim /etc/passwd
添加一行(如果添加下面这行没有效果,参考链接Privilege separation user sshd does not exist)
sshd:x:109:65534::/var/run/sshd:/usr/sbin/nologin
解决后,重启ssh服务
/etc/init.d/ssh restart
再退出容器
exit
6. 主机通过ssh连接docker
ssh root@127.0.0.1 -p 10132
输入yes
输入刚刚在第2步设置的密码
连接成功,恭喜!!!
7. clion连接docker
我参考的链接是:Clion与Docker的C\C++调试环境第3点之后的内容,操作下来,完全一致.