Docker-为镜像添加SSH服务
进入容器的办法有很多,包括exec、attach等命令,但是这些命令都无法解决远程管理容器的问题,因此,需要SSH的支持
基于commit命令创建
docker提供了docker commit命令,支持用户提交自己对指定容器的修改,并生成新的镜像。命令格式为docker commit CONTAINER [REPOSITORY[:TAG]]
Centos6开启SSH服务
启动容器
FengZhen$ docker run -it --name centos6 centos:6 /bin/bash
-t选项让docker分配一个伪终端并绑定到容器的标准输入上,-i则让容器的标准输入保持打开
当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括: 
(1)检查本地是否存在指定的镜像,不存在就从公有仓库下载
(2)利用镜像创建并启动一个容器
(3)分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
(4)从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
(5)从地址池配置一个 ip 地址给容器
(6)执行用户指定的应用程序
(7)执行完毕后容器被终止
查看centos版本信息
[root@ee8961b00872 /]# cat /etc/redhat-release
CentOS release 6.9 (Final)
修改root密码
使用passwd来修改密码(如果没有这个命令,使用yum install passwd安装)
[root@ee8961b00872 /]# passwd
Changing password for user root.
New password:
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
安装Openssh
使用下面的命令安装ssh server / ssh client
[root@ac1a6c198331 /]# yum -y install openssh-server
[root@ac1a6c198331 /]# yum -y install openssh-clients
修改SSH配置文件以下选项,去掉#注释,将四个选项启动
[root@ac1a6c198331 /]# vi /etc/ssh/sshd_config
RSAAuthentication yes #启用 RSA 认证
PubkeyAuthentication yes #启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径(和上面生成的文件同)
PermitRootLogin yes #root能使用ssh登录
重启SSH服务,并设置开机启动
[root@ee8961b00872 /]# service sshd restart
Stopping sshd: [FAILED]
Generating SSH2 RSA host key: [ OK ]
Generating SSH1 RSA host key: [ OK ]
Generating SSH2 DSA host key: [ OK ]
Starting sshd: [ OK ] [root@ee8961b00872 /]# chkconfig sshd on
退出容器并保存更改
exit
现在容器已经改变了,使用docker commit 命令来提交更新后的副本
FengZhen$ docker commit -m 'install openssh' -a 'Docker FZ' ee8961b00872 centos6:ssh
sha256:c524261c526e33f69c88137c40cd3b37b47fe28456e18829f17c10172c37a8cc
其中,-m来指定提交的说明信息, -a可以指定更新的用户信息
启动新的容器并打通22端口
FengZhen$ docker run -d -p 50001:22 centos6:ssh /usr/sbin/sshd -D
b32b35215f14fd97ccee644a2aacd36027db975001d8e58fe332c7f52f7cf2f2
FengZhen$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b32b35215f14 centos6:ssh "/usr/sbin/sshd -D" 8 minutes ago Up 8 minutes 0.0.0.0:50001->22/tcp
端口成功绑定到宿主主机50001上
ssh连接容器
FengZhen$ ssh root@localhost -p 50001
The authenticity of host '[localhost]:50001 ([::1]:50001)' can't be established.
RSA key fingerprint is SHA256:qvyvwqtXimyC+lN1fiLENbpgdjgO9tvCT89hs/DUhBY.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[localhost]:50001' (RSA) to the list of known hosts.
root@localhost's password:
[root@b32b35215f14 ~]#
成功
Docker-为镜像添加SSH服务的更多相关文章
- docker 为镜像添加ssh服务-docker commit命令创建
		
环境centos7 一.准备工作 docker pull ubuntu:18.04 docker run -it ubuntu:18.04 bash 二.配置软件源apt-get update,如果系 ...
 - docker为镜像添加SSH服务
		
启动并进入容器中 这里用db1容器完成实验. 安装openssh服务和修改sshd配置文件 安装openssh yum install openssh-server openssh-clients - ...
 - docker 为镜像添加ssh服务-使用Dockerfile 创建
		
首先,基于要添加内容的镜像ubuntu:18.04运行一个容器, 在宿主机(下面步骤是在容器中创建的,应该在宿主机创建进行以下步骤) 一.创建一个工作目录 二.创建Dockerfile 和脚本run. ...
 - 读书笔记---《Docker 技术入门与实践》---为镜像添加SSH服务
		
之前说到可以通过attach和exec两个命令登陆容器,但是如果遇到需要远程通过ssh登陆容器的场景,就需要手动添加ssh服务. 下面介绍两种方法创建带有ssh服务的镜像,commit命令创建和通过D ...
 - 为镜像添加SSH服务
		
操作Docker容器介绍了一些进入容器的办法,比如attach.exec等命令,但是这些命令都无法解决远程管理容器的问题.因此,当需要远程登录到容器内进行一些操作的时候,就需要SSH的支持了. 如何自 ...
 - Docker实战-为镜像添加SSH服务
		
1.基于docker commit命令创建 Docker提供了docker commit命令,支持用户提交自己对定制容器的修改,并生成新的镜像. 命令格式为:docker commit CONTAIN ...
 - Docker实战(七)之为镜像添加SSH服务
		
1.基于commit命令创建 Docker提供了docker commit命令,支持用户提交自己对制定容器的修改,并生成新的镜像.命令格式为docker commit CONTAINER [REPOS ...
 - 为Docker镜像添加SSH服务
		
一.基于commit命令创建 1. 首先下载镜像 $ docker run -it ubuntu:16.04 /bin/bash 2. 安装SSH服务 #更新apt缓存 root@5ef1d31632 ...
 - 添加ssh服务构建新镜像-docker commit 方式01
		
添加ssh服务构建新镜像-docker commit 方式 1:docker commit构建自定义镜像---一般不推荐使用这种方式构建新镜像 1:ubuntu基础镜像下载 ubuntu@ubuntu ...
 
随机推荐
- Java利用Axis远程调用WebService接口
			
准备工作: 主要依赖的包: 1.axis.jar 官网:http://axis.apache.org/axis/ 2.jaxrpc.jar 下载地址:http://www.java2s.com/Cod ...
 - C# 接口中的索引器
			
索引器可在 接口(C# 参考) 上声明.接口索引器的访问器与类索引器的访问器具有以下方面的不同: 接口访问器不使用修饰符. 接口访问器没有体. 因此,访问器的用途是指示索引器是读写.只读还是只写.以下 ...
 - eclipse maven 依赖jar下载失败解决办法
			
针对PC与Maven私服之间网络传输问题 打开.m2本地仓库所在目录, 通过win文件夹的搜索功能,查找 *.lastUpdated ,然后将找到的文件全部删除 重新 Maven Update Pro ...
 - 关于ViewData,ViewBag,TempData三者学习记录!
			
关于ViewData,ViewBag,TempData三者学习分享! 1.ViewData和TempData是字典类型,赋值方式用字典方式,ViewData["Key"] . 2. ...
 - Pycharm context menu disable RUN option
			
这个问题很坑.正常来说一个文件右键出来的是 Run 选项, 可是近期几个文件都是 Unititest 的測试选项,每次要执行的时候都要手工去配置Run Option,在尝试了: 0. 重置IDE配置 ...
 - mac地址绑定
			
1.导入第三方类库: <?php /** * FILE_NAME : Macaddr.php * linux平台获取服务器mac地址 * @filesource */ class Macaddr ...
 - 网页上10秒倒计时,完了后就自动跳转到另一个网页上html代码
			
用html代码的话就这样: <meta http-equiv="Refresh" content="10;URL=http://www.baidu.com" ...
 - ios 推送 证书配置
			
S的推送证书,有有效期限制,一般为一年.当我们证书过期的时候,就需要重新生成证书了.有一段时间没有上苹果网站了,昨天上去一看,此奥,改版了,下边我们将重新生成一个正式环境的push推送的证书. 1.先 ...
 - React Native安装步骤
			
先贴出中文网安装指南:http://reactnative.cn/docs/0.46/getting-started.html 本文会点出一些安装时遇到的坑,和解决方案! 1.首先是安装Chocola ...
 - lua元表(简单例子)
			
Set = {} Set.mt = {}--定义普通的表作为元表,为了避免命名污染直接放在Set内部 function Set.new(t) local set = {} setmetatable(s ...