Docker中开启sshd服务

docker官方上有具体的ubuntu下开启sshd服务方法,这里介绍下我的笨办法和开启中遇到的一些问题

  1. 准备基础镜像
    出于学习目的,我使用的镜像都是自己打包的,感兴趣的可以看看我上一篇介绍centos下学习docker,其中有具体的镜像制作方法。
  2. 创建容器

    #docker run -i -t centos6.5:version-1 /bin/bash
    我使用的镜像是centos6.5,其中version-1是tag,使用-i参数进入交互模式,并且运行/bin/bash

  3. ssh服务安装
    • 安装ssh服务

      #yum install openssh-server -y

    • 安装passwd(修改密码需要)

      #yum install passwd -y

    • 修改sshd_config配置文件

      UsePAM yes改成UsePAM no

    • 关闭主机selinux

      当使用passwd修改容器中root密码的时候,会报错:
      passwd: system_u:system_r:initrc_t:s0 is not authorized to change the password of root
      这时候,需要关闭主机selinux。

  4. 开机自起
    在/root目录下创建run.sh脚本,添加如下内容:
     #!/bin/bash
     service sshd restart
     while :
     do
     sleep 10
     done

    其实开机自起可以用CMD的,但是暂时不会。。。就统一用脚本执行的方式防止退出,感觉可调控行蛮好的。

  5. 保存修改
    • 查看正在运行的容器ID

      #docker ps

    • commit修改的容器ID,保存为centos6.5,tag为sshd

      #docker commit ID centos6.5:sshd

  6. 开启服务

    #docker run -d -p 22:22 -t centos6.5:sshd /root/run.sh
    以后台模式运行容器,且把容器的22端口映射到主机的22端口
    这样,就可以从外网通过ssh连接到容器了。

PS:越来越喜欢docker了,学习nginx搭建反代理,我直接同一个镜像弄3~4个开启apache服务的容器,环境搭建速度是相当的快。

Docker中开启sshd服务》上有27条评论

  1. 弱者

    Hi~我的新网站已经成立好了呢~www.v5fm.com 欢迎光临。。。FYI:友链也麻烦换成www.v5fm.com可以么 谢谢~

    回复
        1. 恋Freedom 文章作者

          使用docker run的时候添加一个“-p 8081:22”参数,表示把容器内的22端口映射到主机的8081端口,这样外网访问8081的时候直接传递到容器的22端口

          回复
          1. feng

            输入IP:8081 显示SSH-2.0-OpenSSH_6.4Protocol mismatch. 这个功能具体什么用的呢

          2. 恋Freedom 文章作者

            8081对应的是容器中的22端口,你容器中22端口不是ssh服务吗?怎么还用网页登录?

          3. feng

            我就是用shell登录的服务器,在上面做的设置。现在的问题是,服务器里面docker centos容器又做了ssh服务,然后我就蒙了

          4. 恋Freedom 文章作者

            想象成服务器里面创建了一个docker centos虚拟机,你把虚拟机的22端口映射到服务器的8081端口,你外网用ssh连接服务器的8081端口,就连到虚拟机中了

          5. feng

            我60上已经启动那个了17623a4f0f33 dhrp/sshd:latest /usr/sbin/sshd -D 47 hours ago Up 47 hours 0.0.0.0:8081->22/tcp agitated_yonath 然后在58上报错[root@poc4 ~]# ssh root@172.16.13.60 8081bash: 8081: command not found[root@poc4 ~]# ssh root@172.16.13.60:8081ssh: Could not resolve hostname 172.16.13.60:8081: Name or service not known

  2. Docker_hadoop

    请问一下我容器是ubuntu14.04的系统,创建了ssh使用了passwd root修改了密码, 但是在容器中使用 ssh localhost第一次登录要我输入一次密码,我输入的就是passwd设置的密码,但是就是登录不上去,求指教啊

    回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注