A step executes a command either on an existing service or using its own container. To execute the command on an existing container, use the "service" option. The step can have its own container which is done by either specifying an image or by building a new image using code at the specified path with the specified Dockerfile.