|
@@ -37,7 +37,7 @@ pip install dist/focker-0.9.tgz |
|
|
|
|
|
|
|
|
### Setting up ZFS
|
|
|
### Setting up ZFS
|
|
|
|
|
|
|
|
|
Upon first execution of the `focker` command, Focker will automatically create the necessary directories and ZFS datasets. You just need to exclude the unlikely case that you are already using /focker in your filesystem hierarchy. The layout after initialization will look the following:
|
|
|
|
|
|
|
|
|
Upon first execution of the `focker` command, Focker will automatically create the necessary directories and ZFS datasets. You just need to exclude the unlikely case that you are already using `/focker` in your filesystem hierarchy. The layout after initialization will look the following:
|
|
|
|
|
|
|
|
|
```
|
|
|
```
|
|
|
/focker
|
|
|
/focker
|
|
@@ -50,7 +50,7 @@ Upon first execution of the `focker` command, Focker will automatically create t |
|
|
|
|
|
|
|
|
### Preparing base image
|
|
|
### Preparing base image
|
|
|
|
|
|
|
|
|
To bootstrap the images system you need to install FreeBSD in jail mode to a ZFS dataset placed in /focker/images and provide two user-defined properties - `focker:sha256` and `focker:tags`. One way to achieve this would be the following:
|
|
|
|
|
|
|
|
|
To bootstrap the images system you need to install FreeBSD in jail mode to a ZFS dataset placed in `/focker/images` and provide two user-defined properties - `focker:sha256` and `focker:tags`. One way to achieve this would be the following (using Bash shell):
|
|
|
|
|
|
|
|
|
```bash
|
|
|
```bash
|
|
|
TAGS="freebsd-latest freebsd-$(freebsd-version | cut -d'-' -f1)"
|
|
|
TAGS="freebsd-latest freebsd-$(freebsd-version | cut -d'-' -f1)"
|
|
@@ -139,49 +139,65 @@ focker |
|
|
|
|
|
|
|
|
Individual combinations are briefly described below:
|
|
|
Individual combinations are briefly described below:
|
|
|
|
|
|
|
|
|
#### focker image
|
|
|
|
|
|
|
|
|
#### focker image|img|im|i
|
|
|
|
|
|
|
|
|
The `focker image` mode groups commands related to Focker images.
|
|
|
The `focker image` mode groups commands related to Focker images.
|
|
|
|
|
|
|
|
|
##### build FOCKER_DIR [--tags TAG [...TAG]]
|
|
|
|
|
|
|
|
|
##### build|b FOCKER_DIR [--tags TAG [...TAG]]
|
|
|
|
|
|
|
|
|
Build a Focker image according to the specification in a Fockerfile present in the specified FOCKER_DIR. Fockerfile syntax is very straightforward and explained below.
|
|
|
Build a Focker image according to the specification in a Fockerfile present in the specified FOCKER_DIR. Fockerfile syntax is very straightforward and explained below.
|
|
|
|
|
|
|
|
|
##### tag REFERENCE TAG [...TAG]
|
|
|
|
|
|
|
|
|
##### tag|t REFERENCE TAG [...TAG]
|
|
|
|
|
|
|
|
|
Applies one or more tags to the given image. REFERENCE can be the SHA256 of an image or one of its existing tags. It can be just a few first characters as long as they are unambiguous.
|
|
|
Applies one or more tags to the given image. REFERENCE can be the SHA256 of an image or one of its existing tags. It can be just a few first characters as long as they are unambiguous.
|
|
|
|
|
|
|
|
|
##### untag TAG [...TAG]
|
|
|
|
|
|
|
|
|
##### untag|u TAG [...TAG]
|
|
|
|
|
|
|
|
|
Removes one or more image tags.
|
|
|
Removes one or more image tags.
|
|
|
|
|
|
|
|
|
##### list [--full-sha256|-f]
|
|
|
|
|
|
|
|
|
##### list|ls|l [--full-sha256|-f]
|
|
|
|
|
|
|
|
|
Lists existing Focker images, optionally with full SHA256 checksums (instead of the default 7 first characters).
|
|
|
Lists existing Focker images, optionally with full SHA256 checksums (instead of the default 7 first characters).
|
|
|
|
|
|
|
|
|
##### prune
|
|
|
|
|
|
|
|
|
##### prune|p
|
|
|
|
|
|
|
|
|
Greedily removes existing Focker images without tags and without dependents.
|
|
|
Greedily removes existing Focker images without tags and without dependents.
|
|
|
|
|
|
|
|
|
##### remove REFERENCE
|
|
|
|
|
|
|
|
|
##### remove|r REFERENCE
|
|
|
|
|
|
|
|
|
Removes the specified image.
|
|
|
Removes the specified image.
|
|
|
|
|
|
|
|
|
#### focker jail
|
|
|
|
|
|
|
|
|
#### focker jail|j
|
|
|
|
|
|
|
|
|
##### create
|
|
|
|
|
|
|
|
|
The `focker jail` mode groups commands related to Focker-managed jails.
|
|
|
|
|
|
|
|
|
##### start
|
|
|
|
|
|
|
|
|
##### create|c IMAGE [--command|-c COMMAND] [--env|-e VAR1:VALUE1 [...VARN:VALUEN]] [--mounts|-m FROM1:ON1 [...FROMN:ONN]] [--hostname|-n HOSTNAME]
|
|
|
|
|
|
|
|
|
##### stop
|
|
|
|
|
|
|
|
|
Creates a new Focker-managed jail. A jail consists of a clone of the given `IMAGE` and an entry in `/etc/jail.conf`. The configuration entry uses `exec.prestart` and `exec.start` to specify how the runtime environment (mounts and environmental variables) should be set up. It also calls `COMMAND` as last in `exec.start`. If not specified `COMMAND` defaults to `/bin/sh`. The hostname can be specified using the `HOSTNAME` parameter. Mounts and environment variables are provided as tuples separated by a colon (:). The environmental variable specification consists of variable name followed by variable value. The mount specification consists of the "from path", followed by the "on path". "From path" can be a local system path or a volume name.
|
|
|
|
|
|
|
|
|
##### remove
|
|
|
|
|
|
|
|
|
##### start|s REFERENCE
|
|
|
|
|
|
|
|
|
##### exec
|
|
|
|
|
|
|
|
|
Starts the given jail specified by `REFERENCE`. `REFERENCE` can be the SHA256 of an existing jail or one of its existing tags. It can be just a few first characters as long as they are unambiguous. This command is equivalent of calling `jail -c`.
|
|
|
|
|
|
|
|
|
##### oneshot
|
|
|
|
|
|
|
|
|
##### stop|S REFERENCE
|
|
|
|
|
|
|
|
|
##### list
|
|
|
|
|
|
|
|
|
Stops the given jail specified by `REFERENCE`. This command is equivalent to calling `jail -r`.
|
|
|
|
|
|
|
|
|
|
|
|
##### remove|r REFERENCE
|
|
|
|
|
|
|
|
|
|
|
|
Removes the given jail specified by `REFERENCE`. The jail is stopped if running, any filesystems mounted under its root directory are unmounted, its ZFS dataset and entry in `/etc/jail.conf` are removed.
|
|
|
|
|
|
|
|
|
|
|
|
##### exec|e REFERENCE [...COMMAND]
|
|
|
|
|
|
|
|
|
|
|
|
Executes given `COMMAND` (or `/bin/sh` if not specified) in the given running jail specified by `REFERENCE`. This command is the equivalent of calling `jexec`.
|
|
|
|
|
|
|
|
|
|
|
|
##### oneshot|o IMAGE [--env|-e VAR1:VALUE1 [...VARN:VALUEN]] [--mounts|-m FROM1:ON1 [...FROMN:ONN]] [...COMMAND]
|
|
|
|
|
|
|
|
|
|
|
|
Create a new one-time Focker-managed jail. The syntax and logic is identical to `focker jail create`, the difference being that the hostname cannot be specified and that the jail will be automatically removed when the `COMMAND` exits.
|
|
|
|
|
|
|
|
|
|
|
|
Example: `focker jail oneshot freebsd-latest -e FOO:bar -- ls -al`
|
|
|
|
|
|
|
|
|
|
|
|
##### list|ls|l
|
|
|
|
|
|
|
|
|
##### tag
|
|
|
##### tag
|
|
|
|
|
|
|
|
|