虚拟宿主服务器,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连接了


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部