Working with Images¶
Contree SDK allows you to pull and manage container images. You can use images from public registries, your own private registries, or import Docker Hub images.
For detailed API documentation, see ImagesManager and ImagesManagerSync.
Pulling Images¶
You can pull images by UUID, tag, or import them from external registries:
1print(f"Selected {image_uuid=}")
2print(f"Selected {image_tag=}")
3
4print("\nPulling by UUID:")
5result = await client.images.pull(image_uuid)
6print(f"Pull by UUID: {result.uuid=}, {result.tag=}, {result.state=}")
7
8print("\nPulling by tag:")
9result = await client.images.pull(image_tag)
10print(f"Pull by tag: {result.uuid=}, {result.tag=}, {result.state=}")
11
12print("\nImporting public image:")
13result = await client.images.pull("docker://ghcr.io/linuxserver/code-server:latest")
14print(f"Import public: {result.uuid=}, {result.tag=}, {result.state=}")
See pull() for all parameters.
1print(f"Selected {image_uuid=}")
2print(f"Selected {image_tag=}")
3
4print("\nPulling by UUID:")
5result = client.images.pull(image_uuid)
6print(f"Pull by UUID: {result.uuid=}, {result.tag=}, {result.state=}")
7
8print("\nPulling by tag:")
9result = client.images.pull(image_tag)
10print(f"Pull by tag: {result.uuid=}, {result.tag=}, {result.state=}")
11
12print("\nImporting public image:")
13result = client.images.pull("docker://ghcr.io/linuxserver/code-server:latest")
14print(f"Import public: {result.uuid=}, {result.tag=}, {result.state=}")
See pull() for all parameters.
Import Methods¶
By UUID:
client.images.pull(uuid)- Pull existing image by UUIDBy tag:
client.images.pull("ubuntu:latest")- Pull by tag nameFrom registry:
client.images.pull("docker://ghcr.io/owner/image:tag")- Import from external registryFrom private registry:
client.images.pull("docker://ghcr.io/owner/image:tag", username="user", password="token")- Import from private registry with authentication
The docker:// prefix allows you to import any publicly accessible Docker image directly into Contree.
Listing Images¶
View all available images in your Contree instance:
1all_images = await client.images()
2print(f"Loaded {all_images=}")
3
4limited_images = await client.images(number=3)
5print(f"Found {len(limited_images)=}")
6
7tagged_images = await client.images(tagged=True)
8print(f"Found {len(tagged_images)=}")
9
10imported_images = await client.images(kind=ImageKind.IMPORTED)
11print(f"Found {len(imported_images)=}")
12
13recent_images = await client.images(since=datetime.now() - timedelta(days=7), number=5)
14print(f"Found {len(recent_images)=}")
See ImagesManager for filtering and iteration options.
1all_images = client.images()
2print(f"Loaded {all_images=}")
3
4limited_images = client.images(number=3)
5print(f"Found {len(limited_images)=}")
6
7tagged_images = client.images(tagged=True)
8print(f"Found {len(tagged_images)=}")
9
10imported_images = client.images(kind=ImageKind.IMPORTED)
11print(f"Found {len(imported_images)=}")
12
13recent_images = client.images(since=datetime.now() - timedelta(days=7), number=5)
14print(f"Found {len(recent_images)=}")
See ImagesManagerSync for filtering and iteration options.