docker配置ssh

前言——什么是docker

Docker 技术使用 Linux 内核和内核功能(例如 Cgroup 和命名空间)来分隔进程,以便各进程相互独立运行。。

容器工具(包括 Docker)可提供基于镜像的部署模式。这使得它能够轻松跨多种环境,与其依赖程序共享应用或服务组。

借助 Docker,您可将容器当做轻巧、模块化的虚拟机来使用。同时,您还将获得高度灵活性,实现对容器的高效创建、部署及复制,并在环境之间迁移它们,从而有助于您针对云来优化应用。

准备

本文默认读者在服务器上已经安装了docker,并已经拉取了镜像。本文中演示的镜像是ubuntu的22.04版本,若使用centos的小伙伴使用时请将下载命令改成centos的yum
eg:

apt install vim

改成

yum install vim

docker容器外面

首先,我们查看我们拉取好的镜像名字

1
1
1
docker image

确认好我们有ubuntu后,开始创建容器
这里我们使用命令

1
1
1
docker run -it -d -p : --name  ubuntu:22.04 bash

d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的端口(大写P)
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口(小写p)
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
–name=”nginx-lb”: 为容器指定一个名称;
bash 进行命令行输入

此处–name 后面的名字可以自己定义,然后空格后是读取的镜像名字,一定是已经拉取的,
端口号我这里是宿主机上的1212端口映射到容器里面的80端口,这样我们访问宿主机的1212就能直接访问到容器的80端口

创建后,由于我们使用了 -d系统会返回一串ID回来,这个是容器的唯一ID
然后我们输入命令

1
1
1
docker ps -a

来查看现在所有运行的docker容器

可以看到,我们的容器已经创建了并运行了,同时端口号也映射好了

接着,我们进入docker容器

1
1
1
docker exec -it ssh_test

再次提示, ssh_test是我自定义的名字,这里-it后面输入的是你刚刚自己创建的名字(要英文的!!!)
输入完就进入到容器噜

docker容器里面

首先,我们先更新一下ubuntu

1
1
1
apt-get update


然后安装ssh服务端

1
1
1
apt-get install openssh-server


安装完毕后大概是这样

接着,由于我们要编辑配置文件,我们先下载一个vim文本编辑器

1
1
1
apt-get install vim

Vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。

下载好后,我们编辑ssh的配置文件

1
1
1
vim /etc/ssh/sshd_config


进入到这样的界面

接着,我们现在输入或者删除,是没有反应的,由于我们处于vim编辑器的正常模式(Normal-mode)

正常模式一般用于浏览文件,也包括一些复制、粘贴、删除等操作。这时击键时,一些组合键就是 vim 的功能键,而不会在文本中键入对应的字符。
在这个模式下,我们可以通过键盘在文本中快速移动光标,光标范围从小到大是字符、单词、行、句子、段落和屏幕。
启动 VIM 后默认位于正常模式。不论是什么模式,按一下 键 ( 有时可能需要按两下,插入模式按一下 Esc ,就会切换到正常模式,
这个时候,我们点击键盘上面的 i进入插入模式(Insert-mode)
该模式启动以后,就会进入编辑状态,通过键盘输入内容
然后我们开始配置ssh

第一

找到 #Port22,把#号删掉,然后将22改成之前你映射的端口号

第二

然后点击键盘上的下,找到 UsePAM yes把他改成 no

第三

最后找到 #PermitRootLogin no改成 yes
找不到就直接在最后一行直接加

1
1
1
PermitRootLogin yes

然后按两次键盘上面的esc键,退出编辑模式
再输入

1
1
1
:wq

退出vim文本编辑器

VIM 的最终操作就是 VIM 的退出,如何进行 VIM 的有效退出呢?下面针对 VIM 的退出来做一下说明:

:w
保存当前对文件的修改,但是不退出文件。

:w!

强制保存但是不退出文件。

:w file
保存当前的文件修改到 file 文件当中。

:q!

退出文件,对文件的修改不做保存。

:wq
退出文件并保存对文件的修改。

:e!

放弃对文件的所有修改,恢复文件到上次保存的位置。

:saveas file
另存为 file。

启动ssh服务

接着我们启动ssh服务

1
1
1
service ssh start


接着我们修改一下root用户的密码,这样我们就能直接用端口号,从公网直接访问docker容器

1
1
1
passwd root


这个时候我们的ssh就配置完辣,我们退出容器,尝试用本地直接访问docker

1
1
1
exit

退出docker命令 exit


然后我们再尝试用服务器的本机回环直接进入docker

成功!
这就是docker内配置ssh

后续

要是之后需要用cmd直接访问docker 内部,只需把你的127.0.0.1改成你服务器的ip