文章说明:介绍在vyos软路由上配置container容器,vyos最新滚动版1.5已经支持在vyos命令行中启动docker容器,在vyos 官网介绍是说1.3版本之后就都有这个功能了,如果你的版本是1.3之后的可以玩container,接下来介绍怎么创建容器,比如搭建一个Halo博客。
vyos拉取容器镜像其实跟docker命令的pull原理一样,只不过是换了命令而已,拉取容器镜像的地址一般都是用docker官网的(docker.io)或者github镜像站(ghcr.io),俩个镜像站可能都需要魔法才能正常访问。
可以看到当前没有镜像文件
show container image
方法一使用podman方式测试拉取halo-plus:1.1.4版本镜像,拉取镜像前默认你的vyos已经按照第二步基本配置中都设置好了,主要是上网和dns,不然拉取镜像时会报错。
sudo podman image pull docker.io/nineya/halo-plus:1.1.4
查看镜像,可以看到镜像已经拉取成功。
show container image
方法二使用vyos内置的命令拉取容器镜像,比如演示拉取halo-plus:1.1.2版本镜像,通过show命令可以看到,拉取成功。
add container image docker.io/nineya/halo-plus:1.1.2
比如我们要删除halo-plus:1.1.2镜像,可以使用下面的命令删除,IMAGE ID 需要使用自己的,正常情况我们的都不一样。
delete container image 537ad1833bf1
再次查看当前镜像文件,halo-plus:1.1.2版本已经删除了。
show container image
在vyos中创建一个容器前,需要先创建要容器外卷存储的位置,比如我们要创建halo-plus,首先我们要创建好halo-plus的配置文件夹(.halo-plus)。
sudo mkdir -p /home/vyos/halo-plus;cd /home/vyos/halo-plus;sudo mkdir .halo-plus
pwd #查看当前路径
ls -al #查看.halo-plus是否创建成功,下面配置容器外部卷需要使用
创建halo容器使用halo-plus:1.1.4镜像。
configure #配置模式
set container name halo image 'docker.io/nineya/halo-plus:1.1.4'
允许容器与主机共享网络。
set container name halo allow-host-networks
set container name halo host-name halo-plus
当halo容器失败时,Docker 将自动重启halo容器,并始终保持运行状态。
set container name halo restart always
set container name halo volume halo destination '/root/.halo-plus'
set container name halo volume halo source '/home/vyos/halo-plus/.halo-plus'
commit #应用以上配置
save #保存配置到config.boot开机启动配置文件中
halo容器正常启动,显示UP状态。
run show container
可以看到容器完整启动日志,最后显示halo-plus已经start。
run show container log halo