• 利用docker创建支持centos的ssh镜像


      创建docker镜像需要基础镜像,目前官方已提供了多种基础镜像,参见: https://hub.docker.com/explore/

      要想创建支持centos的ssh镜像,就需要以centos镜像为基础来创建,下面是创建步骤:

      1. docker pull centos:6     #获得centos 6系统的镜像

          2. 新建在容器中启动sshd服务的脚本,编辑run.sh:

        #!/bin/bash

        /usr/sbin/sshd -D

      3. 在宿主机上生成RSA密钥,然后将生成的密钥复制到sshd_centos目录中:

        ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key

        cp /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_rsa_key.pub /root/sshd_centos

        cat ssh_host_rsa_key.pub>authorized_keys

      4. 在/root/sshd_centos目录下新建Dockerfile文件:

    #生成的新镜像以centos镜像为基础
    FROM centos
    MAINTAINER by cmzsteven (changmingzhi@163.com)
    #升级系统
    RUN yum -y update
    #安装openssh-server
    RUN yum -y install openssh-server
    #修改/etc/ssh/sshd_config
    RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
    #将密钥文件复制到/etc/ssh/目录中
    ADD ssh_host_rsa_key /etc/ssh/ssh_host_rsa_key
    ADD ssh_host_rsa_key.pub /etc/ssh/ssh_host_rsa_key.pub
    RUN mkdir -p /root/.ssh
    ADD authorized_keys /root/.ssh/authorized_keys
    #将ssh服务启动脚本复制到/usr/local/sbin目录中,并改变权限为755
    ADD run.sh /usr/local/sbin/run.sh
    RUN chmod 755 /usr/local/sbin/run.sh
    #变更root密码为147258
    RUN echo "root:147258"|chpasswd
    #开放窗口的22端口
    EXPOSE 22
    #运行脚本,启动sshd服务
    CMD ["/usr/local/sbin/run.sh"]

      5. 切换到Dockerfile文件夹,编译生成镜像:

        docker build -t sshd:dockerfile .

      6. 查看镜像文件情况:

       docker images

       

      7. 利用新建的镜像启动一个容器:

        docker run -d -p 10022:22 sshd:dockerfile /usr/local/sbin/run.sh

        其中:将宿主机的10022端口映射到容器的22端口,并启动sshd服务。 现在就可以使用ssh工具远程通过宿主机的10022端口访问容器了。

      如果想编译docker源码,则需要以docker镜像作为基础镜像(官方建议,内部已集成编译环境),也就是说所有关于镜像都需要由基础镜像出发进行创建。

      

    相关文章:

    Docker源码分析

    http://www.infoq.com/cn/articles/docker-source-code-analysis-part1/   

    Dcokerfile书写规则

    http://blog.csdn.net/qinyushuang/article/details/43342553   

    Docker源码编译

    http://www.cnblogs.com/styshoo/p/5824895.html 

    涉及cgroup资源控制的配置

    http://baike.baidu.com/link?url=jRMznyBNXOVJG9rVmLNt_bim7HgLIYgT4fbynJp0uqG25lMBmVHQZxxJRp1LYoYqRE1RDsZrKQbM7u62xB5gQK 

     

  • 相关阅读:
    【Redis】简介与安装
    【JAVA】 Java 连接池的工作原理
    【异常】ORA-01536: space quota exceeded for tablespace
    【Oracle】Oracle 序列步长问题
    【ORACLE】常用脚本
    【ORACLE】特殊的NULL
    【JAVA】Runtime
    【JAVA】Calendar
    出现脚本错误或者未正确调用 Page()
    小程序出现 “2 not found” 解决方案
  • 原文地址:https://www.cnblogs.com/foreverstars/p/6613038.html
Copyright © 2020-2023  润新知