【声呐仿真】学习记录0.5-配置ssh远程连接docker、在docker中使用nvidia显卡

【声呐仿真】学习记录0.5-配置ssh远程连接docker、在docker中使用nvidia显卡

注意:之前已经创建过容器的,需要打包成镜像,重新创建容器,因为要在创建的时候做端口映射

Docker隔离服务器不同用户环境

如何设置SSH远程连接docker容器_java ssh 执行docker命令-

配置ssh远程连接docker

1.端口映射

打包镜像:

docker ps
docker commit 容器id 镜像名

在这里插入图片描述

创建容器实例,将服务器的50003端口映射到容器的22端口上:

docker run -it -d -p 50003:22 ros

在这里插入图片描述

为了确保万无一失,所以在创建容器时加上之前的参数(环境变量env可以不加):

sudo docker run -it -d -p 50003:22 --gpus all -v /home/ouc/ros_noetic:/data --device=/dev/dri --group-add video --volume=/tmp/.X11-unix:/tmp/.X11-unix  --env="DISPLAY=$DISPLAY" --env="QT_X11_NO_MITSHM=1" --name=ros_noetic_2 -e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all ros /bin/bash

在这里插入图片描述

-----------------也可先执行下面的操作,然后打包镜像再创建容器--------------------

2.配置ssh

在容器实例里面执行下列指令:

apt-get update 
apt-get install openssh-server # 安装sshd 
which sshd

创建权限分离目录:

mkdir /var/run/sshd

设置密码,后续远程连接使用:

passwd

修改ssh配置文件,设置为允许root远程登录:

vim /etc/ssh/sshd_config

将PermitRootLogin prohibie-password 修改为:PermitRootLogin yes 即可。若没有则手动加上:

在这里插入图片描述

确保此时容器是开启状态(ssh连接服务器,开启的容器):

在这里插入图片描述

关闭服务器后,尝试连接容器:

ssh root@服务器ip -p 50003

刚开始没有映射端口的时候,报第一个错:
映射端口后,报第二个错:在这里插入图片描述

如何处理ssh: connect to host port 22: Connection refused

端口应该是已经开放了,但是还是连不上

sudo netstat -tlpn | grep 50003

在这里插入图片描述

解决了:

service ssh restart

在创建带端口映射的容器后,需要进入容器重启一下ssh才能远程

在这里插入图片描述

我一直以为容器关机开机,ssh服务相当于重启了,所以一直没有手动重启,没想到在这上面卡了这么长时间

使用ssh直连docker容器的方法 :解决Connection refused报错_docker connection refused-

在docker中使用nvidia显卡

在容器中查看显卡信息和CUDA版本:

nvidia-smi
nvcc --version

在这里插入图片描述

docker run -itd --gpus all --name 容器名 -e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all 镜像名
怎么在docker中使用nvidia显卡

报错:docker: Error response from daemon: could not select device driver “” with capabilities: [[gpu]].
Docker 使用GPU 错误之Error could not select device driver ““ with capabilities: [[gpu]]

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

在这里插入图片描述
在这里插入图片描述
少许报错,但是好像没有影响:

which nvidia-container-runtime

在这里插入图片描述

别忘了重启docker,然后创建容器:

在这里插入图片描述

配置CUDA

声呐仿真需要这个库Field-Robotics-Lab/nps_uw_multibeam_sonar:带有NVIDIA Cuda库的多波束声纳插件在这里插入图片描述

所以按需配置CUDA:多波束声纳|DAVE项目 — Multibeam Sonar | Project DAVE

我的NVIDIA驱动程序版本是535,准备安装CUDA 12.2(服务器上的是11.7,不知道后期会有影响不会)
在这里插入图片描述

CUDA工具包存档|NVIDIA开发者 — CUDA Toolkit Archive | NVIDIA Developer
Ubuntu22.04安装CUDA和cuDNN详细过程记录_ubuntu22.04安装cudnn-

在这里插入图片描述

wget https://developer.download.nvidia.com/compute/cuda/12.2.2/local_installers/cuda_12.2.2_535.104.05_linux.run
sudo sh cuda_12.2.2_535.104.05_linux.run

注意安装的时候取消Driver(光标移动到Driver,然后按enter/空格即可取消,不取消会导致安装终止)
安装完会有个警告 Incomplete installation! 不需要管

配置环境变量:

vim ~/.bashrc
export PATH=$PATH:/usr/local/cuda-你的版本/bin  
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-你的版本/lib64  
source ~/.bashrc
nvcc -V

在这里插入图片描述

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 您可以使用DockerSSH连接功能来启动Docker。您需要在docker run命令添加一些参数,并在主机上启动SSH服务,然后您就可以连接到Docker容器了。具体的启动命令可以参考Docker的文档。 ### 回答2: 为了通过SSH远程连接到运行Alpine Linux的Docker容器,你需要按照以下步骤进行设置和启动Docker: 1. 在Dockerfile添加SSH相关的安装和配置命令。在Dockerfile,你可以使用Alpine Linux镜像的基本文件系统。你可以使用以下命令安装和设置SSH服务: ``` RUN apk add --no-cache openssh RUN ssh-keygen -A RUN echo 'root:password' | chpasswd RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config ``` 2. 构建Docker镜像:使用docker build命令来构建包含SSH的自定义Alpine Linux镜像。假设你的Dockerfile位于当前工作目录,可以运行以下命令来构建镜像: ``` docker build -t alpine-ssh . ``` 3. 启动Docker容器并映射SSH端口:现在你可以通过运行以下命令启动容器,并将容器的SSH端口映射到主机的某个端口: ``` docker run -d -p 2222:22 alpine-ssh ``` 这将启动一个名为alpine-ssh的容器,并将容器的SSH端口22映射到主机的端口2222。 4. 通过SSH连接到Docker容器:使用SSH客户端程序连接到容器的SSH端口。在命令行运行以下命令: ``` ssh root@localhost -p 2222 ``` 这将通过SSH连接到Docker容器。你可以使用容器的IP地址或者容器所在主机的IP地址进行远程连接。 以上是通过SSH远程连接到Alpine Linux Docker容器的基本步骤。你可以根据你的实际需求自定义SSH设置和Docker镜像。 ### 回答3: 要通过SSH远程连接Docker的Alpine Linux,首先需要确保已在Alpine Linux安装和启动了SSH服务。以下是启动Docker容器时需要采取的步骤: 1. 在主机上安装Docker,并确保已将Docker服务启动起来。 2. 在主机上创建一个Dockerfile,用于构建Alpine Linux的Docker镜像。例如,可以使用以下内容创建Dockerfile: ``` FROM alpine:latest RUN apk update && apk add openssh RUN ssh-keygen -A RUN echo "root:password" | chpasswd CMD ["sh", "-c", "/usr/sbin/sshd -D"] ``` 这将基于最新的Alpine Linux镜像创建一个新的Docker镜像,并在其安装openssh软件包。 3. 使用以下命令构建Docker镜像: ``` docker build -t alpine-ssh . ``` 4. 构建完成后,可以使用以下命令启动一个新的Docker容器: ``` docker run -d -p 2222:22 --name myalpine alpine-ssh ``` 这将在Docker容器运行Alpine Linux,为容器分配了一个名称为"myalpine",并将容器SSH服务映射到主机的端口2222。 5. 现在,您可以使用SSH客户端连接到主机的IP地址和端口2222,并使用root用户进行身份验证。例如,可以使用以下命令连接到Docker容器: ``` ssh root@<主机IP地址> -p 2222 ``` 您需要将"<主机IP地址>"替换为运行Docker容器的主机的实际IP地址。 这样,您就可以通过SSH远程连接到运行Alpine Linux的Docker容器了。请记住,在真实的生产环境,请确保将密码更改为更安全的选项,并采取其他安全措施来保护您的系统。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tfnmdmx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值