连接wsl2 docker中的容器

一、声明

  docker容器不包括操作系统, 可以将容器看作一个应用, 远程连接容器的本质是远程连接容器所在的机器。通过端口号访问容器提供的服务。个人理解,欢迎纠正。

二、准备工作

1、获取wsl2的ip地址

  运行下面命令

ip addr 

ip地址
  其中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 ssh restart重启ssh服务.

3、设置容器内的账户密码

passwd 账户名

  用来之后远程连接

  按理说: 设置wsl2的账户密码 == 设置容器内的账户密码?

4、设置ssh service自重启

echo 'service ssh start' >> ~/.bashrc

5、打包容器

  容器打包为镜像,方便后续使用.
  运行打包好的镜像, 做好端口映射.

docker run -itd -p 2222:2222 容器id bash
第一个ip是wsl2的ip, 第二个ip是容器的ip

  注意: 这里暂时没设置ssh自启, 所以运行容器后需要进入启动ssh服务

三、远程连接容器

ssh root@ip -p 端口

举例:

本地windows ip:  192.168.99.1
wsl2 ip: 192.168.99.100
container ip: 172.17.0.3

那么要远程container, 则要访问以下地址:

ssh 192.168.99.100:50001
通过访问docker的50001端口, 间接连通到container的22端口. 

四、鸣谢

参考自https://medium.com/@steveokeno/permission-denied-publickey-password-d5a8541bb4e4
参考自https://www.shuzhiduo.com/A/D8548B225E/

你可能感兴趣的:(docker)