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,配置无密码登录