docker配置ssh
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