更新升级 专属应用 系统故障 硬件故障 电脑汽车 鸿蒙刷机 鸿蒙开发Linux教程 鸿蒙开发Linux命令
当前位置:HMXT之家 > 鸿蒙开发Linux教程 > 在Linux系统中如何使用Vagrant管理Podman容器

在Linux系统中如何使用Vagrant管理Podman容器

更新时间:2023-03-02 10:15:23浏览次数:280+次

本文将和您一起探讨如何在Linux系统中使用Vagrant管理Podman容器。要完成这一目标,您需要在Linux操作系统上安装Vagrant,可以参考在Ubuntu 22.04系统上安装和使用Vagrant的方法一文,地址在https://www.hmxthome.com/linux/4915.html。如果是在Ubuntu上,还需要安装相关的软件包,可在命令行中运行sudo apt-get install libarchive-tools命令安装。另外,本文将使用VirtualBox作为管理程序,所以,用户还需要有VirtualBox。在Vagrant和Virtualbox已经成功安装的前提下,请按照以下步骤进行操作。

如何使用Vagrant管理Podman容器

步骤1:创建Vagrant Box

对于本文,我们将使用VirtualBox作为提供程序创建CentOS 7 Vagrant Box:

$ vagrant box add centos/7 --provider=virtualbox

更多的场景,请看如下所示:

##For KVM

vagrant box add centos/7 --provider=libvirt

##For VMware

vagrant box add generic/centos7 --provider=vmware_desktop

##For Docker

vagrant box add generic/centos7 --provider=docker

##For Parallels

vagrant box add generic/centos7 --provider=parallels

为CentOS 7创建Vagrant文件,如下所示:

mkdir ~/vagrant-vms

cd ~/vagrant-vms

touch ~/vagrant-vms/Vagrantfile

现在,我们将根据我们的首选项编辑Vagrant文件。

步骤2:使用Vagrant管理Podman容器

现在使用Vagrant管理您的Podman容器,如下所示。停止正在运行的实例:

$ vagrant halt

==> default: Attempting graceful shutdown of VM...

1、使用Vagrant构建Podman图像

Vagrant Podman provisioner可用于自动构建图像。容器映像可以在运行之前或在任何配置的容器之前构建,如下所示:

$ vim ~/vagrant-vms/Vagrantfile

Vagrant.configure("2") do |config|

  config.vm.box = "centos/7"

  config.vm.provision "podman" do |d|

    d.build_image "~/vagrant-vms/app"

  end

end

上面是一个示例代码,介绍了如何从Docker文件构建映像,并记住来宾机上必须存在路径~/vagrant/app:

vagrant ssh

mkdir ~/vagrant-vms/app

chmod 755 ~/vagrant-vms/app

停止正在运行的实例,如下所示:

vagrant halt

开始Vagrant,如下所示:

vagrant up --provision

2、用Vagrant Pull Podman图像

还可以从Docker注册表中提取图像。有两种方法可以用来指定要拉取的Docker图像。

第一种方法是使用参数images。

例如,要获取Ubuntu映像,请使用:

$ vim ~/vagrant-vms/Vagrantfile

Vagrant.configure("2") do |config|

  config.vm.box = "centos/7"

  config.vm.provision "podman",

    images: ["ubuntu"]

end

第二个选项是使用pull_images函数,如下所示:

Vagrant.configure("2") do |config|

  config.vm.box = "centos/7"

  config.vm.provision "podman" do |d|

    d.pull_images "ubuntu"

    d.pull_images "alpine"

  end

end

样本输出如下截图所示:

$ vagrant up --provision

\

3、使用Vagrant运行Podman容器

除了构建和提取Podman图像之外,Vagrant还可以用于运行Podman容器。运行容器可以使用Ruby块语法完成,通常使用do…end块。

例如,要运行Rabbitmq Podman容器,请使用以下语法:

$ vim ~/vagrant-vms/Vagrantfile

Vagrant.configure("2") do |config|

  config.vm.box = "centos/7"

  config.vm.provision "podman" do |d|

    d.run "rabbitmq"

  end

end

启动实例如下:

$ vagrant up --provision

==> default: Rsyncing folder: /home/thor/vagrant-vms/ => /vagrant

==> default: Running provisioner: podman...

==> default: Starting Docker containers...

==> default: -- Container: rabbitmq

验证容器是否已启动:

$ vagrant ssh

$ podman ps

详细的状态如下图所示:

\

您也可以使用同一图像运行多个容器。在这里,您必须指定每个容器的名称。

例如,运行多个MySQL实例,可以使用以下代码:

$ vim ~/vagrant-vms/Vagrantfile

Vagrant.configure("2") do |config|

  config.vm.box = "centos/7"

  config.vm.provision "podman" do |d|

    d.run "db-1", image: "mariadb"

    d.run "db-2", image: "mariadb"

  end

end

然后运行以下命令查看结果:

$ vagrant up --provision

==> default: Rsyncing folder: /home/thor/vagrant-vms/ => /vagrant

==> default: Running provisioner: podman...

==> default: Podman installing

==> default: Starting Docker containers...

==> default: -- Container: db-1

==> default: -- Container: db-2

此外,可以将容器配置为在其中安装共享目录的情况下运行。

例如,运行具有共享目录/var/www的Ubuntu容器时使用以下代码:

$ vim ~/vagrant-vms/Vagrantfile

Vagrant.configure("2") do |config|

  config.vm.box = "centos/7"

  config.vm.provision "podman" do |d|

    d.run "ubuntu",

      cmd: "bash -l",

      args: "-v '/vagrant:/var/www'"

  end

end

样本输出:

$ vagrant up --provision

==> default: Rsyncing folder: /home/thor/vagrant-vms/ => /vagrant

==> default: Running provisioner: podman...

==> default: Podman installing

==> default: Starting Docker containers...

==> default: -- Container: ubuntu

您可以如下验证您创建的Podman容器:

$ vagrant ssh

$ podman ps -a

详细的状态如下图所示:

\

您可以暂停/休眠Vagrant实例,如下所示:

vagrant suspend

如果要删除Vagrant实例,请运行以下命令:

vagrant destroy

至此,我们已经成功完成了使用Vagrant管理Podman容器的目标。