临渊羡鱼,不如退而结网
.

dokcer镜像添加ssh服务

说明:为镜像添加SSH服务其实就是一个构建新镜像的过程,主要哟两种方式,一种是基于commit命令,用来保存当前容器状态的镜像,另一种是基于dockerfile,通过配置文件,由底层镜像搭建。这里主要通过为镜像添加SSH服务的过程来熟悉镜像搭建过程。

如果没有ssh服务,需要从宿主机attach或者exec方式进入容器,但这没有办法解决从远端管理容器的方法。SSH可以通过远端主机连接docker容器,而不用从宿主机登录到容器。SSH虽然方便,但有许多人认为背离了docker的初衷,docker本就为单个服务而生,而且没有从远端主机管理的必要。

虽然有点争议,但好在SSH只占用 少量的资源,而且安全性有保证,NOW,让我们搁置争议,来康康如何 添加SSH服务吧!

1.获取并运行一个ubuntu:18.04镜像

docker pull ubuntu:18.04
docker run -it ubuntu:18.04 /bin/bash

或者直接运行run这一条命令也行,如果没有镜像则先拉取镜像,然后运行容器

-t 表示在新容器内指定一个伪终端或终端
-i 表示允许我们对容器内的 (STDIN) 进行交互
-d 其它地方会出现这个表示在后台运行

2.刚运行的容器一般无法使用很多命令,需要安装一些服务,但很多命令用不了,需要更新一下镜像源才能使用。一般国外的源比较慢,要改成国内的源。

为ubuntu更换阿里源,并更新

 cat > /etc/apt/sources.list <<EOF
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
EOF

更新

apt-get update

3.安装配置SSH服务

apt-get install -y openssh-server 

创建/var/run/sshd目录并启动SSH服务

mkdir -p /var/run/sshd
/usr/run/sshd -D &

可以通过netstat -ntlp查看ssh是否启动监听,如果没有这个命令需要安装一下

apt-get install -y net-tools

取消pam登录限制,注释掉有pam_loginuid.so这一行

vi /etc/pam.d/sshd

4.创建自启动SSH服务的可执行文件/run.sh,并添加可执行权限

vim /run.sh
#!/bin/bash
#内容为
/usr/sbin/sshd -D

最后退出容器

exit

5.将退出的容器保存为新的镜像

docker ps -a
#命名为sshd并添加ubuntu标签
docker commit ID sshd:ubuntu

查看本地新生成的镜像sshd:ubuntu

docker images sshd:ubuntu

6.启动容器,并添加端口映射

将宿主机的10022端口映射给容器的22端口

docker run -p 10022:22 -d sshd:ubuntu /run.sh

查看端口映射

docker container port ID

a6是容器ID的前几位,不用写全也可以

解释:

-p(小写):指定映射端口
-d: 后台运行
/run.sh 运行脚本

查看容器运行情况

docker ps

7.宿主机root用户生成ssh密钥对,通过访问宿主机端口映射来访问容器

ssh-keygen -t rsa

然后将/root/.ssh/authorized_keys复制到需要登录容器的主机内

在宿主机或其它能访问宿主机的机器上访问容器

ssh 192.168.92.134 -p 10022

 

 好了,现在可以从远端主机访问容器了

争议!啥争议?

真香。。。

后面会再介绍通过dockerfile方式为镜像添加SSH服务。

好了,没什么事情就退朝吧。

posted @ 2020-09-18 10:45  胖胖小飞侠  阅读(182)  评论(0编辑  收藏  举报