% runc-spec "8" # NAME **runc-spec** - create a new specification file # SYNOPSIS **runc spec** [_option_ ...] # DESCRIPTION The **spec** command creates the new specification file named _config.json_ for the bundle. The spec generated is just a starter file. Editing of the spec is required to achieve desired results. For example, the newly generated spec includes an **args** parameter that is initially set to call the **sh** command when the container is started. Calling **sh** may work for an ubuntu container or busybox, but will not work for containers that do not include the **sh** binary. # OPTIONS **--bundle**|**-b** _path_ : Set _path_ to the root of the bundle directory. **--rootless** : Generate a configuration for a rootless container. Note this option is entirely different from the global **--rootless** option. # EXAMPLES To run a simple "hello-world" container, one needs to set the **args** parameter in the spec to call hello. This can be done using **sed**(1), **jq**(1), or a text editor. The following commands will: - create a bundle for hello-world; - change the command to run in a container to **/hello** using **jq**(1); - run the **hello** command in a new hello-world container named **container1**. mkdir hello cd hello docker pull hello-world docker export $(docker create hello-world) > hello-world.tar mkdir rootfs tar -C rootfs -xf hello-world.tar runc spec jq '.process.args |= ["/hello"]' < config.json > new.json mv -f new.json config.json runc run container1 In the **run** command above, **container1** is the name for the instance of the container that you are starting. The name you provide for the container instance must be unique on your host. An alternative for generating a customized spec config is to use **oci-runtime-tool**; its sub-command **oci-runtime-tool generate** has lots of options that can be used to do any customizations as you want. See [runtime-tools](https://github.com/opencontainers/runtime-tools) to get more information. When starting a container through **runc**, the latter usually needs root privileges. If not already running as root, you can use **sudo**(8), for example: sudo runc start container1 Alternatively, you can start a rootless container, which has the ability to run without root privileges. For this to work, the specification file needs to be adjusted accordingly. You can pass the **--rootless** option to this command to generate a proper rootless spec file. # SEE ALSO **runc-run**(8), **runc**(8).