通过 SSH 远程连接 docker 容器

文章目录

一、容器端口映射

  1. 在启动容器前,通常会将 docker 容器中的 ssh 的默认端口与宿主机端口之间进行映射。
  2. 通常使用 docker run 命令来指定宿主机和容器之间的端口映射docker run -d -p <host_port>:<container_port> <image_name>-p 指定 宿主机端口容器端口 之间的关系,ssh 默认端口号是 22 ,如果不知道宿主机哪个端口是空闲的,可以指定 -p :22 ,让 docker 随机选择 一个宿主机的端口映射到容器的 22 端口,并且输出被选择的端口。端口号必须是 1 到 65535 之间的有效数字。
  3. 如果在 run 的时候指定了-net=host ,直接使用主机的网络栈,docker会忽略端口映射,因为容器直接使用主机的网络接口,不需要做端口映射。
  4. 启动容器后的映射结果:0.0.0.0:7777->22/tcp, :::7777->22/tcp ,其中0.0.0.0:7777->22/tcp 表示将宿主机的 IPv4 地址上的 7777 端口映射到容器的 22 端口。:::7777->22/tcp 表示将宿主机的 IPv6 地址上的 7777 端口映射到容器的 22 端口。
  5. 这样,在宿主机的所有网络接口 (包括 IPv4 和 IPv6)上监听 7777 端口。无论是从 IPv4 还是 IPv6 地址进行连接,都能够访问容器的 22 端口。

二、安装并启动SSH服务

  1. 启动 docker 容器之后,需要确保容器安装并启动了ssh 服务端才能远程连接。

    bash 复制代码
    apt update
    apt install -y openssh-server  # 安装open-ssh的服务端
  2. 修改容器内配置文件 /etc/ssh/sshd_config,允许 ssh 服务正常工作,确保以下参数没有被注释,并设置为 yes

    bash 复制代码
    PermitRootLogin yes
    PasswordAuthentication yes
  3. 设置 root 用户密码:passwd root 并在容器内启动 ssh 服务:service ssh start

三、连接docker容器

  1. 如果是终端连接,使用ssh -p 7777 root@宿主机ip 并输入 root 用户密码即可进入容器。

  2. vs code 中一般编辑本地用户的 ssh 配置文件 (~/.ssh/config )并增加如下内容。

    bash 复制代码
    Host docker-container  # 随意名称
        HostName 127.0.0.1 # 宿主机ip
        Port 7777 # 端口映射
        User root # 容器用户名
  3. 通过配置好的主机名(docker-container )选择 Remote-SSH: Connect to Host 连接。

小结

上述内容均来自个人实践,具有个人习惯性,如有其他问题欢迎在评论区讨论,谢谢!!

相关推荐
恋红尘24 分钟前
K8S 控制器-资源调度-叩丁狼
linux·docker·kubernetes
hjxu201610 小时前
【OpenClaw 龙虾养成笔记一】在远程服务器,使用Docker安装OpenClaw
服务器·笔记·docker
monsion10 小时前
OpenCode 学习指南
人工智能·vscode·架构
非鱼䲆鱻䲜11 小时前
vscode开发stm32添加新的头文件路径和包含源文件
ide·vscode·stm32·cmake·包含头文件·包含源文件
Stewie1213812 小时前
Docker 面试题
运维·docker·容器
vpk11212 小时前
Docker Compose 安装 Redis
redis·docker·容器
last demo14 小时前
Docker-compose和图形界面管理
docker·容器·eureka
liurunlin88815 小时前
Go环境搭建(vscode调试)
开发语言·vscode·golang
好像不对劲16 小时前
【docker】win10 wsl docker不能挂GPU
运维·docker·容器·wsl
江畔何人初17 小时前
Docker、containerd、CRI、shim 之间的关系
运维·docker·云原生·容器·kubernetes