• 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

  • 相关阅读:
    sigaction函数解析
    实战Nginx与PHP(FastCGI)的安装、配置与优化
    Linux下Nginx+PHP 简单安装配置
    Nginx安装配置PHP(FastCGI)环境的教程
    Linux上配置Nginx+PHP5(FastCGI)
    @JoinTable和@JoinColumn
    Spring Data JPA 之 一对一,一对多,多对多 关系映射
    MyChrome制作Chrome浏览器便携版
    注解@CrossOrigin解决跨域问题
    MySQL查看表结构及查看建表语句
  • 原文地址:https://www.cnblogs.com/xzdwn/p/12787328.html
Copyright © 2020-2023  润新知