Void-7's

本机终端SSH连接VBox虚拟机,后台运行及docker自重启相关

linux

本机终端SSH连接VirtualBox虚拟机

由于数据库实验需要,我们要选择一款关系型数据库,笔者选择的是openGauss(华为基于PostgreSQL的DB)。因为需要Linux运行环境,自然就会让人想到云服务器。虽然学生价的云服务器非常能打,但是怎么说也是性能孱弱的配置,带openGauss可能会非常卡顿(实测在阿里云的双核4G ECS在docker里跑openGauss已经到了SSH连接输入命令卡顿的程度)。

这样看只能本地跑了,于是笔者在VirtualBox中安装了Ubuntu20.04,并且把openGauss跑起来了,配置好和本机的端口转发后用DataGrip连接到VM中的openGauss,速度比ECS不知道高到哪里去了!

具体步骤Linux——本机终端SSH连接VirtualBox中的Linux虚拟机 - 怪猫佐良 - 博客园 (cnblogs.com)

VirtualBox虚拟机后台运行

这样就有了另一个问题:每次都要开关虚拟机一顿图形化操作猛如虎(慢如龟),然后再到本机终端进行连接,确实有点麻烦。有没有办法让VirtualBox后台运行,我只要运行其中的VM,只用到命令行操作没必要每次都搞大新闻。

经过搜索和实践,我们可以利用VirtualBox的headless模式(无显模式)在黑窗窗里面直接运行:

1、首先CD到VBOX安装根目录

2、执行如下指令启动名为**"ubuntu20.04"**的VM(根据具体VM名称修改)

.\VBoxManage.exe  startvm  ubuntu20.04 --type headless

3、执行和完成后依次有如下提示:

Waiting for the VM to power on…
VM has been successfully started.

虚拟机状态控制

.\VBoxManage controlvm <uuid>|<name> pause|resume|reset|poweroff|savestate|

例如关闭刚才启动的headless虚拟机**"ubuntu20.04"**我们可以用下面命令来完成

.\VBoxManage controlvm ubuntu20.04 poweroff

回车后提示如下,到100%就关闭成功了

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

共享目录设定

如果想使用共享目录则: vboxmanage sharedfolder add centos --name *share* --hostpath *~/share*

登录成功后挂载共享目录: mount -t vboxsf share /mnt/

出处:VirtualBox虚拟机后台运行

docker容器自启动策略 Restart Policy

VM后台运行的问题解决了,新的需求产生:每次都要手动start的话是不是太麻烦了,设置好容器自动重启就可以解决这个问题。docker也早就为用户提供了Restart Policy来配置相关策略:

  • no - 容器退出时不要自动重启,这个是默认值
  • on-failure 在容器非正常退出时(退出状态非0),才会重启容器
  • on-failure[:max-retries] 当容器非正常退出超过设定的次数才会重启
  • always 不管退出状态码是什么,始终重启容器,当指定always时,docker daemon将无数次的重启容器,容器也会在daemon启动时尝试重启,不管容器的状态如何。如果手动kill掉容器,就没法再自重启了。
  • unless-stopped 在容器退出时,总是重启,但不考虑在docker守护进程启动之时,就已经停止了的容器。

选择always即可满足我们的需要,因为一般来说重启策略是在run的时候添加的,那笔者已经启动了,也不想再关闭的话,只需要用docker update来追加配置即可:

docker update --restart=always [container]

记得把如上的'[container]'替换成对应的容器。