一、声明
docker容器不包括操作系统, 可以将容器看作一个应用, 远程连接容器的本质是远程连接容器所在的机器。通过端口号访问容器提供的服务。个人理解,欢迎纠正。
二、准备工作
1、获取wsl2的ip地址
运行下面命令
ip addr
其中eth0中的172.21.192.44是wsl2的ip地址.
2、容器内安装ssh server并修改配置文件
sudo apt-get purge openssh-server # purge 是卸载并删除配置文件
sudo apt-get install openssh-server # 安装ssh 服务器
service ssh status # 查看ssh服务启动情况
service ssh start # 启动ssh服务
注意:service ssh start而不是service sshd start,
虽然sshd才是服务器, 而ssh是客户端, 但/etc/init.d/sshd start已经无效了,
cd /etc/init.d/进去是没有sshd的, 只有ssh这是正常的,实际上ssh里的内容也是启动sshd服务的
修改配置文件/etc/ssh/sshd_config
PermitRootLogin 值修改为 yes
PasswordAuthentication 值修改为 yes
Port 值修改为2222 (22端口比较特殊, windows可能会使用到)
随后service sshd restart
重启ssh服务.
3、设置容器内的账户密码
passwd 账户名
用来之后远程连接
按理说: 设置wsl2的账户密码 == 设置容器内的账户密码?
4、打包容器
容器打包为镜像,方便后续使用.
运行打包好的镜像, 做好端口映射.
docker run -itd -p 2222:2222 容器id bash
第一个ip是wsl2的ip, 第二个ip是容器的ip
三、远程连接容器
ssh root@ip -p 端口