docker基于commit命令创建支持ssh服务的镜像
以centos为基础,目的使用ssh服务远程连接docker容器。
环境:宿主机centos7(宿主机ip地址为192.168.164.130),直接搜索docker的centos镜像,下载最新版本。
[root@localhost ~]# docker search -s 15 centos

[root@localhost ~]# docker pull docker.io/centos
使用centos镜像启动一个容器centos_ssh
[root@localhost ~]# docker run -it --name=centos_ssh centos /bin/bash
进入容器之后,升级并安装ssh组件,命令如下:
[root@ fdb751de5762 ~]# yum -y update
[root@ fdb751de5762 ~]# yum -y install openssh-server
[root@ fdb751de5762 ~]# vi /etc/ssh/sshd_config
编辑sshd的配置文件/etc/ssh/sshd_config,将其中的UsePAM yes改为UsePAM no
在宿主机中生成密钥对,把生成的公钥文件中的内容复制到容器的/root/.ssh/authorized_keys里,如果无对应目录则手动创建。
[root@localhost ~]# ssh-keygen -t rsa
[root@localhost ~]# cat /root/.ssh/id_rsa.pub

进入centos_ssh容器
[root@ fdb751de5762 ~]# mkdir .ssh
[root@ fdb751de5762 ~]# cd .ssh
[root@ fdb751de5762 .ssh]# vi authorized_keys
[root@ fdb751de5762 .ssh]# cat authorized_keys

设置容器root密码
[root@ fdb751de5762 ~]# echo "root:123456"|chpasswd
创建 /var/run/sshd/目录,要不然sshd服务启动会报错
[root@ fdb751de5762 ~]# mkdir /var/run/sshd/
[root@
fdb751de5762 ~]# /usr/sbin/sshd -D &
WARNING: 'UsePAM no' is not supported in
Red Hat Enterprise Linux and may cause several problems.(1)
Could not load host key: /etc/ssh/ssh_host_rsa_key(2)
Could not load host key:
/etc/ssh/ssh_host_ecdsa_key
Could not load host key:
/etc/ssh/ssh_host_ed25519_key
启动时会提示以上信息,(1)表示:修改了sshd_conf文件中的UsePAM yes改成UsePAM no
(2)表示:没有主机的公私秘钥,重新生成密钥
[root@fdb751de5762
~]# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
[root@fdb751de5762
~]# ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
[root@fdb751de5762
~]# ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
[root@fdb751de5762
~]# /usr/sbin/sshd -D &

[root@fdb751de5762
~]# ps -ef | grep sshd
root 1
0 0 22:16 ? 00:00:00 /usr/sbin/sshd -D
root
33 7 0 22:37 pts/0 00:00:00 grep --color=auto sshd
[root@fdb751de5762
~]# yum -y install lsof
[root@fdb751de5762
~]# lsof -i:22

[root@
fdb751de5762 ~]# vi run.sh
#/bin/bash
/usr/sbin/sshd -D &
[root@fdb751de5762
~]# chmod 755 run.sh
[root@fdb751de5762
~]# exit
在宿主机中使用commit命令将centos_ssh创建为sshd_centos镜像
[root@localhost
~]# docker commit fdb751de5762 sshd_centos

运行该镜像并启动sshd服务
[root@localhost
~]# docker run -p 10022:22 -d sshd_centos /usr/sbin/sshd –D
[root@localhost
~]# docker ps

说明:10022是宿主机的和容器的通讯端口,外面窗口(局域网)通过访问地址
ssh root@宿主机IP -p 10022(IP和端口之间有空格,不是:)就能进入容器,如果没有设置ssh免密登录,则输入刚才为容器的root用户设定的密码。
[root@localhost
~]# ssh root@192.168.134.130 -p 10022

如上所示,成功进入容器。
如果碰见下述错误

则可以执行下述指令#mv /root/.ssh/known_hosts /tmp

docker基于commit命令创建支持ssh服务的镜像的更多相关文章
- docker基于Dockerfile命令创建支持ssh服务的镜像
首先,创建一个sshd_centos工作目录: [root@localhost ~]# mkdir sshd_centos [root@localhost ~]# cd sshd_centos [ro ...
- ubuntu-docker入门到放弃(八)创建支持SSH服务的镜像
我们知道进入docker容器可以使用attach.exec等命令来操作和管理,但是如果需要远程登录并管理容器,就需要ssh服务的支持了. 1.基于commit命令创建 docker提供了commit命 ...
- 创建支持SSH服务的镜像
一.基于commit命令创建 docker commit CONTAINER [REPOSITORY [:TAG]] 1.使用ubuntu镜像创建一个容器 docker run -it ubuntu ...
- 使用Dockerfile创建支持SSH服务的镜像
1.前面我们学习了使用Dockerfile,那接下来我们就用Dockerfile创建一个支持SSH服务的镜像. 2.首先创建一个目录ssh_centos [root@rocketmq-nameserv ...
- docker如何创建支持SSH服务的镜像
一般情况下,Linux系统管理员通过SSH服务来管理操作系统,但Docker的很多镜像是不带SSH服务的,那么我们怎样才能管理操作系统呢?在第一部分中我们介绍了一些进入容器的办法,比如用attach. ...
- Docker(2):使用Dockerfile创建支持SSH服务的镜像
1.创建工作目录 # mkdir sshd_ubuntu # ls 在其中,创建Dockerfile和run.sh文件 # cd sshd_ubuntu/ # touch Dockerfile run ...
- Docker创建支持ssh服务的容器和镜像
原文链接:Docker创建支持ssh服务的容器和镜像 1. 这里使用的centos作为容器,所以首先下载centos的images # sudo docker pull centos 2. 下载后执行 ...
- 两种方式创建支持SSH服务的docker镜像
方法一:基于commit命令创建 1.首先,从docker的源中查看我们需要的镜像,本案例中使用Ubuntu作为基础镜像. # federico @ linux in ~ [16:57:38] $ s ...
- Docker使用Dockerfile创建支持ssh服务自启动的容器镜像
原文链接:Docker使用Dockerfile创建支持ssh服务自启动的容器镜像 1. 首先创建一个Dockerfile文件.文件内容例如以下 # 选择一个已有的os镜像作为基础 FROM cento ...
随机推荐
- linux及安全《Linux内核设计与实现》第二章——20135227黄晓妍
第二章:从内核出发 2.1获取源代码 2.1.1使用git Git:内核开发者们用来管理Linux内核源代码的控制系统. 我们使用git来下载和管理Linux源代码. 2.1.2安装内核源代码(如果使 ...
- git commit的规范
https://www.yuque.com/fe9/basic/nruxq8#6c228def 制定一个 git commit 信息的提交规范是开发团队工作流必不可少的环节.试想一下,如果查看主分支上 ...
- 【熊猫TV】《程序员》:聚光灯下的熊猫TV技术架构演进
2015年开始的百播大战,熊猫TV是其中比较特别的一员. 说熊猫TV是含着金钥匙出生的公子哥不为过.还未上线,就频频曝光,科技号,微博稿,站上风口浪尖.内测期间更是有不少淘宝店高价倒卖邀请码,光内测时 ...
- HDU 1698 Just a Hook(线段树:区间更新)
http://acm.hdu.edu.cn/showproblem.php?pid=1698 题意:给出1~n的数,每个数初始为1,每次改变[a,b]的值,最后求1~n的值之和. 思路: 区间更新题目 ...
- 【Docker】Windows下docker环境搭建及解决使用非官方终端时的连接问题
背景 时常有容器方面的需求,经常构建调试导致测试环境有些混乱,所以想在本地构建一套环境,镜像调试稳定后再放到测试环境中. Windows Docker 安装 安装docker toolbox 博主的电 ...
- AndroidStudio怎样导入library项目开源库
AndroidStudio是一款非常强大的android程序开发软件,在里面集成了几乎所有android开发中需要使用的工具,编译.运行.打包.开发.调试等功能一应俱全,可以使用起来非常方便. 今天要 ...
- Appium 自动化测试(6) -- 使用Appium操作YY语音例子
#!/usr/bin/env python # -*- coding: utf-8 -*- import os import unittest from appium import webdriver ...
- type使用细则
CREATE OR REPLACE TYPE ADDRESS_TYPE --创建类型 ADDRESS_TYPE AS OBJECT(ZIP VARCHAR2(6),PROVINCE VARCHAR ...
- 基于Oracle的SQL优化(崔华著)-整理笔记-工具集
一.脚本display_cursor_9i.sql是可以得到SQL的真实执行计划,使用示例 使用示例,请看以下case 1.执行测试sql: SELECT T1.*,T2.* FROM T_0504 ...
- C primer plus 5 读书笔记3
1.ASCII 码前31位控制字符(非打印字符)的表示方法:(1)使用ASCII码表示比如蜂鸣字符用7(十进制)表示:(2),使用特殊的符号序列,即转义序列.如 ‘\a’表示蜂鸣字符.(3),使用十六 ...