V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hansonwang99
V2EX  ›  推广

利用 K8S 技术栈打造个人私有云(连载之:基础镜像制作与实验)

  •  
  •   hansonwang99 · 2018-03-15 08:41:45 +08:00 · 2414 次点击
    这是一个创建于 2446 天前的主题,其中的信息可能已经有所发展或是发生改变。

    封面图片


    [利用 K8S 技术栈打造个人私有云系列文章目录]


    任何一家云主机厂商提供给用户的主机功能其实讲白了就是一个操作系统基础镜像的运行实例。因此本篇博文将讲解如何在本地构建一个带 ssh 组件的 centos 底包镜像并上传到 docker hub 上供下载使用。


    docker hub 注册

    注册网址:https://hub.docker.com/

    Docker Hub


    命令行中登录到 docker hub

    命令行中输入:docker login

    docker login


    制作 centos7.4 镜像

    ####1、第一步:去远端拉取一个最新的 centos 最基础镜像,基于此镜像来制作

    docker pull centos

    ####2、第二步:启动该 docker 容器

    docker run -it centos:latest /bin/bash

    ####3、第三步:在启动的容器中来安装 sshd

    yum -y install openssh-server
    yum -y install openssh-clients
    

    ####4、第四步:我们来尝试启动一下 sshd 服务,会发现有报错

    启动 sshd 服务命令: /usr/sbin/sshd -D 报如下错误:

    Could not load host key: /etc/ssh/ssh_host_rsa_key
    Could not load host key: /etc/ssh/ssh_host_ecdsa_key
    Could not load host key: /etc/ssh/ssh_host_ed25519_key
    

    我们来解决以上错误:

    ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ""
    ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ""
    ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ""
    

    此时再次来启动 sshd 服务应该无错误了

    ####5、第五步:编辑 sshd_config 配置文件

    执行命令:vim /etc/ssh/sshd_config 将配置文件中原本UsePAM yes换成UsePAM no

    ####6、第六步:修改 root 的密码

    执行命令:passwd root 输入两次密码即可

    ####7、第七步:我们用 exit 命令来退出容器

    ####8、第八步:基于刚退出的容器我们来制作带 ssh 功能的 centos 镜像 docker commit bf5b84f8e2d8 docker.io/hansonwang/centos7.4_ssh

    ( 1 )注意此处的 bf5b84f8e2d8 即为刚才运行的容器的 id,可用 docker ps -a 查看 ( 2 )注意此处的 commit 格式,必须为 docker.io/<你的 dockerhub 用户名>/centos7.4_ssh


    push 镜像到远端

    docker push docker.io/hansonwang/centos7.4_ssh:latest

    同样需要注意此处的 push 格式,必须为 docker.io/<你的 dockerhub 用户名 /完整的镜像名

    如下图所示:

    docker push

    同时我们去 docker hub 上也能看到我们刚 push 的镜像:

    Repositories


    效果验证

    为了验证镜像确实被推到远端,我们将本地刚打包好的镜像删除,然后从远端 pull 下来运行看看

    docker pull hansonwang/centos7.4_ssh

    可以成功 pull 下来:

    重新 pull 镜像

    我们来测试一下该镜像里是否包含有 ssh 组件:运行其并用 ssh 连接到容器中: 运行容器:docker run -d -p 2222:22 docker.io/hansonwang/centos7.4_ssh:latest /usr/sbin/sshd -D ssh 接入:ssh root@localhost -p 2222 此时会让你输入密码,然后成功登入容器之中:

    ssh 接入 centos 容器


    后记

    作者更多的原创文章在此


    2 条回复    2018-03-15 09:16:31 +08:00
    FindBoyFriend
        1
    FindBoyFriend  
       2018-03-15 08:44:44 +08:00 via iPad
    很赞!正需要相关的导文,谢谢卤煮!
    wampyl
        2
    wampyl  
       2018-03-15 09:16:31 +08:00
    收藏,折腾下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   919 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 19:58 · PVG 03:58 · LAX 11:58 · JFK 14:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.