• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >虚拟化 > 创建支持SSH服务的Docker镜像的方法

创建支持SSH服务的Docker镜像的方法

作者:delphiwcdj 字体:[增加 减小] 来源:互联网

本文主要包含SSH服务的Docker镜像,创建SSH服务的Docker镜像等服务器相关知识,delphiwcdj 希望可以进行参考

摘要:通常Linux系统管理员通过SSH服务来管理OS,但Docker的很多镜像是不带SSH服务的,可以通过attach(遇到假死的现象)或者exec(目前测试ok)的方法进入容器来管理,但是这些命令都无法解决远程管理容器的问题,因此,当需要远程登陆到容器内进行一些操作的时候,就需要SSH的支持了。本文记录如何使用docker commit创建一个带有SSH服务的ubuntu镜像。

(1) 首先以交互的方式运行我们本地的ubuntu容器

docker run -it ubuntu:14.04 /bin/bash

(2) 尝试使用sshd命令,会发现容器中没有安装该服务。

sshd

bash: sshd: command not found

(3) 使用apt包管理器安装openssh-server

apt-get update


apt-get install openssh-server

(4) 安装和配置SSH服务

要正常启动SSH服务,需要目录/var/run/sshd存在,手动创建它,并启动服务:

mkdir -p /var/run/sshd

/usr/sbin/sshd -D &

此时查看容器的22端口(SSH服务器默认监听的端口),已经处于监听状态:


(5) 修改SSH服务的安全登陆配置

在远端客户端机器(即,非容器机器)执行命令 ssh-keygen -t rsa 生成rsa的公私密钥对,然后把公钥的信息拷贝到运行ubuntu容器机器的授权文件中:

mkdir /root/.ssh

vi /root/.ssh/authorized_keys # 粘贴客户端的公钥信息

(6) 创建自启动SSH服务的可执行文件run.sh

vi /run.sh

chmod +x /run.sh

脚本内容如下:

#!/bin/bash

/usr/sbin/sshd -D

(7) 最后退出容器,并将当前修改后的容器保存为一个新的镜像

在宿主主机执行命令 docker ps -a 查看容器的运行状态,可以得到刚才退出容器的container id,记住id前三位。

然后执行提交命令,保存新的镜像:

docker commit $(container id前三位) ubuntu_sshd_gerry:14.04

此命令提交后,会生成一个新的镜像id*(image id)和新的镜像 ubuntu_sshd_gerry:14.04(支持ssh服务的ubuntu镜像)

最后,可以使用 docker images 查看本地的镜像是否已经包含我们新创建的镜像 ubuntu_sshd_gerry:14.04。


(8) 使用新镜像和配置端口映射

启动容器,并添加端口映射 10022(宿主主机端口)---> 22(容器内部SSH服务监听端口):

docker run -p 10022:22 -d ubuntu_sshd_gerry:14.04 /run.sh

启动后,可以在宿主主机上看到容器运行的详细信息:


(9) 在宿主主机,或者其他远程主机,使用SSH访问10022端口来登陆容器,测试OK


补充说明:

对一个镜像打一个新的tag的方法(只是tag不一样,实际是同一个image,因为image id是一样的):

docker tag $(image id) ubuntu_sshd_gerry:14.04

然后将老的tag删除掉:

docker rm $(container id)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

您可能感兴趣的文章:

  • SSH远程登录和端口转发详解
  • SSH的ssh-keygen命令基本用法详解
  • windows安装openssh并通过生成SSH密钥登录Linux服务器
  • 实现一台或者多台Linux实例解绑SSH密钥对
  • 深入浅析SSH的三个组件ssh、sftp、scp
  • 使用PSSH批量管理Linux服务器
  • Redis未授权访问配合SSH key文件利用详解
  • SSH原理及两种登录方法图文详解
  • CentOS7增加或修改SSH端口号的方法
  • PyCharm设置SSH远程调试的方法
  • 详解基于django实现的webssh简单例子
  • SSH 上传文件及文件夹到linux服务器的方法
  • CentOS6.5与CentOS7 ssh修改默认端口号的方法
  • Spring+Hibernate+Struts(SSH)框架整合实战
  • ubuntu16.04安装ssh服务并实现远程访问的方法
  • rsync指定ssh端口进行文件同步的方法
  • 利用python 更新ssh 远程代码 操作远程服务器的实现代码
  • 用Go写一个轻量级的ssh批量操作工具的方法
  • SSH端口转发,本地端口转发,远程端口转发,动态端口转发详解
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 创建支持SSH服务的Docker镜像的方法

相关文章

  • 详解基于docker-swarm搭建持续集成集群服务
  • Vmware+Centos7搭建Openstack环境(网络配置)
  • docker常用命令总结之安装、镜像、容器基本操作
  • OpenStack 创建windows镜像实现步骤
  • 使用Docker开发python Web 应用
  • Docker如何固定IP设置的方法
  • XenServer安装后修改IP与域名并解析测试的方法
  • Xen虚拟机的详细迁移步骤详解
  • Dockerfile中CMD和ENTRYPOINT命令详解
  • 优化提高VMware虚拟机运行速度的技巧(详细图文教程)

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • 戴尔VDI告诉你:未来就这么简单
    • Docker容器内存限制的方法
    • 虚拟化之VMware Workstation 10.0.x安装教程(图文)
    • Docker配置国内加速器加速镜像下载的方法
    • docker Nginx PHP-FPM单机多站点布署的方法
    • 在Ubuntu 16.04上用Docker Swarm和DigitalOcean创建一个Docker容器集群的方法
    • Ubuntu Docker 安装教程
    • Hadoop编程基于MR程序实现倒排索引示例
    • 详解如何查看 docker 容器使用的资源
    • Vrtualbox虚拟机中共享文件夹配置教程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有