docker容器添加ssh服务
本篇文章主要介绍如何为一个容器添加ssh服务,使得可以从另一台服务器直接ssh到一个容器内部,达到直接访问容器内部环境的目的,避免需从宿主机docker exec或attach进入容器
实验环境:两台服务器地址 192.168.91.131 192.168.91.133(容器所在宿主机)
实验结果:从192.168.91.131可以通过ssh 192.168.91.133 -p xxxx直接访问容器内部
实验过程:
1、获取ubuntu系统镜像,从本地镜像库下载,若没有可以从Docker Hub中下载
docker images查看服务器中存在镜像,若没有需从远端仓库中docker pull下载
2、根据该镜像创建容器
docker run -it -d usshdtest:sshdtest //未指定容器名称随机生成
docker ps查看容器已运行
3、进入容器安装sshd服务
3.1 进入容器
docker exec -it a8c65e013d27 bash
3.2 安装ssh服务
apt-get install openssh-server
3.3 ssh服务安装完成无问题后,编辑/etc/ssh/sshd_config配置文件,添加允许root用户访问,增加配置如下
3.4 配置添加完成后启动sshd服务
/usr/sbin/sshd //默认安装路径,启动sshd服务
查看sshd服务已启动
3.5 在容器内部环境,为root用户添加一个密码 ,添加完成后Ctrl p+q退出容器
passwd root
4、 根据运行的容器重新创建镜像
docker commit a8c65e013d27 ubuntu:sshdtest
创建完成后可以docker images核对一下,镜像是否创建成功
5、根据新创建的镜像运行容器
docker run -it -p 11002:22 -d ubuntu:sshdtest //-p参数配置端口映射,将容器内22端口(sshd服务占用端口,可在容器内部netstat命令查看)映射到宿主机11002端口
查看新容器已运行,且11002与22端口映射
6、docker exec进入容器运行sshd服务,此处也可做成脚本在运行容器的时候执行脚本启动sshd服务,确保sshd服务运行
7、从另一台服务器192.168.91.131直接通过映射的11002端口ssh 192.168.91.133 -p 11002访问容器内部,输入3.5步骤中的root用户名密码,访问成功