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

封面图片

【利用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容器

后记

作者更多的原创文章在此


欢迎关注公众号:CodeSheep,分享更多务实、能看懂、可复现的 原创文章

CodeSheep

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

写给新手的十一条 Docker 守则

18350
来自专栏marsggbo

OpenShift的容器映像(第3部分):使你的映像可用

这是我在2017年欧洲、中东和非洲(EMEA)红帽技术交流会议上的一个会议记录,该会议集合了EMEA所有红帽解决方案架构师和顾问。它主要讨论在创建运行于Open...

22790
来自专栏DevOps时代的专栏

基于 k8s 的 Jenkins 构建集群实践

在大型团队的 CI 构建里具有丰富最佳实践的经验。今天我给大家分享的更多是聚焦在 Jenkins 本身,结合我在 Jenkins 实际使用过程中和整个 Jenk...

1.2K100
来自专栏北京马哥教育

docker容器技术系列一:基本概念

前言:从去年下半年开始,我们就尝试在使用docker部署生产应用,至现在已经有十多个项目使用了docker容器部署,docker为我们节约 了大量的服务器资源,...

31140
来自专栏北京马哥教育

haproxy思维导图

今天给大家带来的思维导图之haproxy。 小伙伴们一起来学习吧! ? HAProxy是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)...

33150
来自专栏WeTest质量开放平台团队的专栏

一次触摸,Android 到底干了啥

通过 Android 系统输入子系统的分析来回答你。

23610
来自专栏大魏分享(微信公众号:david-share)

五大Kubernetes最佳实践

47140
来自专栏程序你好

从 Docker 的新手村出发?那么你需要这11条守则

11520
来自专栏Brian

Docker 学习系列一之原理

---- Docker 认识 在谈及Docker时,不得不牵扯到一个现在很重要的一个领域:云计算。云计算是一种资源的服务模式,该模式可以按需的从可配置计算资源共...

37090
来自专栏SDNLAB

用防火墙来保障容器安全(Docker/Kubernetes)

在部署任何基于容器的应用程序之前,首先通过确保Docker、Kubernetes或其他容器防火墙来保护容器的安全至关重要。有两种方式来实现容器防火墙:手动或通过...

49560

扫码关注云+社区

领取腾讯云代金券