Docker使用系列一我们把镜像源改为了阿里云的,方便后续的操作。

执行这个命令就把源地址改为阿里的:

curl https://git.oschina.net/feedao/Docker_shell/raw/start/ali-centos.sh | sh

第一安装Docker:

yum -y install docker-io

第二 启动Docker:

service docker start

第三安装制作CentOS镜像的工具:

yum -y install febootstrap

第四 制作CentOS镜像文件centos6-image目录

febootstrap -i bash -i wget -i yum -i iputils -i iproute -i man -i vim-minimal -i openssh-server -i openssh-clients centos6 centos6-image http://mirrors.aliyun.com/centos/6/os/x86_64/

第五制作Docker镜像,镜像名字是centos6-base, 最后的点是必须要的

cd centos6-image && docker build -t centos6-base .
cd centos6-image && tar -c .|docker import - centos6-base  【测试有效】
 

第六制作可以ssh登陆的Docker镜像,名字是centos6-ssh

docker build -t centos6-ssh https://git.oschina.net/feedao/Docker_shell/raw/start/Dockerfile

经过前面的六个步骤,一个可以登陆的本地docker镜像就制作好了。

用户名是:root,密码是:123456

体验步骤:

创建容器:

docker run -d -p 127.0.0.1:33301:22 centos6-ssh

ssh登陆容器:

ssh root@127.0.0.1 -p 33301

输入密码后就可以开始折腾了。

通过授信无密码登陆

依赖于centos6-ssh镜像,制作第三个自动授信的镜像centos-newssh。

方法如下:

curl https://git.oschina.net/feedao/Docker_shell/raw/start/Docker-centos-autossh.sh | sh

一个命令就行了,这条命令会创建一个新镜像centos-newssh

开始体验,现在不需要输入root密码了:

docker run -d -p 127.0.0.1:33306:22 -m 256M centos-newssh
ssh root@127.0.0.1 -p 33306 "echo $LANG;ifconfig"
 
如果不想第一次连接的时候输入yes,确认连接,可以使用下面的命令:
ssh -o StrictHostKeyChecking=no root@127.0.0.1 -p 33306 "echo $LANG;ifconfig"
 
体验完了,我们来分析下
https://git.oschina.net/feedao/Docker_shell/raw/start/Docker-centos-autossh.sh
#!/bin/sh
[ ! -d /root/.ssh ] && mkdir -p /root/.ssh
ssh-keygen -q -N "" -t dsa -f /root/.ssh/id_dsa
KEY_PUB=`cat /root/.ssh/id_dsa.pub`
[ ! -d /root/docker-temp ] && mkdir /root/docker-temp
cd /root/docker-temp
cat >/root/docker-temp/Dockerfile <<EOF
#Dockerfile
FROM centos6-ssh
MAINTAINER feedao <feedao@163.com>
EOF
echo "RUN echo \"$KEY_PUB\" > /root/.ssh/authorized_keys && chmod 600 /root/.ssh/authorized_keys " >>Dockerfile
cd /root && cat /root/docker-temp/Dockerfile | docker build -t centos-newssh -

脚本内容比较简单,就是生成新的秘钥和公钥

ssh-keygen -q -N "" -t dsa -f /root/.ssh/id_dsa
 
然后把公钥自动加到Docker容器中,这里是修改Dockerfile:
echo "RUN echo \"$KEY_PUB\" > /root/.ssh/authorized_keys && chmod 600 /root/.ssh/authorized_keys " >>Dockerfile
 
最后创建新的镜像:
cd /root && cat /root/docker-temp/Dockerfile | docker build -t centos-newssh -
 
你可以把/root/docker-temp文件夹删除
rm -rf /root/docker-temp
 

制作可以 SSH 登录的 Docker 镜像的更多相关文章

  1. 制作ssh互信的docker镜像

    Dockerfile FROM ubuntu:16.04 # package RUN apt-get update; apt-get -y install ssh COPY ssh_config /e ...

  2. Centos7创建支持ssh服务的docker镜像

    如何在centos7中使用docker创建一个支持ssh连接的容器 1.拉取centos7.4镜像(由于7.4目前是最稳定的版本,所以推荐使用centos7.4) docker pull centos ...

  3. 两种方式创建支持SSH服务的docker镜像

    方法一:基于commit命令创建 1.首先,从docker的源中查看我们需要的镜像,本案例中使用Ubuntu作为基础镜像. # federico @ linux in ~ [16:57:38] $ s ...

  4. ssh 登录进入 docker container

    1.Container安装ssh服务,博主的linux是centos ① 安装ssh sudo yum install openssh-server #安装ssh服务器 service sshd st ...

  5. haproxy 2.0 dataplaneapi rest api 转为graphql docker 镜像

    为了方便直接使用haproxy dataplaneapi graphql 格式的查询,制作了一个简单的docker 镜像 基于dotenv 进行配置管理,可以直接通过环境变量传入参数,处理不同hapr ...

  6. MySQL、MongoDB、Redis数据库Docker镜像制作

    MySQL.MongoDB.Redis数据库Docker镜像制作 在多台主机上进行数据库部署时,如果使用传统的MySQL的交互式的安装方式将会重复很多遍.如果做成镜像,那么我们只需要make once ...

  7. ssh登录docker容器

    ssh登录docker容器1.启动一个docker容器# docker run -t -i ubuntu/ruby:v1 /bin/bash2.然后在容器里,安装openssh-server open ...

  8. 制作Docker镜像的两种方式

    此文已由作者朱笑天授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 一.使用docker commit命令制作docker镜像 1. pull一个centos6.6的基础镜像, ...

  9. 制作可以SSH的Docker容器

    以 Ubuntu 16.04为例: Docker里的root密码是随机的, 用passwd来设置新的密码 安装完SSH_SERVER后, 默认是不能用root登录的. vi /etc/ssh/sshd ...

随机推荐

  1. 哈尔滨理工大学第七届程序设计竞赛(G.Great Atm)

    Description An old story said the evil dragon wasn't evil at all, only bewitched, and now that the r ...

  2. 安卓 内存泄漏 MemoryAnalyzer

    韩梦飞沙 yue31313 韩亚飞 han_meng_fei_sha 313134555@qq.com 需要 获取 root 权限 步骤: 1,使用eclipse 自带的 DDMS 工具分析各线程的内 ...

  3. STL的常用用法、函数汇总(不定时更新)

    隶书文字为原创. 1.vector 在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结. 1 基本操作 (1)头文件#include<vector>. (2)创建vec ...

  4. 【思路】Aizu - 1367 - Rearranging a Sequence

    给你一个1~n排好的数组,每次提一个数到最前面,问你最后形成的序列. 就把他的输入顺序倒过来输出即可.没出现过的再按原序输出. #include<cstdio> using namespa ...

  5. 【推导】Codeforces Round #411 (Div. 1) B. Minimum number of steps

    最后肯定是bbbb...aaaa...这样. 你每进行一系列替换操作,相当于把一个a移动到右侧. 会增加一些b的数量……然后你统计一下就行.式子很简单. 喵喵喵,我分段统计的,用了等比数列……感觉智障 ...

  6. HDU 5294 Tricks Device 网络流 最短路

    Tricks Device 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5294 Description Innocent Wu follows D ...

  7. 基于tiny4412的Linux内核移植(支持device tree)(二)

    作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...

  8. Multivariate Adaptive Regression Splines (MARSplines)

    Introductory Overview Regression Problems Multivariate Adaptive Regression Splines Model Selection a ...

  9. FORM-加载前指定日期时间格式

    PRE-FORM -- Standard date format --BEGIN  set_application_property(DATE_FORMAT_COMPATIBILITY_MODE, ' ...

  10. VUE -- 如何快速的写出一个Vue的icon组件?

    伴随着Vue的诞生,它似乎就被人寄予厚望,不仅仅是因为其轻量级的MVVM设计方式,而且其实现了组件化开发模式,所以越来越多的人会拿Vue和AngularJS.React Native做比较.具体关于它 ...