跳板机连接远程服务器,并使用docker容器进行项目

概要

使用跳板机连接服务器,并在服务器中运行docker容器,为了方便调试,用vscode连接到容器。本地机器是wins11,服务器系统是Ubuntu。

一、安装docker

安装docker,nvidia_docker步骤省略,要注意各种命令最好亲手打一遍,不然容易出错。

二、连接服务器

终端连接软件有很多,这里使用的是finalshell。

1、配置跳板机信息

创建一个ssh连接

在隧道中,配置需要跳转的服务器,绑定ip是本机地址不用改。

2、配置目标机器信息

完成上述步骤后,再创建一个新的ssh连接。

全部完成后,先连接跳板机,再连接目标机器,就可以了。

三、创建docker容器

一些常用命令

docker images    #查看镜像
docker ps        #查看正在运行容器
docker ps -a     #查看所有容器

1、拉取镜像

服务器第一次创建容器,先将用户加入用户组,然后拉取官方镜像,根据服务器系统和显卡版本选择。

sudo usermod -aG docker ${USER}
docker pull nvidia/cuda:12.2.2-cudnn8-devel-ubuntu22.04

2、创建容器

docker run -it --gpus all -v path1:path2 -p 6666:22 --name container_name nvidia/cuda:12.2.2-cudnn8-devel-ubuntu22.04
  • -it:以交互式运行容器
  • -v:挂载目录路径,path1是在宿主机路径,path2是容器内的路径
  • -p:前一个为宿主机端口,后一个为容器端口,主要用于直连容器
  • --name:容器名
  • 镜像名或镜像id
  • --shm-size=2g:设置共享内存大小

3、运行容器

docker restart 容器名
docker exec -it 容器名 bash

首次进入,安装各种需要软件,如vim,python等 

退出容器exit 

四、vscode连接容器

1、 容器安装ssh服务

安装ssh服务

apt-get install openssh-server

ssh服务安装完成无问题后,编辑/etc/ssh/sshd_config配置文件

vim etc/ssh/sshd_config

 添加允许root用户访问,增加配置如下:

PermitRootLogin yes
PasswdAuthentication yes

 配置添加完成后启动sshd服务

/usr/sbin/sshd
或者 service ssh start

在容器内部环境,为root用户添加一个密码 

passwd root

 设置ssh自启动,在/root/下创建start_ssh.sh文件

vim start_ssh.sh

 vim编辑文件内容

#!/bin/bash   
 
LOGTIME=$(date "+%Y-%m-%d %H:%M:%S") 
echo "[$LOGTIME] startup run..." >>/root/start_ssh.log 
service ssh start >>/root/start_ssh.log

 给予权限

chmod +x /root/start_ssh.sh

 将脚本加到启动文件

vim /root/.bashrc

 添加内容,重启即可

# startup run 
if [ -f /root/start_ssh.sh ]; then       
    . /root/start_ssh.sh 
fi

2、vscode安装拓展

安装Dev Conitainers,remote-ssh

3、配置config文件

 将下列内容输入到config文件中,跳板机不用私钥连接就删掉IdentityFile

Host tbj          #跳板机名,任意
    HostName xx.xx.xx.xx跳板机ip
    User 用户名
    Port 端口
    IdentityFile ~/.ssh/tbj/id_rsa   #跳板机私钥路径

    Host 11_12         #目标机器或容器名,任意
        HostName xx.x.x.x目标机器ip
        User root         #容器内用户,一般是root
        Port 6666         #容器映射到服务器上的端口,创建容器时-p参数确定
        ProxyJump tbj  #必须与跳板机名相同
    
    Host 
        :
        :

 然后就可以连接到容器了,对容器内代码进行调试。

 

五、镜像生成与传输

1、从容器生成新镜像

docker commit 容器id abc/123:000    #提交容器为镜像
docker save abc/123:000 -o xxx.tar    #将镜像打包为xxx.tar
docker load -i xxx.tar                #解压xxx.tar,部署镜像

另一种方法为export,这样生成的镜像只包含系统文件,以此镜像生成容器要加bash 

2、传输到内网其他服务器

从一台机器传到内网另一台机器,前面为源,后为目标。要确保用户权限。

scp /home/proj/xxx.tar username@1.1.1.1:/home/proj

六、其他

 1、移动硬盘挂载

sudo df -l #查看需要挂载的硬盘
mkdir /mnt/usr
sudo mount dev/sda1 /mnt/usr
sudo umount /mnt/usr    #用完后卸载再拔

2、修改用户文件夹及终端

vim etc/passwd

不要随便改。保存“:wq!”

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值