Distributing Images¶
A Tako server is a regular http server, with a particular directory layout. The origin uri points to a directory that contains the manifest file and the image store.
manifestis a file that lists all available versions and their SHA256 digests. The manifest is signed. See Manifest Format for more information about the manifest format.storeis a directory that contains all images. Files are named after their digest.
Images can be added to the directory with tako store. The
most convenient way to maintain the server directory is to have a local copy
that Tako can act on, and to sync that to a server.
Immutable Images¶
Tako is designed as an append-only system where images are immutable. Changing
an image is not possible: publish it as a new version instead. The Tako client
tako fetch stores a copy of the manifest locally, and when it
downloads a new version of the manifest, it must be a superset of the local
manifest. If the hash of a particular version has changed in the remote
manifest, or if a version was removed, the client rejects the new manifest, even
if it has a valid signature.
In some occasions, it might be necessary to remove a previously published image.
To do so, simply stop serving the image by removing it from the store
directory. The manifest will still list the image. If a client selects that
particular image as a candidate to download, the tako fetch
will fail. This is generally not an issue if a newer compatible version is
available. If this is not the case, you can configure the server to serve “410
Gone” on the url of the removed image. In the future — the following has not yet
been implemented — if tako fetch encounters a 410 it will not
fail, but instead select an earlier compatible version and try again.