Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/apple/container/llms.txt

Use this file to discover all available pages before exploring further.

This guide covers essential container lifecycle operations including creating, starting, stopping, and managing running containers.

Creating containers

The container create command creates a container from an image without starting it. This is useful when you want to configure a container but start it later.
container create --name my-container ubuntu:latest echo "hello"
After creating a container, you can start it using the container start command:
container start my-container
Use container run to create and start a container in a single command. The run command is a combination of create and start.

Running containers

The container run command is the most common way to start containers. It creates and starts a container in one operation.

Basic usage

# Run a container and attach an interactive shell
container run -it ubuntu:latest /bin/bash

# Run a background web server
container run -d --name web -p 8080:80 nginx:latest

# Set environment variables and limit resources
container run -e NODE_ENV=production --cpus 2 --memory 1G node:18

Common options

  • -e, --env: Set environment variables (format: key=value)
  • --env-file: Read environment variables from a file
  • -u, --user: Set the user for the process
  • -w, --workdir: Set the initial working directory
  • -i, --interactive: Keep standard input open
  • -t, --tty: Open a TTY with the process

Detached vs. interactive mode

Detached mode (-d) runs containers in the background:
container run -d --name my-web-server --rm web-test
The --detach flag runs the container in the background, so you can continue running commands in the same terminal. Interactive mode (-it) allows you to interact with the container:
container run -it ubuntu:latest /bin/bash
The -i flag keeps stdin open, and -t allocates a pseudo-TTY.
You will often see these two options abbreviated and specified together as -ti or -it.

Starting and stopping containers

Starting containers

Start a stopped container:
container start <container-id>
You can attach to the container’s output streams:
container start --attach --interactive my-container

Stopping containers gracefully

The container stop command stops running containers gracefully by sending a signal (default: SIGTERM):
# Stop a specific container
container stop my-web-server

# Stop multiple containers
container stop container1 container2 container3

# Stop all running containers
container stop --all

# Specify a custom timeout before SIGKILL
container stop --time 10 my-container
The --time option specifies seconds to wait before killing the container (default: 5 seconds).

Killing containers immediately

The container kill command immediately kills running containers:
# Kill a container with default KILL signal
container kill my-container

# Send a custom signal
container kill --signal SIGTERM my-container

# Kill all running containers
container kill --all
Use kill with caution: it does not allow for graceful shutdown. Prefer stop for normal operations.

Executing commands in running containers

The container exec command runs a new command inside a running container:
# Execute a single command
container exec my-web-server ls /content
Output:
index.html

Interactive shell

Run an interactive shell to explore the container:
container exec --tty --interactive my-web-server sh
/content # ls
index.html
/content # uname -a
Linux my-web-server 6.12.28 #1 SMP Tue May 20 15:19:05 UTC 2025 aarch64 Linux
/content # exit
The --tty and --interactive flags allow you to interact with the shell from your host terminal. These are often abbreviated as -it.

Additional exec options

# Run as a specific user
container exec --user www-data my-container whoami

# Set environment variables
container exec --env DEBUG=true my-container /app/script.sh

# Change working directory
container exec --workdir /var/log my-container ls -la

# Run in detached mode
container exec --detach my-container /background-task.sh

Viewing container logs

The container logs command displays the output from your containerized application.

Basic usage

container logs my-web-server
Example output:
192.168.64.1 - - [15/May/2025 03:00:03] "GET / HTTP/1.1" 200 -

Following logs in real-time

container logs --follow my-web-server
Press Ctrl+C to stop following the logs.

Limiting log output

# Show only the last 50 lines
container logs -n 50 my-web-server

Viewing boot logs

Use the --boot option to see the logs for the virtual machine boot and init process:
container logs --boot my-web-server
Example output:
[    0.098284] cacheinfo: Unable to detect cache hierarchy for CPU 0
[    0.098466] random: crng init done
[    0.099657] brd: module loaded
[    0.100707] loop: module loaded
[    0.127467] EXT4-fs (vda): mounted filesystem without journal. Quota mode: disabled.
[    0.127525] VFS: Mounted root (ext4 filesystem) readonly on device 254:0.
[    0.143252] Run /sbin/vminitd as init process
2025-05-15T02:24:08+0000 info vminitd : [vminitd] vminitd booting...

Listing containers

The container list (or container ls) command shows containers.

List running containers

container list
ID             IMAGE            OS     ARCH   STATE    ADDR
my-web-server  web-test:latest  linux  arm64  running  192.168.64.3

List all containers (including stopped)

container list --all
You can abbreviate the --all option to -a:
container ls -a

Output formats

container list --format table
ID             IMAGE            OS     ARCH   STATE    ADDR
my-web-server  web-test:latest  linux  arm64  running  192.168.64.3

Inspecting containers

The container inspect command displays detailed container information in JSON format:
container inspect my-web-server | jq
[
  {
    "status": "running",
    "networks": [
      {
        "address": "192.168.64.3/24",
        "gateway": "192.168.64.1",
        "hostname": "my-web-server.test.",
        "network": "default"
      }
    ],
    "configuration": {
      "mounts": [],
      "hostname": "my-web-server",
      "id": "my-web-server",
      "resources": {
        "cpus": 4,
        "memoryInBytes": 1073741824
      }
    }
  }
]
Use jq to filter and format JSON output:
# Get only the IP address
container inspect my-web-server | jq '.[0].networks[0].address'

Deleting containers

The container delete (or container rm) command removes one or more containers.

Delete stopped containers

container delete my-container

Delete multiple containers

container delete container1 container2 container3

Force delete running containers

container delete --force my-running-container
Forcing deletion of a running container will immediately kill it without graceful shutdown.

Delete all containers

container delete --all

Auto-remove with —rm flag

Use the --rm flag when running a container to automatically remove it after it stops:
container run --rm --name temp-container ubuntu:latest echo "hello"

Pruning stopped containers

The container prune command removes all stopped containers to reclaim disk space:
container prune
The command outputs the amount of space freed after deletion.
Pruning only affects stopped containers. Running containers are not touched.

Build docs developers (and LLMs) love