zoukankan      html  css  js  c++  java
  • 使用Dockerfile创建支持SSH服务的镜像

    1.前面我们学习了使用Dockerfile,那接下来我们就用Dockerfile创建一个支持SSH服务的镜像。

    2.首先创建一个目录ssh_centos

    [root@rocketmq-nameserver4 ~]# cd /home/xm6f/dev/
    [root@rocketmq-nameserver4 dev]# mkdir ssh_centos
    [root@rocketmq-nameserver4 dev]# cd ssh_centos

    3.在ssh_centos目录中创建Dockerfile和run.sh两个文件
    run.sh文件中的内容如下:

    #!/bin/bash
    /usr/sbin/sshd -D

    4.创建authorized_keys,连接ssh时免密登录

    $ touch authorized_keys
    将宿主机/root/.ssh/id_rsa.pub拷贝到/home/xm6f/dev/ssh_centos/authorized_keys文件中
    $ cat /root/.ssh/id_rsa.pub > authorized_keys
    $ cd /home/xm6f/dev/ssh_centos/
    $ ls
    authorized_keys run.sh
    $ cat authorized_keys
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJknOFfX+vXDGDesHovetbYezR/8142lDTxD34s33+fxhP40FVmjHN/u09s9bKngR6Jfj3ogbsrfg7gCEMPHnhzVzMxIyJzZBk898Wd7qV0HIJ9BHEo25cjkv4k55yZPkcm309VdMFUOiIp+66dtgmbjG23Zu/VAK+faJEhV1vtLhU7SCGF+yUKPSOmgs0mVCcIJKozv1duw8ERaybLI+UGGCJv9CHCm27rC7e+/dCuyNCRw/35s650AUWfHHgt6/26Med/2xl4tt8RzpDAi2KOlTj5Dqay5uNXC/xCRp7edZkv8UBoEDfbMsuGPJlqeQQEDbkqNb/2sLY5ayCOFRD root@rocketmq-nameserver4

    注意:如果/root/.ssh/id_rsa.pub文件不存在,通过如下命令创建:
    $ ssh-keygen -t rsa -P ''

    接下来就是定义Dockerfile,vim Dockerfile

    FROM centos
    MAINTAINER ruthless 416501600@qq.com
    #安装ssh服务
    RUN yum install passwd openssl openssh-server -y
    RUN ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''
    RUN ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
    RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''
    
    #创建目录
    RUN mkdir -p /root/.ssh
    #复制配置文件到相关位置,并修改权限
    ADD authorized_keys /root/.ssh/authorized_keys
    ADD run.sh /run.sh
    RUN chmod 700 /run.sh
    #开放端口22
    EXPOSE 22
    #设置容器启动时执行的命令
    CMD ["/run.sh"]

    为authorized_keys配置777权限 

    chmod 777 /home/xm6f/dev/ssh_centos/authorized_keys

    5.通过Dockerfile生成ssh_test镜像

    $ ls
    authorized_keys Dockerfile run.sh
    $ docker build -t ssh_test .

    等待运行完成。

    6.使用docker images查看刚刚构建的镜像。

    $ docker images
    REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
    ssh_test                     latest              22085f6119f9        21 seconds ago      305MB

    7.测试镜像,运行容器

    $ docker run -d -p 20221:22 --name sshtest ssh_test
    $ docker logs sshtest ##查看容器日志,没报错表示容器运行成功

    8.在宿主机上运行

    ssh root@192.168.1.160 -p 20221

  • 相关阅读:
    STL特性总述——写在前面
    C++多线程框架
    C++内存管理之unique_ptr
    ubuntu文本模式/终端中文乱码解决
    log4net日志在app.config中assembly不起作用
    解决多线程委托二义性问题
    IIS 中文文件名下载会出现403访问被拒绝
    C# 异常:从作用域“”引用了“FiasHostApp.Entity.DBEntity.FIAS_RM_v1.ITraNetMgrUnitBaseInfoRecord”类型的变量“w”,但该变量未定义
    C# string.Split对于换行符的分隔正确用法
    knockoutJS+knockout.multimodels使用记录
  • 原文地址:https://www.cnblogs.com/linjiqin/p/8783209.html
Copyright © 2011-2022 走看看