当前位置: 首页 > news >正文

虚拟宿主服务器,Docker+Portainer打造伪虚拟机服务器 Part.2 (Container端) | Chris.Leung...

上次说到如何用Docker + Portainer打造位虚拟机服务器,Portainer端说了点儿皮毛,但有经验的人看着点儿皮毛应该就可以投入使用了

我这次将以CentOS 6.10为例,创建一个CentOS 6.10的伪虚拟机~

在讨论前首先戴头盔

以下看法纯属个人主观与偏见的技术讨论帖~各位大神如果有不同意见可以留言讨论

如果觉得在下太水皮的话~就当你赢~我输就好~

为什么是CentOS 6.10不用新的系统~没啥~因为习惯了,CentOS基于Redhat,算是还在维护期内比较老但是比较稳定的版本。

除了重大漏洞外基本不会有什么更新包,如果功能上是足够的话那么对于稳定的支撑服务来说,是绝佳的选择~

1、首先pull一个CentOS 6的镜像~我们打开Images页,在Pull image的Image框填入centos:6.10

然后点击pull the image就会自动完成下载,完成后再下面的Images列表就会看到新下载回来的镜像centos:6.10

2、打开Container页面,点击 +Add container

a98f5190f0e833aa62c14b9fbc4d9a18.png

b9073c1140970eb3349daec959f2feae.png

f877398f799e33a72f2c29ee5b39618f.png

Name填你喜欢的名字,Image填centos:6.10

在Advanced container settings上

在Command & logging分页勾选Console的Interactive & TTY选项,其实这个就是命令行新建Container的时候加的-IT参数

在Network分页的Network处选择你新建的MacVLan,至于怎么建立MacVLan请翻看我上一篇文章Docker+Portainer打造伪虚拟机服务器 Part.1(Portainer端)

点击Deploy the container就可以新建了一个还不算完整的CentOS 6伪虚拟机了,那么怎么才算完整呢~

3、我们要SSH登录宿主服务器,使用Dockere命令进入容器

docker attach centos

进入容器后,我们开始对这个未完整的镜像进行调整了~首先自然是先跑一次更新,顺便把ssh也装上。

可能很多人会问Linux不是自带SSH的么,原因是Docker镜像就不带,至于为什么这里不多说,反正要自己安装就是了~

yum update -y && yum install openssh-server -y

然后编辑sshd的配置文件/etc/ssh/sshd_config

在里面找到UsePAM yes改为UsePAM no,否则ssh会登陆不上,如果你创建的是Debian或者ubuntu的话,还需要把PermitRootLogin参数改为yes

然后手动启动一次sshd

/etc/init.d/sshd start

当然不能忘了的就是给改密码,因为原本docker的验证方式跟ssh的不一样,你需要创建root密码用来登录

passwd root

由于容器本身并没有服务管理的组件,那么我们现在就要用最土炮的办法supervsiord

yum install python-setuptools

easy_install supervisor==3.4.0 #由于supervisord出了4.0.1版本,不带版本号的话CentOS 6会装不上~

安装完成后我们开始配置supervisord

首先要生成配置文件

echo_supervisord_conf >/etc/supervisord.conf

然后要创建以及编辑服务文件vi /etc/init.d/supervisord,内容如下

#! /bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin

PROGNAME=supervisord

DAEMON=/usr/bin/$PROGNAME

CONFIG=/etc/$PROGNAME.conf

PIDFILE=/tmp/$PROGNAME.pid

DESC="supervisord daemon"

SCRIPTNAME=/etc/init.d/$PROGNAME

# Gracefully exit if the package has been removed.

test -x $DAEMON || exit 0

start()

{

echo -n "Starting $DESC: $PROGNAME"

$DAEMON -c $CONFIG

echo "..."

}

stop()

{

echo -n "Stopping $DESC: $PROGNAME"

supervisor_pid=$(cat $PIDFILE)

kill -15 $supervisor_pid

echo "..."

}

case "$1" in

start)

start

;;

stop)

stop

;;

restart)

stop

start

;;

*)

echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2

exit 1

;;

esac

exit 0

然后赋予权限chmod 777 /etc/init.d/supervisord

最后编辑配置文件vi /etc/supervisord.conf

里面主要有几个部分需要修改

1#[inet_http_serer]前面的;要去掉

以及下面一行;port=127.0.0.1:9001改为poot=0.0.0.0:9001

这里其实端口你自己喜欢什么都可以~

2#[supervisord]

其中nodaemon=false改为nodaemon=true

3#在文件末尾加上

[program:sshd]

command=/usr/sbin/sshd -D

做好后就可以退出容器,关闭putty窗口~回到portainer的页面导出镜像了

a598a90d78392eea7513a9a43ba84de1.png

bdc819c7a93e6761491306a889390d43.png

4、打开Containers页面点击你的容器,然后为你的容器创建一个镜像用于以后新建伪虚拟机的时候用的~

创建完毕后你在Images页面就可以看到你创建的新的镜像了,当然你可以导出来备份,以后可以导入到任何一台Docker服务器中。

5、最后我们删除之前的容器,我们开始来真的了~创建新的伪虚拟机~~

直接进入Container页面点击+Add container,同样的名字喜欢写什么就什么,Image选择刚才你建立的镜像

57fa39063cd5e82627175bd709794b83.png

在Advanced container settings里面的Command & logging选项卡中

Command输入 /etc/init.d/supervisord start

Console选择 Interactive & TTY (-I -t)

在Network选项卡中选择你之前建立的MACVLAN

然后点击Deploy the container创建容器。

a9acebc0da43df94e04117bc2100a636.png

至此虚拟机创建完成可以直接用ssh连接了

相关文章:

  • 服务器系统老是关机重启,windows server 2003老是关机重启,是为什么
  • sim卡人突然显示无服务器,手机突然间显示无SIM是怎么回事?可能是这些情况造成的!...
  • 真龙霸业服务器维护,真龙霸业12月2日更新了什么_真龙霸业12月2日更新内容介绍_游戏吧...
  • solr修改服务器端口,Solr7服务器搭建及遇到的问题(二)
  • 电脑上总显示宽带连接服务器怎么办啊,宽带连接不上_10招解决方法轻松搞
  • win10系统如何安装SQL服务器,window_Win10系统如何安装SQL Server 2008?,下面为大家带来Win10系统如何 - phpStudy...
  • eos的服务器配置在哪里修改,手把手教你玩eos:架设EOS区块浏览器
  • 动态查看服务器的性能,一种动态监控服务器集群性能并实时报警的方法
  • java 传递 函数_Java 与值传递
  • 乒乓球比赛赛程_恒天重工郑州区域2019年度职工乒乓球团体锦标赛圆满落幕
  • a标签移动上去没有下划线怎么设置_seo优化师是怎么对文章网页标题命名的?...
  • is属性用法 vue_vue组件讲解(is属性的用法)
  • db2 update覆盖更新_DLA访问TableStore的性能调优Hints、支持单字段update等
  • dubbo调用service后返回对象null_你玩了3年Dubbo,给我聊聊它的服务暴露过程?
  • 托福试卷真题_托福考试历年真题测试
  • 78. Subsets
  • Android 控件背景颜色处理
  • angular组件开发
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • Git初体验
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • Linux gpio口使用方法
  • Lucene解析 - 基本概念
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • 大快搜索数据爬虫技术实例安装教学篇
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 机器学习 vs. 深度学习
  • 微信公众号开发小记——5.python微信红包
  • 微信开源mars源码分析1—上层samples分析
  • 微信小程序填坑清单
  • 为视图添加丝滑的水波纹
  • 在Mac OS X上安装 Ruby运行环境
  • 2017年360最后一道编程题
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #Linux(Source Insight安装及工程建立)
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (0)Nginx 功能特性
  • (1)常见O(n^2)排序算法解析
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (9)STL算法之逆转旋转
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (十六)Flask之蓝图
  • (四)c52学习之旅-流水LED灯
  • (五)Python 垃圾回收机制
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (一)认识微服务
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • .NET导入Excel数据
  • .net流程开发平台的一些难点(1)
  • .NET中winform传递参数至Url并获得返回值或文件
  • .sdf和.msp文件读取
  • [ JavaScript ] JSON方法
  • [1159]adb判断手机屏幕状态并点亮屏幕