文章目录
一、容器端口映射
- 在启动容器前,通常会将
docker
容器中的ssh
的默认端口与宿主机端口之间进行映射。 - 通常使用
docker run
命令来指定宿主机和容器之间的端口映射docker run -d -p <host_port>:<container_port> <image_name>
,-p
指定 宿主机端口:容器端口 之间的关系,ssh 默认端口号是 22 ,如果不知道宿主机哪个端口是空闲的,可以指定-p :22
,让 docker 随机选择 一个宿主机的端口映射到容器的 22 端口,并且输出被选择的端口。端口号必须是 1 到 65535 之间的有效数字。 - 如果在
run
的时候指定了-net=host
,直接使用主机的网络栈,docker会忽略端口映射,因为容器直接使用主机的网络接口,不需要做端口映射。 - 启动容器后的映射结果:
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 端口。 - 这样,在宿主机的所有网络接口 (包括 IPv4 和 IPv6)上监听 7777 端口。无论是从 IPv4 还是 IPv6 地址进行连接,都能够访问容器的 22 端口。
二、安装并启动SSH服务
-
启动 docker 容器之后,需要确保容器安装并启动了
ssh
服务端才能远程连接。bashapt update apt install -y openssh-server # 安装open-ssh的服务端
-
修改容器内配置文件
/etc/ssh/sshd_config
,允许ssh
服务正常工作,确保以下参数没有被注释,并设置为yes
。bashPermitRootLogin yes PasswordAuthentication yes
-
设置 root 用户密码:
passwd root
并在容器内启动ssh
服务:service ssh start
。
三、连接docker容器
-
如果是终端连接,使用
ssh -p 7777 root@宿主机ip
并输入 root 用户密码即可进入容器。 -
vs code 中一般编辑本地用户的 ssh 配置文件
(~/.ssh/config )
并增加如下内容。bashHost docker-container # 随意名称 HostName 127.0.0.1 # 宿主机ip Port 7777 # 端口映射 User root # 容器用户名
-
通过配置好的主机名(docker-container )选择
Remote-SSH: Connect to Host
连接。
小结
上述内容均来自个人实践,具有个人习惯性,如有其他问题欢迎在评论区讨论,谢谢!!