# unikraft run

Run an image as an instance.

```
unikraft run [flags]
```

## Examples

Deploy a new instance and expose a HTTPS service:

```bash
unikraft run --metro=sfo --image=nginx:latest -p 443:8080/http+tls
```

Deploy a new instance and expose a HTTPS service and redirect from HTTP to HTTPS:

```bash
unikraft run --metro=sfo --image=nginx:latest -p 443:8080/http+tls -p 80:443/http+redirect
```

Deploy and tail logs from a new instance:

```bash
unikraft run --metro=fra --image=nginx:latest --follow
```

Preview instance creation without executing:

```bash
unikraft run --metro=dal --image=nginx:latest --dry-run
```

Deploy a new instance with environment variables:

```bash
unikraft run --metro=was --image=my-app:latest -e KEY1=VALUE1 -e KEY2=VALUE2
```

Deploy a new instance with attached volume:

```bash
unikraft run --metro=sin --image=my-app:latest -v my-volume:/data
```

Deploy a new instance with attached volume which is read-only:

```bash
unikraft run --metro=sin --image=my-app:latest -v my-volume:/data:ro
```

Deploy a new instance with custom resource allocations:

```bash
unikraft run --metro=sfo --image=my-app:latest -m 512MiB --vcpus 2
```

Deploy a new instance with scale-to-zero enabled:

```bash
unikraft run --metro=fra --image=my-app:latest --scale-to-zero policy=on,cooldown-time=300
```

Deploy a new instance with specific restart policy:

```bash
unikraft run --metro=dal --image=my-app:latest --restart=on-failure
```

## Options

```
  --args arg                  Arguments to pass to the instance.
  --autostart                 Start instance automatically.
  --cmd CMD                   Run a command to edit fields (receives YAML on stdin, outputs edited YAML on stdout).
  --domain fqdn               Service domain.
  --dry-run                   Print patches without applying them.
  -e, --env <key>=<value>     Environment variables.
  --features feature          Instance features.
  -f, --field FIELD           Specify which fields to include in the output.
  --follow                    Follow instance logs after creation.
  --image <name>:<tag>        Image to deploy.
  --load LOAD                 Load fields from a YAML file.
  -m, --memory size           Memory allocation.
  --metro metro               Metro to deploy in.
  -n, --name name             Instance name.
  -o, --output OUTPUT         Output format. One of: kv, table, json, yaml, raw, quiet, template.
  -p, --publish <src>:<dest>[/<handlers>]  Publish port.
  --replicas n                Number of replicas.
  --restart policy            Restart policy.
  --rom image=<ref>,at=<path> Attach ROM.
  --save FILE                 Save creatable fields as YAML to a file (use - for stdout).
  --scale-to-zero <key>=<value>  Scale-to-zero options.
  policy: on | off
  cooldown-time: cooldown in ms before scaling to zero
  notify-time: notification time in ms before scaling to zero
  stateful: true | false
  --service name              Service group name or key.
  --set <name>=<value>        Key-value pairs to set on the instance.
  --set-file <name>=<filename>  Files containing key-value pairs to set on the instance.
  --template name             Create from instance template.
  --vcpus n                   Number of vCPUs.
  --visual                    Open an editor to modify fields visually.
  -v, --volume <name>:<path>[:<options>]  Attach volume.
```

## Options inherited from parent commands

```
  --config file               Path to the configuration file.
  --log-level level           Set the logging level. (default info)
  --log-type type             Set the log type. (default text)
  --profile name              Set the current profile.
  --telemetry                 Toggle anonymous usage analytics. (default true)
```

## See Also

* [`unikraft`](../unikraft.mdx): The Unikraft Command-Line Interface.

