• dokcer镜像添加ssh服务


    说明:为镜像添加SSH服务其实就是一个构建新镜像的过程,主要哟两种方式,一种是基于commit命令,用来保存当前容器状态的镜像,另一种是基于dockerfile,通过配置文件,由底层镜像搭建。这里主要通过为镜像添加SSH服务的过程来熟悉镜像搭建过程。

    如果没有ssh服务,需要从宿主机attach或者exec方式进入容器,但这没有办法解决从远端管理容器的方法。SSH可以通过远端主机连接docker容器,而不用从宿主机登录到容器。SSH虽然方便,但有许多人认为背离了docker的初衷,docker本就为单个服务而生,而且没有从远端主机管理的必要。

    虽然有点争议,但好在SSH只占用 少量的资源,而且安全性有保证,NOW,让我们搁置争议,来康康如何 添加SSH服务吧!

    1.获取并运行一个ubuntu:18.04镜像

    docker pull ubuntu:18.04
    docker run -it ubuntu:18.04 /bin/bash

    或者直接运行run这一条命令也行,如果没有镜像则先拉取镜像,然后运行容器

    -t 表示在新容器内指定一个伪终端或终端
    -i 表示允许我们对容器内的 (STDIN) 进行交互
    -d 其它地方会出现这个表示在后台运行

    2.刚运行的容器一般无法使用很多命令,需要安装一些服务,但很多命令用不了,需要更新一下镜像源才能使用。一般国外的源比较慢,要改成国内的源。

    为ubuntu更换阿里源,并更新

     cat > /etc/apt/sources.list <<EOF
    deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
    EOF
    

    更新

    apt-get update

    3.安装配置SSH服务

    apt-get install -y openssh-server 

    创建/var/run/sshd目录并启动SSH服务

    mkdir -p /var/run/sshd
    /usr/run/sshd -D &

    可以通过netstat -ntlp查看ssh是否启动监听,如果没有这个命令需要安装一下

    apt-get install -y net-tools

    取消pam登录限制,注释掉有pam_loginuid.so这一行

    vi /etc/pam.d/sshd

    4.创建自启动SSH服务的可执行文件/run.sh,并添加可执行权限

    vim /run.sh
    #!/bin/bash
    #内容为
    /usr/sbin/sshd -D

    最后退出容器

    exit

    5.将退出的容器保存为新的镜像

    docker ps -a
    #命名为sshd并添加ubuntu标签
    docker commit ID sshd:ubuntu

    查看本地新生成的镜像sshd:ubuntu

    docker images sshd:ubuntu

    6.启动容器,并添加端口映射

    将宿主机的10022端口映射给容器的22端口

    docker run -p 10022:22 -d sshd:ubuntu /run.sh

    查看端口映射

    docker container port ID

    a6是容器ID的前几位,不用写全也可以

    解释:

    -p(小写):指定映射端口
    -d: 后台运行
    /run.sh 运行脚本

    查看容器运行情况

    docker ps

    7.宿主机root用户生成ssh密钥对,通过访问宿主机端口映射来访问容器

    ssh-keygen -t rsa

    然后将/root/.ssh/authorized_keys复制到需要登录容器的主机内

    在宿主机或其它能访问宿主机的机器上访问容器

    ssh 192.168.92.134 -p 10022

     

     好了,现在可以从远端主机访问容器了

    争议!啥争议?

    真香。。。

    后面会再介绍通过dockerfile方式为镜像添加SSH服务。

    好了,没什么事情就退朝吧。

  • 相关阅读:
    flask插件系列之flask_cors跨域请求
    【电脑蓝屏记】
    .net 定时启动任务
    c# winform+wcf代理上网的处理
    WCF
    Sql Over的用法
    【转】c#的逆向工程-IL指令集
    【随记】代码混编的重要性
    【转】android学习日记01--综述
    c#获取网页代码、数据、资源
  • 原文地址:https://www.cnblogs.com/maohai-kdg/p/13689910.html
Copyright © 2020-2023  润新知