docker容器运行,一般不能ssh,这容器的管理带来麻烦,下面将介绍如何创建支持ssh的docker镜像

  1. 首先从dock hub  下载 ubuntu的镜像

    命令: docker pull ubuntu

  2. 新建一个ssh_ubuntu 目录

    mkdir /ssh_ubuntu

  3. cd /ssh_ubuntu ;touch Dockerfile

     

  4. vi Dockerfile

    Dockerfile内容

    FROM ubuntu
    MAINTAINER lincoln_zhong
    RUN apt-get update
    RUN apt-get install -y openssh-server sudo
    RUN mkdir -p /var/run/sshd
    RUN sed -ri 's/session    required     pam_loginuid.so/#session    required     pam_loginuid.so/g' /etc/pam.d/sshd
    RUN useradd admin 
    RUN echo "admin:admin" | chpasswd 
    RUN echo "admin   ALL=(ALL)       ALL" >> /etc/sudoers
    EXPOSE 22
    CMD ["/usr/sbin/sshd" , "-D"]
    wKiom1WJHhnAm7gXAAF7-nuigdQ137.jpg

  5. cd /ssh_ubuntu .运行 docker build -t ssh_ubuntu .  #ssh_ubuntu是镜像名称

  6. 运行 docker p_w_picpaths

    wKiom1WJHoqBBBSEAAKVgQxRIgE289.jpg

  7. 运行一个容器测试 命令: docker run -d --name ssh_ubuntu_test -p 0.0.0.0:10000:22 ssh_ubuntu

    命令解析

    -d是以守护模式启动

    --name 定义容器名称

    -p是定义端口(上面这个意思是本地主机(宿主机)的10000端口映射到容器的22端口

    wKiom1WJHzySz_p4AADelmZ_ODM797.jpg

  8. 容器ssh_ubuntu_test 运行成功, 用ssh登入容器测试命令: ssh admin@宿主机IP -p 10000 我这里是10.10.1.181

    ssh admin@10.10.1.181 -p 10000

  9. 测试成功

  10. 附centos搭建支持ssh的容器dockerfile 内容

     

  11. # 选择一个已有的os镜像作为基础 
    FROM centos

  12. # 镜像的作者 
    MAINTAINER LINCOLN ZHONG
      
    # 安装openssh-server和sudo软件包,并且将sshd的UsePAM参数设置成no 
    RUN yum install -y openssh-server sudo 
    RUN sed -ir 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config 
     
    # 添加测试用户admin,密码admin,并且将此用户添加到sudoers里 
    RUN useradd admin 
    RUN echo "admin:admin" | chpasswd 
    RUN echo "admin   ALL=(ALL)       ALL" >> /etc/sudoers 
      
    # 下面这两句比较特殊,在centos6上必须要有,否则创建出来的容器sshd不能登录 
    RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key 
    RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key 
     
    # 启动sshd服务并且暴露22端口 
    RUN mkdir /var/run/sshd 
    EXPOSE 22 
    CMD ["/usr/sbin/sshd", "-D"] 


 wKioL1WKzJHQoRN1AASCU0XpacY132.jpg