通过ssh远程连接docker中的容器

通过ssh远程连接docker中的容器

需求:

想自己搭建一个ubuntu的lnmp环境,但是使用powershell的时候,各种别扭,所以就考虑远程连接,通过putty或者xshell来连接

环境:

系统:Win10

docker:Version 17.06.0-ce-win19 (12801)

容器管理:kitematic for windows

远程连接工具:xshell

容器系统:ubuntu

过程:

一、下载ubuntu容器

从ketematic中下载官方最新版ubuntu

备注:1、推荐使用阿里云或者国内的其他镜像,速度非常快

2、如果不用ubuntu,你也可以使用其他linux发行版,都是类似操作

二、准备工作

因为新装的官方ubuntu中很多命令都没有,需要自己安装

apt-get update

apt-get install vim

给root初始化密码

sudo passwd root(如果sudo命令不存在,使用passwd root)

然后设置密码即可,比如我直接设置的密码就为root

备注:1、如果你不想用root账号,可以增加其他账号,ssh配置和登录的时候使用其他账号即可

三、安装ssh

安装

apt-get install openssh-server

查看状态

service ssh status

开启ssh

service ssh start

四、配置ssh,运行root登录

vim /etc/ssh/sshd_config

PermitRootLogin的值从prohibit-password改为yes

如下:

- PermitRootLogin prohibit-password + PermitRootLogin yes

编辑完后进行保存,然后重启ssh

service ssh restart

五、保存当前容器的更改

通过kitematic打开,或者通过Docker Quickstart Terminal打开docker命令操作

docker ps查看当前正在运行的docker有哪些

可以看到当前运行的ubuntu的容器ID为多少

保存新容器

docker commit 66b34b5228d8

备注:1、语法为docker commit 容器ID

六、给容器配置可访问端口

因为ssh的端口为22,那么我们配置一个外部端口来访问容器中的端口

配置好后,点击保存,容器会自动重启

备注:1、外部端口可以随便配置一个不冲突的端口即可,我这里配置的50001

2、重启容器后,可能需要重新启动ssh,service ssh start

七、通过xshell、putty连接容器

以上所有工作都准备完了,我们需要通过docker的ip地址进行访问(不能通过容器的ip地址访问,因为要进行映射)。

本地cmd-》ipconfig查看当前docker的ip地址

那么我们ssh访问的地址即为上面两步配置的192.168.56.1:50001

账号为root,密码为root

你可以通过putty或者xshell等ssh客户端工具进行连接

此时,连接成功

总结:

以上操作没有考虑安全问题,直接用的root啊,ssh也没有经过多余配置,因为这个是本地的开发环境搭建,所以简单即可。

因为kitematic的存在,很多地方变得所见即所得了,很直观。不像之前使用命令来操作,如果你喜欢使用命令,那么不用kitematic其实都是一样的,没区别。

推荐阅读