Add docs for podman
This commit is contained in:
parent
5c7fbb50e8
commit
64ccd58da4
176
website/source/docs/provisioning/podman.html.md
Normal file
176
website/source/docs/provisioning/podman.html.md
Normal file
@ -0,0 +1,176 @@
|
||||
---
|
||||
layout: "docs"
|
||||
page_title: "Podman - Provisioning"
|
||||
sidebar_current: "provisioning-podman"
|
||||
description: |-
|
||||
The Vagrant Podman provisioner can automatically install Podman, and run it as a drop in replacement for Docker.
|
||||
---
|
||||
|
||||
# Podman Provisioner
|
||||
|
||||
**Provisioner name: `"podman"`**
|
||||
|
||||
The Vagrant Podman provisioner can automatically install
|
||||
[Podman](https://www.podman.io) to be used as a drop in Docker replacement. This includes the ability to pull Docker containers, and configure certain containers to run on boot.
|
||||
|
||||
The podman provisioner is ideal for organizations that are using
|
||||
Podman as a means to manage and run their OCI images.
|
||||
|
||||
As with all provisioners, the Podman provisioner can be used along with
|
||||
all the other provisioners Vagrant has in order to setup your working
|
||||
environment the best way possible. For example, perhaps you use Puppet to
|
||||
install services like databases or web servers but use Podman to house
|
||||
your application runtime. You can use the Puppet provisioner along
|
||||
with the Podman provisioner.
|
||||
|
||||
## Options
|
||||
|
||||
The podman provisioner takes various options. None are required. If
|
||||
no options are provided, the Podman provisioner will only install Podman
|
||||
for you (if it is not already installed).
|
||||
|
||||
* `images` (array) - A list of images to pull using `podman pull`. You
|
||||
can also use the `pull_images` function. See the example below this
|
||||
section for more information.
|
||||
|
||||
In addition to the options that can be set, various functions are available
|
||||
and can be called to configure other aspects of the Podman provisioner. Most
|
||||
of these functions have examples in more detailed sections below.
|
||||
|
||||
* `build_image` - Build an image from a Dockerfile.
|
||||
|
||||
* `pull_images` - Pull the given images. This does not start these images.
|
||||
|
||||
* `post_install_provisioner` - A [provisioner block](/docs/provisioning) that runs post podman
|
||||
installation.
|
||||
|
||||
* `run` - Run a container and configure it to start on boot. This can
|
||||
only be specified once.
|
||||
|
||||
## Building Images
|
||||
|
||||
The provisioner can automatically build images. Images are built prior to
|
||||
any configured containers to run, so you can build an image before running it.
|
||||
Building an image is easy:
|
||||
|
||||
```ruby
|
||||
Vagrant.configure("2") do |config|
|
||||
config.vm.provision "podman" do |d|
|
||||
d.build_image "/vagrant/app"
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
The argument to build an image is the path to give to `podman build`. This
|
||||
must be a path that exists within the guest machine. If you need to get data
|
||||
to the guest machine, use a synced folder.
|
||||
|
||||
The `build_image` function accepts options as a second parameter. Here
|
||||
are the available options:
|
||||
|
||||
* `args` (string) - Additional arguments to pass to `podman build`. Use this
|
||||
to pass in things like `-t "foo"` to tag the image.
|
||||
|
||||
## Pulling Images
|
||||
|
||||
The podman provisioner can automatically pull images from the
|
||||
Docker registry for you. There are two ways to specify images to
|
||||
pull. The first is as an array using `images`:
|
||||
|
||||
```ruby
|
||||
Vagrant.configure("2") do |config|
|
||||
config.vm.provision "podman",
|
||||
images: ["ubuntu"]
|
||||
end
|
||||
```
|
||||
|
||||
This will cause Vagrant to pull the "ubuntu" image from the registry
|
||||
for you automatically.
|
||||
|
||||
The second way to pull images is to use the `pull_images` function.
|
||||
Each call to `pull_images` will _append_ the images to be pulled. The
|
||||
`images` variable, on the other hand, can only be used once.
|
||||
|
||||
Additionally, the `pull_images` function cannot be used with the
|
||||
simple configuration method for provisioners (specifying it all in one line).
|
||||
|
||||
```ruby
|
||||
Vagrant.configure("2") do |config|
|
||||
config.vm.provision "podman" do |d|
|
||||
d.pull_images "ubuntu"
|
||||
d.pull_images "vagrant"
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
## Running Containers
|
||||
|
||||
In addition to pulling images, the Podman provisioner can run and start
|
||||
containers for you. This lets you automatically start services as part of
|
||||
`vagrant up`.
|
||||
|
||||
Running containers can only be configured using the Ruby block syntax with
|
||||
the `do...end` blocks. An example of running a container is shown below:
|
||||
|
||||
```ruby
|
||||
Vagrant.configure("2") do |config|
|
||||
config.vm.provision "podman" do |d|
|
||||
d.run "rabbitmq"
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
This will `podman run` a container with the "rabbitmq" image. Note that
|
||||
Vagrant uses the first parameter (the image name by default) to override any
|
||||
settings used in a previous `run` definition. Therefore, if you need to run
|
||||
multiple containers from the same image then you must specify the `image`
|
||||
option (documented below) with a unique name.
|
||||
|
||||
In addition to the name, the `run` method accepts a set of options, all optional:
|
||||
|
||||
* `image` (string) - The image to run. This defaults to the first argument
|
||||
but can also be given here as an option.
|
||||
|
||||
* `cmd` (string) - The command to start within the container. If not specified,
|
||||
then the container's default command will be used, such as the
|
||||
"CMD" command [specified in the `Dockerfile`](https:/docs.docker.io/en/latest/use/builder/#cmd).
|
||||
|
||||
* `args` (string) - Extra arguments for `podman run` (same as the extra arguments that can be specified for [`docker run`](https:/docs.docker.io/en/latest/commandline/cli/#run))
|
||||
on the command line. These are raw arguments that are passed directly to Podman.
|
||||
|
||||
* `auto_assign_name` (boolean) - If true, the `--name` of the container will
|
||||
be set to the first argument of the run. By default this is true. If the
|
||||
name set contains a "/" (because of the image name), it will be replaced
|
||||
with "-". Therefore, if you do `d.run "foo/bar"`, then the name of the
|
||||
container will be "foo-bar".
|
||||
|
||||
* `daemonize` (boolean) - If true, the "-d" flag is given to `podman run` to
|
||||
daemonize the containers. By default this is true.
|
||||
|
||||
* `restart` (string) - The restart policy for the container. Defaults to
|
||||
"always"
|
||||
|
||||
For example, here is how you would configure Podman to run a container
|
||||
with the Vagrant shared directory mounted inside of it:
|
||||
|
||||
```ruby
|
||||
Vagrant.configure("2") do |config|
|
||||
config.vm.provision "podman" do |d|
|
||||
d.run "ubuntu",
|
||||
cmd: "bash -l",
|
||||
args: "-v '/vagrant:/var/www'"
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
In case you need to run multiple containers based off the same image, you can do
|
||||
so by providing different names and specifying the `image` parameter to it:
|
||||
|
||||
```ruby
|
||||
Vagrant.configure("2") do |config|
|
||||
config.vm.provision "podman" do |d|
|
||||
d.run "db-1", image: "user/mysql"
|
||||
d.run "db-2", image: "user/mysql"
|
||||
end
|
||||
end
|
||||
```
|
||||
@ -107,6 +107,7 @@
|
||||
<li<%= sidebar_current("provisioning-chefclient") %>><a href="/docs/provisioning/chef_client.html">Chef Client</a></li>
|
||||
<li<%= sidebar_current("provisioning-chefapply") %>><a href="/docs/provisioning/chef_apply.html">Chef Apply</a></li>
|
||||
<li<%= sidebar_current("provisioning-docker") %>><a href="/docs/provisioning/docker.html">Docker</a></li>
|
||||
<li<%= sidebar_current("provisioning-podman") %>><a href="/docs/provisioning/podman.html">Podman</a></li>
|
||||
<li<%= sidebar_current("provisioning-puppetapply") %>><a href="/docs/provisioning/puppet_apply.html">Puppet Apply</a></li>
|
||||
<li<%= sidebar_current("provisioning-puppetagent") %>><a href="/docs/provisioning/puppet_agent.html">Puppet Agent</a></li>
|
||||
<li<%= sidebar_current("provisioning-salt") %>><a href="/docs/provisioning/salt.html">Salt</a></li>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user