Running IO with Docker

Agent IO June 2, 2025
Source
IO is distributed as a Docker image During the private preview, IO is distributed on Docker Hub as agentio/io . The IO image is based on envoyproxy/envoy-distroless with two additions: The IO binary is copied to /usr/local/bin/io , where it becomes the entry point for the container. An /io directory is added and IO runs in this directory. Typically, this directory would be mapped to a volume outside the container. Here's the relevant section of the IO Dockerfile : Run IO locally using Docker To run IO locally, save the following in a file named IO.sh and make it executable: Run IO from your terminal with ./IO.sh [options] , where [options] are any additional options that you want to add. Stop your backgrounded IO If you're running IO in the background with Docker, you can see your process with docker ps : Then you can stop your IO with docker kill . ⚠️ Files created in Docker are owned by root When you run IO for the first time, it creates a SQLite database in a file named io.db and several log files. Because IO runs inside docker as root, these files are initially owned by root . You can fix that by using chown and chgrp to change the ownership of these files. Just run this in the directory where you are running IO: ⚠️ Docker can't see outside your run directory If you try to read files outside your current directory, IO won't be able to see them. For example, using the script above: This file is readable in my shell, but it's unreadable in Docker because only my current directory is mapped to IO's Docker volume. It's an inconvenience but also a security feature. ⚠️ IO should be run with Host Networking Note that we're running IO with host networking . This allows IO to directly use ports on the host system, which usually include ports 80 and 443 for HTTP/HTTPS, port 2200 for SSH/SFTP control of IO, and all of the other ports that you specify when you configure IO callers and senders. 😎 Run a Dockerized IO just like a local instance Now that IO conforms to the XDG Base Directory Specification , local (non-Dockerized) runs store data in a common location. Occasionally I want to test Docker builds by running them locally. Here's how I do that with a docker run command that maps my container's storage to my local IO directory.

Discussion in the ATmosphere

Loading comments...