Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: refactored _setting up container registries_ #4965

Merged
merged 9 commits into from Dec 22, 2023
37 changes: 0 additions & 37 deletions website/docs/containers/registries/_insecure-registry-linux.md

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

248 changes: 241 additions & 7 deletions website/docs/containers/registries/index.md
Expand Up @@ -2,18 +2,252 @@
sidebar_position: 3
title: Registries
description: Working with container registries
tags: [podman-desktop, containers, registries]
tags: [podman-desktop, containers]
keywords: [podman desktop, podman, containers, registries]
hide_table_of_contents: false
image: /img/docs/containers/registries/img/registries.png
---

# Working with container registries
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

Podman Desktop has access to public registries by default.
# Setting up container registries

You might want to configure Podman Desktop to:
:::tip[Before you start]

- [Authenticate to a preconfigured registry](/docs/containers/registries/authenticating-to-a-preconfigured-registry).
- [Add an Insecure Registry to Podman Desktop](/docs/containers/registries/insecure-registry).
Before you start, you should:

![Registries page](img/registries.png)
- Get authentication details for your container registry:
- Registry URL.
- User name.
- Password, or OAuth secret.
- Get the fully qualified name of a private image stored in your registry, such as `my-registry.tld/my-repository/my-image`.
- Get the fully qualified image name that your registry requires to push an image, such as `my-registry.tld/my-repository/my-image`.

:::

## Setting up a pre-configured registry

To ease usage of the most popular container registries, Podman Desktop has pre-configured registries, including:

- Docker Hub
- Red Hat Quay
- GitHub
- Google Container Registry

If your container registry is in this list, follow the steps:

1. Go to **<Icon icon="fa-solid fa-cog" size="lg" /> Settings > Registries**.
2. In your registry line, click **Configure**.
3. Enter your registry credentials:

![Authenticating to a pre-configured registry](img/authenticating-to-a-preconfigured-registry.png)

Check warning on line 44 in website/docs/containers/registries/index.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [PodmanDesktop.Links] Consider starting the link with https:// or /, rather than ](img/authenticating-to-a-preconfigured-registry.png) Raw Output: {"message": "[PodmanDesktop.Links] Consider starting the link with https:// or /, rather than ](img/authenticating-to-a-preconfigured-registry.png)", "location": {"path": "website/docs/containers/registries/index.md", "range": {"start": {"line": 44, "column": 49}}}, "severity": "WARNING"}

1. **Username**: Enter your user name.
2. **Password**: Enter your password or OAuth secret.
3. Click **Login**.

Podman Desktop logs Podman in with the provided credentials.

If you enter the wrong credentials, you see an error message:

1. Enter the correct credentials
2. Click **Login** again.

## Setting up a custom registry

You have a custom container registry, or one that is not available in the pre-configured list: we have got you covered. Follow the steps:

1. Go to **<Icon icon="fa-solid fa-cog" size="lg" /> Settings > Registries**.
1. Click **<Icon icon="fa-solid fa-plus-circle" size="lg" /> Add registry** at the top right corner of the screen.
1. Enter your registry details:

![Adding a custom registry](img/adding-a-custom-registry.png)

Check warning on line 65 in website/docs/containers/registries/index.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [PodmanDesktop.Links] Consider starting the link with https:// or /, rather than ](img/adding-a-custom-registry.png) Raw Output: {"message": "[PodmanDesktop.Links] Consider starting the link with https:// or /, rather than ](img/adding-a-custom-registry.png)", "location": {"path": "website/docs/containers/registries/index.md", "range": {"start": {"line": 65, "column": 30}}}, "severity": "WARNING"}

1. **Registry Location**: Enter your repository URL, such as `https://myregistry.tld`.
2. **Username**: Enter your user name.
3. **Password**: Enter your password or OAuth secret.
4. Click **Login**.

Podman Desktop logs Podman in with the provided credentials.

If you enter the wrong credentials, you see an error message:

1. Enter the correct credentials
2. Click **Login** again.

## Setting up a registry with an insecure certificate

If your registry has an insecure certificate, such as a self-signed certificate, you see a warning when setting up the registry.

1. In the **Invalid Certificate** window, click **Yes** to add the registry anyway.

![Podman Desktop Registry Warning](img/registry-warning-insecure.png)

Check warning on line 85 in website/docs/containers/registries/index.md

View workflow job for this annotation

GitHub Actions / runner / vale

[vale] reported by reviewdog 🐶 [PodmanDesktop.Links] Consider starting the link with https:// or /, rather than ](img/registry-warning-insecure.png) Raw Output: {"message": "[PodmanDesktop.Links] Consider starting the link with https:// or /, rather than ](img/registry-warning-insecure.png)", "location": {"path": "website/docs/containers/registries/index.md", "range": {"start": {"line": 85, "column": 37}}}, "severity": "WARNING"}

1. Tell Podman that it has your authorization to access the insecure registry: edit the `registries.conf` file.

1. Go to a location where you can edit the `registries.conf` file:

<Tabs groupId="operating-systems">
<TabItem value="win" label="Windows">

- The configuration file is in the Podman machine: open a terminal in the Podman Machine.

```shell-session
$ podman machine ssh [optional-machine-name]
```

</TabItem>
<TabItem value="mac" label="macOS">

- The configuration file is in the Podman machine: open a terminal in the Podman Machine.

```shell-session
$ podman machine ssh [optional-machine-name]
```

</TabItem>
<TabItem value="linux" label="Linux">

- The configuration file is in your host: open a terminal with superuser privileges.

```shell-session
$ sudo su -
```

</TabItem>
</Tabs>

1. Edit the registry optional configuration file.

```shell-session
# vim /etc/containers/registries.conf`
```

For each insecure registry, add a `[[registry]]` section that defines:

- `location =`: Enter your registry URL.
- `insecure = true`: Accept the insecure certificate.

For example, if your have two registries, such as `https://my-registry.tld` and `http://registry.example.com`, add the following lines:

```toml
[[registry]]
location = "my-registry.tld"
insecure = true

[[registry]]
location = "registry.example.com"
insecure = true
```

1. Restart Podman to apply the changes.

<Tabs groupId="operating-systems">
<TabItem value="win" label="Windows">

1. Go to **<Icon icon="fa-solid fa-cog" size="lg" /> Settings > Resources**.
1. Restart the Podman machine.

</TabItem>
<TabItem value="mac" label="macOS">

1. Go to **<Icon icon="fa-solid fa-cog" size="lg" /> Settings > Resources**.
1. Restart the Podman machine.

</TabItem>
<TabItem value="linux" label="Linux (rootless)">

- Stop all Podman processes.

```shell-session
$ pkill podman
```

</TabItem>
<TabItem value="linux-rootful" label="Linux (rootful)">

- Restart Podman.

```shell-session
$ sudo systemctl restart podman
```

</TabItem>
</Tabs>

## Verifying your registry setup

To verify your registry has been properly configured, you can do the following steps:

1. In **<Icon icon="fa-solid fa-cog" size="lg" /> Settings > Registries**, the line with your registry has content in the Username and Password column, and action icons replacing the Configure button.

1. Pull a private image from the registry.

1. Get the name of a private image stored in your registry, such as `quay.io/my-repository/my-image`, `ghcr.io/my-repository/my-image`, `docker.io/my-repository/my-image`, or `my-registry.tld/my-repository/my-image`.
1. Go to **Images**.
1. Click **Pull an image**.
1. On the **Image to Pull** screen:
1. **Image to pull**: Enter the image name.
1. Click Pull image.
1. Click Done.

1. Push an image to the registry:

1. Get the fully qualified image name that your registry requires, such as `quay.io/my-repository/my-image`, `ghcr.io/my-repository/my-image`, or `docker.io/my-repository/my-image`.
1. Go to **Images**.
1. Click **Build an image**.
1. On the **Build Image from Containerfile** screen
1. **Containerfile path**: select the Containerfile or Dockerfile to build.
2. **Image Name**: enter the fully qualified image name that your registry requires.
3. Click Build.
4. Click Done.
1. On your image line, click **<Icon icon="fa-solid fa-ellipsis-v" size="lg" />**.

The contextual menu has a **Push Image to _your registry_** entry.

## Changing your credentials

To change your registry credentials, you can do the following steps:

1. Go to **<Icon icon="fa-solid fa-cog" size="lg" /> Settings > Registries**.
1. On your registry line, click **<Icon icon="fa-solid fa-ellipsis-v" size="lg" />**.
1. Click **Edit password**.
1. Enter your credentials in the **Username** and **Password** fields, and click **Login**.

Podman Desktop logs Podman in with the updated credentials.

## Removing a registry

To remove your registry, you can do the following steps:

1. Go to **<Icon icon="fa-solid fa-cog" size="lg" /> Settings > Registries**.
1. On your registry line, click **<Icon icon="fa-solid fa-ellipsis-v" size="lg" />**.
1. Click Remove.

Podman Desktop removes the registry from the settings, and logs Podman out from the registry.

## Finding Podman registry configuration files

Podman has two files to configure registries:

- `auth.json` defines the authentication to registries.

Podman Desktop stores this file directly on your host, in `$HOME/.config/containers/auth.json`.

The Podman machine mounts the authentication configuration file to access it.

When you delete the Podman machine, the registry configuration is not lost: it stays on your host.

- `registries.conf` defines optional features, such as allowing insecure certificates.

The Podman machine stores the file in `/etc/containers/registries.conf`.

When you delete the Podman machine, this file is deleted.

## Next steps

Consider completing some other common tasks that depend registries:

- Pulling an image.
- Pushing an image to a registry.