docker中安装ssh服务

系统:Debian Docker

目标:在docker(debian系统)中安装ssh服务,实现远程登陆和控制docker

步骤:

初始状态:通过docker pull debian得到的一个debian的docker

1,docker run -i -t debian /bin/bash 登录到docker的shell界面,方便之后的操作

2,apt-get update: docker默认root登录,apt-get install 几乎不能用,因为需要更新一下源(可能是为了更轻量)

3,apt-get install openssh-server 安装openssh(安装 vim等一切需要又没有的软件)

4,更改/etc/ssh/sshd_config配置:PermitRootLogin withoutr-passwd 更改为 PermitRootLogin yes(需要root登录,一般docker都用root登录,否则有点麻烦,当然也可以不配置,这样必须新建一个普通用户用来登录)

                 UsePAM yes 更改为 UsePAM no (因为linux系统默认是使用pam管理登录的,使用ssh的配置更为方便)

5,创建密码:passwd命令创建密码

6,service ssh start 启动ssh服务进行验证:重新开启一个shell,通过ssh命令连接docker看看是否成功(ssh root@ip,这里的ip可以在docker里面使用ip addr命令查询;或者,在安装docker的Linux系统上使用docker inspect | grep IP 查询)。是,进行下面一步;否,查看问题原因。

7,exit 退出(或者在原linux机器里面使用docker stop CONTAINER_ID)

8,创建新的镜像:可以当做把这一步当做保存所有的设置,使用命令docker commit CONTAINER_ID debian/ssh创建镜像

9,用刚保存的镜像,后台启动一个新的容器:docker run -d debian/ssh /etc/init.d/ssh start -D 或者 docker run -d debian/ssh /usr/sbin/sshd -D

 (解释一下:-d表示希望container在后台启动;-D表示希望ssh不要以守护进程启动,这样做的目的是保证container不退出)

  --------------> -d参数解释

    -----------> -D参数解释

10,ssh root@ip进行远程登录

思考与改进:

1,每次需要知道container的ip才能进行登录有些麻烦,可以对容器进行端口映射,命令行

docker run -d -p 50001:22 debian/ssh /usr/sbin/sshd -D

启动之后直接 ssh root@localhost -p 50001 就可以登录了

2,配置无密码登录

原文地址:https://www.cnblogs.com/chen-kh/p/5986242.html