• docker 安装linux centos 环境


    如何在centos7中使用docker创建一个支持ssh连接的容器 

    以下内容已有现成的,这里借用下这哥们的帖子https://www.cnblogs.com/caidingyu/p/10642158.html

    并附上自己理解

    1.拉取centos7.4镜像(由于7.4目前是最稳定的版本,所以推荐使用centos7.4)

    ps:最新版已到8,可去https://hub.docker.com/查阅

    1
    docker pull centos:7.4.1708

    2.执行以下命令查看已有的镜像

    1
    docker images

    3、基于centos镜像,创建一个名为centos7ssh的容器并进入容器(这里名称可以自定义)

    ps:启动时 /bin/bash 表示命令行path。该path环境变量,自带的有:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

     
    1
    docker run -it --name centos7ssh centos:7.4.1708 /bin/bash

    4、进入容器后,安装ssh服务端和客户端,服务端能让其他主机远程登录本机,客户端能让本机远程登录其他主机

    ps:docker安装的centos没有passwd命令,但是你用whereis passwd依然可以找到位置。所有建议你安装ssh的passwd命令

    1
    yum -y install passwd openssl openssh-server openssh-clients

    ps:我自己安装yum install openssh-server 后。无需走5,6步

    5.创建 /var/run/sshd/目录,要不然sshd服务启动会报错

    1
    mkdir /var/run/sshd/

    6.编辑sshd的配置文件/etc/ssh/sshd_config,将其中的UsePAM yes改为UsePAM no

    可以进入sshd_config文件中去修改,也可以使用命令:

    1
    sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config

    ps:你用密码登录就无需步骤7

    7.创建公私密钥,输入命令后,直接按两次enter键确认就行了

    1
    2
    3
    ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
    ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
    ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key

    8.完成上述几步后,可以开启ssh服务了(&表示后台启动)

    1
    /usr/sbin/sshd -D &

    9.此时使用命令ps -ef | grep sshd  便可以看到

    10.查询22端口是否处于监听状态

    1
    yum -y install lsof
    1
    lsof -i:22

    11.修改root密码

    1
    passwd

    12.测试

    输入命令ssh localhost,然后输入之前设置的root密码

    上图中可以看到已经登录到本机了,也就说容器中的主机拥有了ssh远程登录其它主机的能力,当然你也可以登录其他主机。

    要退出的话,输入命令exit即可

    13.如何配置外部客户端访问docker里的centos7.4容器

    获取容器的ID等端口映射信息

    1
    docker ps -a

    提交容器成为新的镜像,例如叫做sshd_centos7.4,输入

    1
    docker commit 容器ID sshd_centos7.4

    启动这个镜像的容器,并映射本地的一个闲置的端口(例如15000)到容器的22端口,并启动容器的sshd(只要端口不冲突可以同时启动多个容器,如下图)

    1
    docker run -d -p 15000:22 sshd_centos7.4 /usr/sbin/sshd -D

    现在打开新的终端,输入ssh root@宿主机IP地址 -p 15000,如果能连接成功,会要求输入密码的,输入刚才passwd命令设置的root账户密码就可以进入容器的终端了

    如果连接失败,请检查防火墙是否未开放该端口。 

    参考文档:https://www.cnblogs.com/whutxldwhj/p/6427530.html

    https://blog.csdn.net/u013140345/article/details/79777311

    https://blog.csdn.net/weipeng19861130/article/details/79006555

    以下为网友提供的方法还未验证是否可用,可自行验证

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    docker pull centos:7.2.1511    //也可以不指定版本,默认最新latest
    docker run -t -i centos:7.2.1511 /bin/bash  //启动并进入docker 容器
     
    yum install wget                    
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 
    yum cleal all
    yum install passwd
    yum install openssh-server        #安装ssh服务端
    echo 'passw0rd' passwd root    //修改root密码
     
    docker commit [容器ID] [新镜像名]   //使用commit 提交,简单的配置可以使用dockerfile创建镜像,但是要配置环境比较复杂,还是需要用到commit
    docker run -d -p 220:22 c7ssh /usr/sbin/sshd -D      //启动容器,并绑定容器端口22到宿主主机, 可以有多个-p 绑定多个端口,例如22端口让远程客户端连接,8080 可以访问容器内tomcat

    总结:起初我安装的是ubuntu,当然ubuntu的image很小只有80M左右。但是他仅仅只是一个内核,什么都没有,自己需要安装的东西太多。直接换的centos

  • 相关阅读:
    leetcode 13. Roman to Integer
    python 判断是否为有效域名
    leetcode 169. Majority Element
    leetcode 733. Flood Fill
    最大信息系数——检测变量之间非线性相关性
    leetcode 453. Minimum Moves to Equal Array Elements
    leetcode 492. Construct the Rectangle
    leetcode 598. Range Addition II
    leetcode 349. Intersection of Two Arrays
    leetcode 171. Excel Sheet Column Number
  • 原文地址:https://www.cnblogs.com/xzdwn/p/12787328.html
Copyright © 2020-2023  润新知