diff --git a/_vale/Docker/Acronyms.yml b/_vale/Docker/Acronyms.yml index 0649318e254b..8bad91e72b83 100644 --- a/_vale/Docker/Acronyms.yml +++ b/_vale/Docker/Acronyms.yml @@ -9,6 +9,7 @@ second: '(?:\b[A-Z][a-z]+ )+\(([A-Z]{2,5})\)' # ... with the exception of these: exceptions: - AGPL + - AI - API - ARM - ASP @@ -54,6 +55,7 @@ exceptions: - HTTP - HTTPS - IAM + - IBM - ID - IDE - IP diff --git a/_vale/config/vocabularies/Docker/accept.txt b/_vale/config/vocabularies/Docker/accept.txt index 97b29fc63320..b5ec8d271386 100644 --- a/_vale/config/vocabularies/Docker/accept.txt +++ b/_vale/config/vocabularies/Docker/accept.txt @@ -110,6 +110,7 @@ Zsh [Ii]nfosec [Kk]eyrings? [Ll]oopback +[Mm]emcached [Mm]oby [Nn]amespace [Oo]nboarding @@ -153,6 +154,7 @@ kubectl kubefwd kubelet lookup +label_file macOS macvlan mfsymlinks diff --git a/_vendor/modules.txt b/_vendor/modules.txt index e0b9fdce71ac..77efffc0e102 100644 --- a/_vendor/modules.txt +++ b/_vendor/modules.txt @@ -2,5 +2,5 @@ # github.com/moby/buildkit v0.18.0 # github.com/docker/buildx v0.19.2 # github.com/docker/cli v27.4.0+incompatible -# github.com/docker/compose/v2 v2.31.0 +# github.com/docker/compose/v2 v2.32.0 # github.com/docker/scout-cli v1.15.0 diff --git a/content/_index.md b/content/_index.md index 5d5ecb947b28..5561dc158f35 100644 --- a/content/_index.md +++ b/content/_index.md @@ -80,17 +80,6 @@ grid: url: "/scout/quickstart/" - text: "Image analysis" url: "/scout/image-analysis/" - - title: Trusted content - icon: verified - description: | - High-quality, secure images from Docker and verified partners. - links: - - text: "Overview" - url: "/trusted-content/" - - text: "Official images" - url: "/trusted-content/official-images/" - - text: "Verified publisher program" - url: "/trusted-content/dvp-program/" - title: Subscription icon: card_membership description: | diff --git a/content/get-started/docker-concepts/the-basics/what-is-an-image.md b/content/get-started/docker-concepts/the-basics/what-is-an-image.md index d818f1797ad7..c3702a4c5fe2 100644 --- a/content/get-started/docker-concepts/the-basics/what-is-an-image.md +++ b/content/get-started/docker-concepts/the-basics/what-is-an-image.md @@ -188,10 +188,7 @@ In this walkthrough, you searched and pulled a Docker image. In addition to pull The following resources will help you learn more about exploring, finding, and building images: -- [Docker Trusted Content](/manuals/trusted-content/_index.md) - - [Docker Official Images docs](/manuals/trusted-content/official-images/_index.md) - - [Docker Verified Publisher docs](/manuals/trusted-content/dvp-program.md) - - [Docker-Sponsored Open Source Program docs](/manuals/trusted-content/dsos-program.md) +- [Docker trusted content](/manuals/docker-hub/image-library/trusted-content.md) - [Explore the Image view in Docker Desktop](/manuals/desktop/use-desktop/images.md) - [Docker Build overview](/manuals/build/concepts/overview.md) - [Docker Hub](https://hub.docker.com) diff --git a/content/get-started/introduction/build-and-push-first-image.md b/content/get-started/introduction/build-and-push-first-image.md index ce507efa7168..69af604c8050 100644 --- a/content/get-started/introduction/build-and-push-first-image.md +++ b/content/get-started/introduction/build-and-push-first-image.md @@ -33,7 +33,7 @@ If you’re new to container images, think of them as a standardized package tha To share your Docker images, you need a place to store them. This is where registries come in. While there are many registries, Docker Hub is the default and go-to registry for images. Docker Hub provides both a place for you to store your own images and to find images from others to either run or use as the bases for your own images. -In [Develop with containers](develop-with-containers.md), you used the following images that came from Docker Hub, each of which are [Docker Official Images](/trusted-content/official-images/): +In [Develop with containers](develop-with-containers.md), you used the following images that came from Docker Hub, each of which are [Docker Official Images](/manuals/docker-hub/image-library/trusted-content.md#docker-official-images): - [node](https://hub.docker.com/_/node) - provides a Node environment and is used as the base of your development efforts. This image is also used as the base for the final application image. - [mysql](https://hub.docker.com/_/mysql) - provides a MySQL database to store the to-do list items diff --git a/content/get-started/workshop/02_our_app.md b/content/get-started/workshop/02_our_app.md index 0e2ee0bbc5ad..9d05ba5fc112 100644 --- a/content/get-started/workshop/02_our_app.md +++ b/content/get-started/workshop/02_our_app.md @@ -104,7 +104,7 @@ Now that you have an image, you can run the application in a container using the The `-d` flag (short for `--detach`) runs the container in the background. This means that Docker starts your container and returns you to the terminal - prompt. + prompt. Also, it does not display logs in the terminal. The `-p` flag (short for `--publish`) creates a port mapping between the host and the container. The `-p` flag takes a string value in the format of diff --git a/content/includes/hub-categories.md b/content/includes/hub-categories.md new file mode 100644 index 000000000000..5b2b747b0c4f --- /dev/null +++ b/content/includes/hub-categories.md @@ -0,0 +1,34 @@ +The categories include: + +- **API Management**: Tools for creating, publishing, analyzing, and securing + APIs. +- **Content Management System:** Software applications to create and manage + digital content through templates, procedures, and standard formats. +- **Data Science:** Tools and software to support analyzing data and generating + actionable insights. +- **Databases & Storage:** Systems for storing, retrieving, and managing data. +- **Languages & Frameworks:** Programming language runtimes and frameworks. +- **Integrations & Delivery:** Tools for Continuous Integration (CI) and + Continuous Delivery (CD). +- **Internet of Things:** Tools supporting Internet of Things (IoT) + applications. +- **Machine Learning & AI:** Tools and frameworks optimized for artificial + intelligence and machine learning projects, such as pre-installed libraries + and frameworks for data analysis, model training, and deployment. +- **Message Queues:** Message queuing systems optimized for reliable, scalable, + and efficient message handling. +- **Monitoring & Observability:** Tools to track software and system performance + through metrics, logs, and traces, as well as observability to explore the + system’s state and diagnose issues. +- **Networking:** Repositories that support data exchange and connecting + computers and other devices to share resources. +- **Operating Systems:** Software that manages all other programs on a computer + and serves as an intermediary between users and the computer hardware, while + overseeing applications and system resources. +- **Security:** Tools to protect a computer system or network from theft, + unauthorized access, or damage to their hardware, software, or electronic + data, as well as from service disruption. +- **Web Servers:** Software to serve web pages, HTML files, and other assets to + users or other systems. +- **Web Analytics:** Tools to collect, measure, analyze, and report on web data + and website visitor engagement. \ No newline at end of file diff --git a/content/manuals/_index.md b/content/manuals/_index.md index 7ef904dfb118..31252a51cae6 100644 --- a/content/manuals/_index.md +++ b/content/manuals/_index.md @@ -76,10 +76,6 @@ params: description: Commercial use licenses for Docker products. icon: card_membership link: /subscription/ - - title: Trusted content - description: Curated, high-quality content from trusted sources. - icon: verified - link: /trusted-content/ --- This section contains user guides on how to install, set up, configure, and use diff --git a/content/manuals/admin/images/team-repo-permission.png b/content/manuals/admin/images/team-repo-permission.png deleted file mode 100644 index e5fab7466713..000000000000 Binary files a/content/manuals/admin/images/team-repo-permission.png and /dev/null differ diff --git a/content/manuals/admin/organization/general-settings.md b/content/manuals/admin/organization/general-settings.md index 9b5eb7d31e08..ada92c672a61 100644 --- a/content/manuals/admin/organization/general-settings.md +++ b/content/manuals/admin/organization/general-settings.md @@ -11,7 +11,7 @@ This section describes how to manage organization settings in the Docker Admin C ## Configure general information -General organization information appears on your organization landing page in Docker Hub. +General organization information appears on your organization landing page in the Admin Console. This information includes: - Organization Name diff --git a/content/manuals/admin/organization/insights.md b/content/manuals/admin/organization/insights.md index 159a5020ea04..478f8101b471 100644 --- a/content/manuals/admin/organization/insights.md +++ b/content/manuals/admin/organization/insights.md @@ -15,17 +15,19 @@ productivity and efficiency across the organization. Key benefits include: -* Uniform working environment. Establish and maintain standardized +- Uniform working environment. Establish and maintain standardized configurations across teams. -* Best practices. Promote and enforce usage guidelines to ensure optimal +- Best practices. Promote and enforce usage guidelines to ensure optimal performance. -* Increased visibility. Monitor and drive adoption of organizational +- Increased visibility. Monitor and drive adoption of organizational configurations and policies. -* Optimized license use. Ensure that developers have access to advanced +- Optimized license use. Ensure that developers have access to advanced features provided by a Docker subscription. ## View Insights for organization users +{{< include "admin-early-access.md" >}} + 1. Go to the [Admin Console](https://app.docker.com/admin/) and sign in to an account that is an organization owner. 2. Select your company on the **Choose profile** page. @@ -33,18 +35,19 @@ Key benefits include: 4. On the **Insights** page, select the period of time for the data. > [!NOTE] +> > Insights data is not real-time and is updated daily. At the top-right of the > Insights page, view the **Last updated** date to understand when the data was > last updated. You can view data in the following charts: - * [Docker Desktop users](#docker-desktop-users) - * [Builds](#builds) - * [Containers](#containers) - * [Docker Desktop usage](#docker-desktop-usage) - * [Docker Hub images](#docker-hub-images) - * [Extensions](#extensions) + - [Docker Desktop users](#docker-desktop-users) + - [Builds](#builds) + - [Containers](#containers) + - [Docker Desktop usage](#docker-desktop-usage) + - [Docker Hub images](#docker-hub-images) + - [Extensions](#extensions) ### Docker Desktop users @@ -56,13 +59,12 @@ counts. The chart contains the following data. -| Data | Description | +| Data | Description | |:-----------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Total active users | The number of users that have actively used Docker Desktop and either signed in with a Docker account that has a license in your organization or signed in to a Docker account with an email address from a domain associated with your organization.

Users who don’t sign in to an account associated with your organization are not represented in the data. To ensure users sign in with an account associated with your organization, you can [enforce sign-in](/security/for-admins/enforce-sign-in/). | -| Active with license | The number of users that have actively used Docker Desktop and have signed in to a Docker account with a license in your organization. | -| Active without license | The number of users that have actively used Docker Desktop, are linked to a Docker account with an email address from a domain associated with your organization, and don’t have a license assigned to their account.

Users without a license don’t receive the benefits of your subscription. You can use [domain audit](/security/for-admins/domain-audit/) to identify users without a license. You can also use [Just-in-Time provisioning](/security/for-admins/provisioning/just-in-time/) or [SCIM](/security/for-admins/provisioning/scim/) to help automatically provision users with a license. Note that when SSO is configured and enforced, active without license will be 0. | -| Users opted out of analytics | The number of users that are a member of your organization that have opted out of sending analytics.

When users opt out of sending analytics, you won't see any of their data in Insights. To ensure that the data includes all users, you can use [Settings Management](/desktop/hardened-desktop/settings-management/) to set `analyticsEnabled` for all your users. | -| Active users (graph) | The view over time for total active users. | +| Active user | The number of users that have actively used Docker Desktop and either signed in with a Docker account that has a license in your organization or signed in to a Docker account with an email address from a domain associated with your organization.

Users who don’t sign in to an account associated with your organization are not represented in the data. To ensure users sign in with an account associated with your organization, you can [enforce sign-in](/security/for-admins/enforce-sign-in/). | +| Total organization members | The number of users that have used Docker Desktop, regardless of their Insights activity. | +| Users opted out of analytics | The number of users that are a member of your organization that have opted out of sending analytics.

When users opt out of sending analytics, you won't see any of their data in Insights. To ensure that the data includes all users, you can use [Settings Management](/desktop/hardened-desktop/settings-management/) to set `analyticsEnabled` for all your users. | +| Active users (graph) | The view over time for total active users. | ### Builds diff --git a/content/manuals/admin/organization/manage-a-team.md b/content/manuals/admin/organization/manage-a-team.md index 55fad01c3a61..efc865e0690a 100644 --- a/content/manuals/admin/organization/manage-a-team.md +++ b/content/manuals/admin/organization/manage-a-team.md @@ -10,37 +10,36 @@ aliases: You can create teams for your organization in Docker Hub and the Docker Admin Console. You can [configure repository access for a team](#configure-repository-permissions-for-a-team) in Docker Hub. -A team is a group of Docker users that belong to an organization. An -organization can have multiple teams. An -organization owner can then create new teams and add members to an existing team -using their Docker ID or email address and by selecting a team the user should be part of. Members aren't required to be part of a team to be associated with an organization. +A team is a group of Docker users that belong to an organization. An organization can have multiple teams. An organization owner can then create new teams and add members to an existing team using their Docker ID or email address and by selecting a team the user should be part of. Members aren't required to be part of a team to be associated with an organization. The organization owner can add additional organization owners to help them manage users, teams, and repositories in the organization by assigning them the owner role. ## Organization owner -An organization owner is an administrator who is responsible to manage -repositories and add team members to the organization. They have full access to -private repositories, all teams, billing information, and org settings. An org -owner can also specify [permissions](#permissions-reference) for each team in -the organization. Only an org owner can enable [SSO](../../security/for-admins/single-sign-on/_index.md) -for -the organization. When SSO is enabled for your organization, the org owner can +An organization owner is an administrator who has the following permissions: + +- Manage repositories and add team members to the organization. +- Access private repositories, all teams, billing information, and organization settings. +- Specify [permissions](#permissions-reference) for each team in the organization. +- Enable [SSO](../../security/for-admins/single-sign-on/_index.md) for the organization. + +When SSO is enabled for your organization, the organization owner can also manage users. Docker can auto-provision Docker IDs for new end-users or users who'd like to have a separate Docker ID for company use through SSO enforcement. -The org owner can also add additional org owners to help them manage users, teams, and repositories in the organization. +The organization owner can also add additional organization owners to help them manage users, teams, and repositories in the organization. ## Create a team {{< tabs >}} {{< tab name="Docker Hub" >}} -1. Go to **Organizations** in Docker Hub, and select your organization. -2. Select the **Teams** tab and then select **Create Team**. -3. Fill out your team's information and select **Create**. -4. [Add members to your team](members.md#add-a-member-to-a-team). +1. Sign in to [Docker Hub](https://hub.docker.com). +2. Select **Organizations** and choose your organization. +3. Select the **Teams** tab and then select **Create Team**. +4. Fill out your team's information and select **Create**. +5. [Add members to your team](members.md#add-a-member-to-a-team). {{< /tab >}} {{< tab name="Admin Console" >}} @@ -61,19 +60,18 @@ The org owner can also add additional org owners to help them manage users, team Organization owners can configure repository permissions on a per-team basis. For example, you can specify that all teams within an organization have "Read and Write" access to repositories A and B, whereas only specific teams have "Admin" -access. Note that org owners have full administrative access to all repositories within the organization. +access. Note that organization owners have full administrative access to all repositories within the organization. -To give a team access to a repository +To give a team access to a repository: -1. Navigate to **Organizations** in Docker Hub, and select your organization. -2. Select the **Teams** tab and select the team that you'd like to configure repository access to. -3. Select the **Permissions** tab and select a repository from the +1. Sign in to [Docker Hub](https://hub.docker.com). +2. Select **Organizations** and choose your organization. +3. Select the **Teams** tab and select the team that you'd like to configure repository access to. +4. Select the **Permissions** tab and select a repository from the **Repository** drop-down. -4. Choose a permission from the **Permissions** drop-down list and select +5. Choose a permission from the **Permissions** drop-down list and select **Add**. - ![Team Repo Permissions](../images/team-repo-permission.png) - Organization owners can also assign members the editor role to grant partial administrative access. See [Roles and permissions](../../security/for-admins/roles-and-permissions.md) for more about the editor role. ### Permissions reference @@ -110,8 +108,10 @@ you automatically have "Read-only" permissions: To view a team's permissions across all repositories: -1. Open **Organizations** > **_Your Organization_** > **Teams** > **_Team Name_**. -2. Select the **Permissions** tab, where you can view the repositories this team can access. +1. Sign in to [Docker Hub](https://hub.docker.com). +2. Select **Organizations** and choose your organization. +3. Select **Teams** and choose your team name. +4. Select the **Permissions** tab, where you can view the repositories this team can access. ## Delete a team @@ -120,19 +120,20 @@ Organization owners can delete a team in Docker Hub or Admin Console. When you r {{< tabs >}} {{< tab name="Docker Hub" >}} -1. Go to **Organizations** in Docker Hub, and select your organization. -2. Select the **Teams** tab. -3. Select the name of the team that you want to delete. -4. Select **Settings**. -5. Select **Delete Team**. -6. Review the confirmation message, then select **Delete**. +1. Sign in to [Docker Hub](https://hub.docker.com). +2. Select **Organizations** and choose your organization. +3. Select the **Teams** tab. +4. Select the name of the team that you want to delete. +5. Select **Settings**. +6. Select **Delete Team**. +7. Review the confirmation message, then select **Delete**. {{< /tab >}} {{< tab name="Admin Console" >}} {{< include "admin-early-access.md" >}} -1. In Admin Console, select your organization. +1. In the [Admin Console](https://app.docker.com/admin), select your organization. 2. In the **User management** section, select **Teams**. 3. Select the **Actions** icon next to the name of the team you want to delete. 4. Select **Delete team**. diff --git a/content/manuals/admin/organization/members.md b/content/manuals/admin/organization/members.md index 6042f7d34374..fdb1e19e14cd 100644 --- a/content/manuals/admin/organization/members.md +++ b/content/manuals/admin/organization/members.md @@ -205,7 +205,25 @@ Owners can export a CSV file containing all members. The CSV file for a company - Invited to Organizations: All organizations the user is an invitee of within a company - Account Created: The time and date when the user account was created -To export a CSV file of the members: +{{< tabs >}} +{{< tab name="Docker Hub" >}} + +To export a CSV file of your members: + 1. Sign in to [Docker Hub](https://hub.docker.com). 2. Select **Organizations**, your organization, and then **Members**. -3. Select the **Action** icon and then select **Export users as CSV**. \ No newline at end of file +3. Select the **Action** icon and then select **Export users as CSV**. + +{{< /tab >}} +{{< tab name="Admin Console" >}} + +{{< include "admin-early-access.md" >}} + +To export a CSV file of your members: + +1. In the [Admin Console](https://app.docker.com/admin), select your organization. +2. Select **Members**. +3. Select the **download** icon to export a CSV file of all members. + +{{< /tab >}} +{{< /tabs >}} \ No newline at end of file diff --git a/content/manuals/admin/organization/onboard.md b/content/manuals/admin/organization/onboard.md index 6d39acb96dfa..74a31e69beae 100644 --- a/content/manuals/admin/organization/onboard.md +++ b/content/manuals/admin/organization/onboard.md @@ -15,9 +15,9 @@ aliases: Learn how to onboard your organization using Docker Hub or the Docker Admin Console. -Onboarding your organization lets administrators gain visibility into the activity of your users and enforce security settings. In addition, members of your organization receive increased pull limits and other organization wide benefits. For more details, see [Docker subscriptions and features](../../subscription/details.md). +Onboarding your organization lets administrators gain visibility into user activity and enforce security settings. In addition, members of your organization receive increased pull limits and other organization wide benefits. For more details, see [Docker subscriptions and features](../../subscription/details.md). -In this guide, you'll learn how to get started with the following: +In this guide, you'll learn how to do the following: - Identify your users to help you efficiently allocate your subscription seats - Invite members and owners to your organization @@ -27,7 +27,8 @@ In this guide, you'll learn how to get started with the following: ## Prerequisites Before you start to onboard your organization, ensure that you: -- Have a Docker Team or Business subscription. See [Pricing & Subscriptions](https://www.docker.com/pricing/) for details. + +- Have a Docker Team or Business subscription. See [Docker Pricing](https://www.docker.com/pricing/) for details. > [!NOTE] > @@ -35,24 +36,24 @@ Before you start to onboard your organization, ensure that you: - Familiarize yourself with Docker concepts and terminology in the [glossary](/glossary/) and [FAQs](/faq/admin/general-faqs/). -## Step 1: Identify your Docker users and their Docker accounts +## Step 1: Identify your Docker users Identifying your users will ensure that you allocate your subscription seats efficiently and that all your Docker users receive the benefits of your subscription. 1. Identify the Docker users in your organization. - - If your organization uses device management software, like MDM or JAMF, you may use the device management software to help identify Docker users. See your device management software's documentation for details. You can identify Docker users by checking if Docker Desktop is installed at the following location on each user's machine: + - If your organization uses device management software, like MDM or Jamf, you may use the device management software to help identify Docker users. See your device management software's documentation for details. You can identify Docker users by checking if Docker Desktop is installed at the following location on each user's machine: - Mac: `/Applications/Docker.app` - Windows: `C:\Program Files\Docker\Docker` - Linux: `/opt/docker-desktop` - If your organization doesn't use device management software or your users haven't installed Docker Desktop yet, you may survey your users. -2. Instruct all your Docker users in your organization to update their existing Docker account's email address to an address that's in your organization's domain, or to create a new account using an email address in your organization's domain. +2. Instruct all your organization's Docker users to update their existing Docker account's email address to an address that's in your organization's domain, or to create a new account using an email address in your organization's domain. - To update an account's email address, instruct your users to sign in to [Docker Hub](https://hub.docker.com), and update the email address to their email address in your organization's domain. - To create a new account, instruct your users to go [sign up](https://hub.docker.com/signup) using their email address in your organization's domain. 3. Ask your Docker sales representative or [contact sales](https://www.docker.com/pricing/contact-sales/) to get a list of Docker accounts that use an email address in your organization's domain. ## Step 2: Invite owners -When you create an organization, you are the only owner. You may optionally add additional owners. Owners can help you onboard and manage your organization. +When you create an organization, you are the only owner. It is optional to add additional owners. Owners can help you onboard and manage your organization. To add an owner, invite a user and assign them the owner role. For more details, see [Invite members](/admin/organization/members/). @@ -68,22 +69,22 @@ Configuring SSO and SCIM is optional and only available to Docker Business subsc You can manage your members in your identity provider and automatically provision them to your Docker organization with SSO and SCIM. See the following for more details. - [Configure SSO](/manuals/security/for-admins/single-sign-on/configure.md) to authenticate and add members when they sign in to Docker through your identity provider. - - Optional: [Enforce SSO](/manuals/security/for-admins/single-sign-on/connect.md) to ensure that when users sign in to Docker, they must use SSO. + - Optional. [Enforce SSO](/manuals/security/for-admins/single-sign-on/connect.md) to ensure that when users sign in to Docker, they must use SSO. + > [!NOTE] > > Enforcing single sign-on (SSO) and [Step 5: Enforce sign-in for Docker > Desktop](#step-5-enforce-sign-in-for-docker-desktop) are different > features. For more details, see > [Enforcing sign-in versus enforcing single sign-on (SSO)](/security/for-admins/enforce-sign-in/#enforcing-sign-in-versus-enforcing-single-sign-on-sso). + - [Configure SCIM](/security/for-admins/provisioning/scim/) to automatically provision, add, and de-provision members to Docker through your identity provider. ## Step 5: Enforce sign-in for Docker Desktop By default, members of your organization can use Docker Desktop without signing in. When users don’t sign in as a member of your organization, they don’t -receive the [benefits of your organization’s subscription](../../subscription/details.md) and they can circumvent -[Docker’s security features](/security/for-admins/hardened-desktop/) for your -organization. +receive the [benefits of your organization’s subscription](../../subscription/details.md) and they can circumvent [Docker’s security features](/security/for-admins/hardened-desktop/). There are multiple ways you can enforce sign-in, depending on your company's set up and preferences: diff --git a/content/manuals/admin/organization/orgs.md b/content/manuals/admin/organization/orgs.md index 5cab7b539d36..c95e6db44c2a 100644 --- a/content/manuals/admin/organization/orgs.md +++ b/content/manuals/admin/organization/orgs.md @@ -10,33 +10,57 @@ aliases: This section describes how to create an organization. Before you begin: -- You need a [Docker ID](/accounts/create-account/). -- Review the [Docker subscriptions and features](../../subscription/details.md) to determine what plan to choose for your organization. +- You need a [Docker ID](/accounts/create-account/) +- Review the [Docker subscriptions and features](../../subscription/details.md) to determine what plan to choose for your organization ## Create an organization -There are multiple ways to create an organization. You can create a brand new -organization using the **Create Organization** option in Docker Hub, or you can -convert an existing user account to an organization. The following section -contains instructions on how to create a new organization. For prerequisites and +There are multiple ways to create an organization. You can either: +- Create a new organization using the **Create Organization** option in Docker Hub +- Convert an existing user account to an organization + +The following section contains instructions on how to create a new organization. For prerequisites and detailed instructions on converting an existing user account to an organization, see [Convert an account into an organization](../convert-account.md). -To create an organization: +{{< tabs >}} +{{< tab name="Docker Hub" >}} 1. Sign in to [Docker Hub](https://hub.docker.com/) using your Docker ID, your email address, or your social provider. -2. Select **Organizations** and then **Create Organization** to create a new - organization. -3. Choose a plan for your organization and select **Buy Now**. See -[Docker Pricing](https://www.docker.com/pricing/) -for details on the features offered in the Team and Business plan. +2. Select **Organizations** and then **Create Organization** to create a new organization. +3. Choose a plan for your organization, a billing cycle, and specify how many seats you need. See [Docker Pricing](https://www.docker.com/pricing/) for details on the features offered in the Team and Business plan. +4. Select **Continue to profile**. +5. Enter an **Organization namespace**. This is the official, unique name for +your organization in Docker Hub. It's not possible to change the name of the +organization after you've created it. > [!NOTE] > - > Selecting **Buy Now** isn't an obligation to pay. You can complete - > this step without incurring a payment. + > You can't use the same name for the organization and your Docker ID. If you want to use your Docker ID as the organization name, then you must first [convert your account into an organization](../convert-account.md). + +6. Enter your **Company name**. This is the full name of your company. Docker +displays the company name on your organization page and in the details of any +public images you publish. You can update the company name anytime by navigating +to your organization's **Settings** page. +7. Select **Continue to billing** to continue. +8. Enter your organization's billing information and select **Continue to payment** to continue to the billing portal. +9. Provide your card details and select **Purchase**. -4. Enter a name for your organization. This is the official, unique name for +You've now created an organization. + +{{< /tab >}} +{{< tab name="Admin Console" >}} + +{{< include "admin-early-access.md" >}} + +To create an organization: + +1. Sign in to [Docker Home](https://app.docker.com/). +2. Under Settings and administration, select **Go to Admin Console**. +3. Select the **Organization** drop-down in the left-hand navigation and then **Create Organization**. +4. Choose a plan for your organization, a billing cycle, and specify how many seats you need. See [Docker Pricing](https://www.docker.com/pricing/) for details on the features offered in the Team and Business plan. +5. Select **Continue to profile**. +6. Enter an **Organization namespace**. This is the official, unique name for your organization in Docker Hub. It's not possible to change the name of the organization after you've created it. @@ -44,34 +68,37 @@ organization after you've created it. > > You can't use the same name for the organization and your Docker ID. If you want to use your Docker ID as the organization name, then you must first [convert your account into an organization](../convert-account.md). -5. Enter the name of your company. This is the full name of your company. Docker +7. Enter your **Company name**. This is the full name of your company. Docker displays the company name on your organization page and in the details of any public images you publish. You can update the company name anytime by navigating to your organization's **Settings** page. -6. Select **Purchase** to continue. -7. Enter the billing information for your organization. -8. Select **Submit** to continue to the billing portal. -9. In the billing portal, select **Qty** to update the number of seats you require, then select **Update**. -10. (Optional) Select annual or monthly billing cycle. -11. Follow the on-screen instructions to pay for your subscription. +8. Select **Continue to billing** to continue. +9. Enter your organization's billing information and select **Continue to payment** to continue to the billing portal. +10. Provide your card details and select **Purchase**. You've now created an organization. +{{< /tab >}} +{{< /tabs >}} + ## View an organization +{{< tabs >}} +{{< tab name="Docker Hub" >}} + To view an organization: -1. Sign in to Docker Hub with a user account that is a member of any team in the - organization. +1. Sign in to [Docker Hub](https://hub.docker.com) with a user account that is a member of any team in the + organization. > [!NOTE] > - > You can't _directly_ log in to an organization. This is especially + > You can't *directly* sign in to an organization. This is especially > important to note if you create an organization by [converting a user account](../convert-account.md), as conversion means you lose the ability to log into that - > "account", since it no longer exists. To view the organization you - > need to log in with the new owner account assigned during the - > conversion or another account that was added as a member. If you + > "account", since it no longer exists. To view the organization you + > need to sign in with the new owner account assigned during the + > conversion or another account that was added as a member. If you > don't see the organization after logging in, > then you are neither a member or an owner of it. An organization > administrator needs to add you as a member of the organization. @@ -79,7 +106,7 @@ To view an organization: 2. Select **Organizations** in the top navigation bar, then choose your organization from the list. -The organization landing page displays various options that allow you to +The organization landing page displays various options that let you to configure your organization. - **Members**: Displays a list of team members. You @@ -98,7 +125,7 @@ configure your organization. details. - **Settings**: Displays information about your - organization, and allows you to view and change your repository privacy + organization, and you to view and change your repository privacy settings, configure org permissions such as [Image Access Management](/manuals/security/for-admins/hardened-desktop/image-access-management.md), configure notification settings, and [deactivate](../deactivate-account.md#deactivate-an-organization) You can also update your organization name and company name that appear on your organization landing page. You must be an owner to access the organization's **Settings** page. @@ -106,6 +133,38 @@ configure your organization. - **Billing**: Displays information about your existing [Docker subscription (plan)](../../subscription/_index.md), including the number of seats and next payment due date. For how to access the billing history and payment methods for your organization, see [View billing history](../../billing/history.md). +{{< /tab >}} +{{< tab name="Admin Console" >}} + +{{< include "admin-early-access.md" >}} + +To view an organization in the Admin Console: + +1. Sign in to [Docker Home](https://app.docker.com). +2. Under Settings and administration, select **Go to Admin Console**. +3. Select your organization from the **Organization** drop-down in the left-hand navigation. + +The Admin Console displays various options that let you to +configure your organization. + +- **Members**: Displays a list of team members. You + can invite new members using the **Invite members** button. See [Manage members](./members.md) for details. + +- **Teams**: Displays a list of existing teams and the number of + members in each team. See [Create a team](./manage-a-team.md) for details. + +- **Activity** Displays the audit logs, a chronological list of activities that + occur at organization and repository levels. It provides the org owners a + report of all their team member activities. See [Audit logs](./activity-logs.md) for + details. + +- **Security and access**: Manage security settings. For more information, see [Security](/manuals/security/_index.md). + +- **Organization settings**: Update general settings, manage your company settings, or [deactivate your organization](/manuals/admin/deactivate-account.md). + +{{< /tab >}} +{{< /tabs >}} + ## Merge organizations > [!WARNING] diff --git a/content/manuals/build-cloud/ci.md b/content/manuals/build-cloud/ci.md index 03b2064cc854..bd66ec53f422 100644 --- a/content/manuals/build-cloud/ci.md +++ b/content/manuals/build-cloud/ci.md @@ -74,7 +74,6 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 with: - version: "lab:latest" driver: cloud endpoint: "/default" install: true diff --git a/content/manuals/build/builders/_index.md b/content/manuals/build/builders/_index.md index e1a9334eabe9..c926822df0e2 100644 --- a/content/manuals/build/builders/_index.md +++ b/content/manuals/build/builders/_index.md @@ -65,6 +65,48 @@ To switch between builders, use the `docker buildx use ` command. After running this command, the builder you specify is automatically selected when you invoke builds. +### Difference between `docker build` and `docker buildx build` + +Even though `docker build` is an alias for `docker buildx build`, there are +subtle differences between the two commands. With Buildx, the build client and +the and daemon (BuildKit) are decoupled. This means you can use multiple +builders from a single client, even remote ones. + +The `docker build` command always defaults to using the default builder that +comes bundled with the Docker Engine, for ensuring backwards compatibility with +older versions of the Docker CLI. The `docker buildx build` command, on the +other hand, checks whether you've set a different builder as the default +builder before it sends your build to BuildKit. + +To use the `docker build` command with a non-default builder, you must either: + +- Specify the builder explicitly, using the `--builder` flag or the `BUILDX_BUILDER` environment variable: + + ```console + $ BUILDX_BUILDER=my_builder docker build . + $ docker build --builder my_builder . + ``` + +- Configure Buildx as the default client by running the following command: + + ```console + $ docker buildx install + ``` + + This updates your [Docker CLI configuration file](/reference/cli/docker/_index.md#configuration-files) + to ensure all of your build-related commands are routed via Buildx. + + > [!TIP] + > To undo this change, run `docker buildx uninstall`. + + + +In general, we recommend that you use the `docker buildx build` command when +you want to use custom builders. This ensures that your [selected +builder](#selected-builder) configuration is interpreted correctly. + + + ## Additional information - For information about how to interact with and manage builders, diff --git a/content/manuals/build/building/base-images.md b/content/manuals/build/building/base-images.md index 96174bd03d1f..32ae78d8c469 100644 --- a/content/manuals/build/building/base-images.md +++ b/content/manuals/build/building/base-images.md @@ -20,10 +20,12 @@ FROM debian For most cases, you don't need to create your own base image. Docker Hub contains a vast library of Docker images that are suitable for use as a base -image in your build. [Docker Official Images](../../trusted-content/official-images/_index.md) +image in your build. [Docker Official +Images](../../docker-hub/image-library/trusted-content.md#docker-official-images) are specifically designed as a set of hardened, battle-tested images that support a wide variety of platforms, languages, and frameworks. There are also -[Docker Verified Publisher](https://hub.docker.com/search?q=&image_filter=store) +[Docker Verified +Publisher](../../docker-hub/image-library/trusted-content.md#verified-publisher-images) images, created by trusted publishing partners, verified by Docker. ## Create a base image @@ -123,4 +125,4 @@ For more information about building images and writing Dockerfiles, see: * [Dockerfile reference](/reference/dockerfile.md) * [Dockerfile best practices](/manuals/build/building/best-practices.md) -* [Docker Official Images](../../trusted-content/official-images/_index.md) +* [Docker Official Images](../../docker-hub/image-library/trusted-content.md#docker-official-images) diff --git a/content/manuals/build/building/best-practices.md b/content/manuals/build/building/best-practices.md index 7661677ebb41..343c42b62c54 100644 --- a/content/manuals/build/building/best-practices.md +++ b/content/manuals/build/building/best-practices.md @@ -57,7 +57,7 @@ it small. - [Docker-Sponsored Open Source](https://hub.docker.com/search?image_filter=open_source) are published and maintained by open source projects sponsored by Docker - through an [open source program](../../trusted-content/dsos-program). + through an [open source program](../../docker-hub/image-library/trusted-content.md#docker-sponsored-open-source-software-images). When you pick your base image, look out for the badges indicating that the image is part of these programs. diff --git a/content/manuals/build/concepts/overview.md b/content/manuals/build/concepts/overview.md index 8b30d3854058..e8a101e649f2 100644 --- a/content/manuals/build/concepts/overview.md +++ b/content/manuals/build/concepts/overview.md @@ -38,6 +38,11 @@ the CLI plugin from source, or grab a binary from the GitHub repository and install it manually. See [Buildx README](https://github.com/docker/buildx#manual-download) on GitHub for more information. +> [!NOTE] +> While `docker build` invokes Buildx under the hood, there are subtle +> differences between this command and the canonical `docker buildx build`. +> For details, see [Difference between `docker build` and `docker buildx build`](../builders/_index.md#difference-between-docker-build-and-docker-buildx-build). + ## BuildKit BuildKit is the daemon process that executes the build workloads. diff --git a/content/manuals/compose/how-tos/environment-variables/envvars.md b/content/manuals/compose/how-tos/environment-variables/envvars.md index a0fa287780ea..54a2a5e446a0 100644 --- a/content/manuals/compose/how-tos/environment-variables/envvars.md +++ b/content/manuals/compose/how-tos/environment-variables/envvars.md @@ -30,7 +30,7 @@ This page contains information on how you can set or change the following pre-de ## Methods to override You can set or change the pre-defined environment variables: -- With an [`.env` file located in your working director](/manuals/compose/how-tos/environment-variables/variable-interpolation.md) +- With an [`.env` file located in your working directory](/manuals/compose/how-tos/environment-variables/variable-interpolation.md) - From the command line - From your [shell](variable-interpolation.md#substitute-from-the-shell) diff --git a/content/manuals/compose/releases/release-notes.md b/content/manuals/compose/releases/release-notes.md index ff14e92aca6d..2b4729c9fcd2 100644 --- a/content/manuals/compose/releases/release-notes.md +++ b/content/manuals/compose/releases/release-notes.md @@ -13,6 +13,31 @@ aliases: For more detailed information, see the [release notes in the Compose repo](https://github.com/docker/compose/releases/). +## 2.32.0 + +{{< release-date date="2024-12-13" >}} + +### Update + +- Dependencies upgrade: bump docker + buildx to latest release +- Dependencies upgrade: bump otel dependencies to v1.28.0 and v0.53.0 +- Dependencies upgrade: bump golang.org/x/sys 0.28.0 +- Dependencies upgrade: bump golang.org/x/crypto to 0.31.0 +- Dependencies upgrade: bump google.golang.org/grpc to 1.68.1 +- Dependencies upgrade: bump golang.org/x/sync 0.10.0 +- Dependencies upgrade: bump xx to v1.6.1 + +### Bug fixes and enhancements + +- Improved support when building with [Bake](/manuals/build/bake.md) +- Added `restart` and `sync+exec` watch actions +- Compose now recreates containers when the volume or network configuration changes +- Fixed support for `mac_address` +- Fixed `pull --quiet` to only hide progress, not global status +- Fixed an issue where only the `rebuild` watch action now requires a build declaration +- Compose now logs `watch` configuration error when enabled through the Compose menu + + ## 2.31.0 {{< release-date date="2024-11-28" >}} diff --git a/content/manuals/docker-hub/_index.md b/content/manuals/docker-hub/_index.md index c6ab1a08381d..c47f97f76dcf 100644 --- a/content/manuals/docker-hub/_index.md +++ b/content/manuals/docker-hub/_index.md @@ -11,6 +11,10 @@ grid: description: Step-by-step instructions on getting started on Docker Hub. icon: explore link: /docker-hub/quickstart +- title: Library + description: Explore the content library, featuring millions of images for operating systems, frameworks, databases, and more. + icon: book + link: /docker-hub/image-library/ - title: Repositories description: Create a repository to share your images with your team, customers, or the Docker community. diff --git a/content/manuals/docker-hub/image-library/_index.md b/content/manuals/docker-hub/image-library/_index.md new file mode 100644 index 000000000000..3d41410ff1f3 --- /dev/null +++ b/content/manuals/docker-hub/image-library/_index.md @@ -0,0 +1,22 @@ +--- +description: Learn about Docker Hub's library of images, extensions, and plugins. +keywords: Docker Hub, Hub, content library +title: Content library +linkTitle: Library +weight: 20 +--- + +Docker Hub's content library is the world's largest collection of +container images, extensions, and plugins. It provides a central location to +discover pre-built images and tools designed to streamline your container +workflows, making it easier to share and collaborate. + +In this section, learn about: + +- [Search](./search.md): Discover how to browse and search Docker Hub's extensive resources. +- [Trusted content](./trusted-content.md): Dive into Docker Official Images, + Verified Publisher content, and Sponsored Open Source images, all vetted for + security and reliability to streamline your workflows. +- [Catalogs](./catalogs.md): Explore specialized collections like the generative AI catalog. +- [Mirroring](./mirror.md): Learn how to create a mirror of Docker Hub's + container image library as a pull-through cache. \ No newline at end of file diff --git a/content/manuals/docker-hub/image-library/catalogs.md b/content/manuals/docker-hub/image-library/catalogs.md new file mode 100644 index 000000000000..066ce8c56476 --- /dev/null +++ b/content/manuals/docker-hub/image-library/catalogs.md @@ -0,0 +1,59 @@ +--- +description: Explore specialized Docker Hub collections like the Generative AI catalog. +keywords: Docker Hub, Hub, catalog +title: Docker Hub catalogs +linkTitle: Catalogs +weight: 60 +--- + +Docker Hub catalogs are your go-to collections of trusted, ready-to-use +container images and resources, tailored to meet specific development needs. +They make it easier to find high-quality, pre-verified content so you can +quickly build, deploy, and manage your applications with confidence. Catalogs in +Docker Hub: + +- Simplify content discovery: Organized and curated content makes it easy to + discover tools and resources tailored to your specific domain or technology. +- Reduce complexity: Trusted resources, vetted by Docker and its partners, + ensure security, reliability, and adherence to best practices. +- Accelerate development: Quickly integrate advanced capabilities into your + applications without the hassle of extensive research or setup. + +The generative AI catalog is the first catalog in Docker Hub, offering +specialized content for AI development. + +## Generative AI catalog + +The [generative AI catalog](https://hub.docker.com/catalogs/gen-ai) makes it +easy to explore and add AI capabilities to your applications. With trusted, +ready-to-use content and comprehensive documentation, you can skip the hassle of +sorting through countless tools and configurations. Instead, focus your time and +energy on creating innovative AI-powered applications. + +The generative AI catalog provides a wide range of trusted content, organized +into key areas to support diverse AI development needs: + +- Demos: Ready-to-deploy examples showcasing generative AI capabilities. These + demos provide a hands-on way to explore AI tools and frameworks, making it + easier to understand how they can be integrated into real-world applications. +- Models: Pre-trained AI models for tasks like text generation, + Natural Language Processing (NLP), and conversational AI. These models + provide a foundation for + AI applications without requiring developers to train models from scratch. +- Applications and end-to-end platforms: Comprehensive platforms and tools that + simplify AI application development, including low-code solutions and + frameworks for building multi-agent and Retrieval-Augmented Generation (RAG) + applications. +- Model deployment and serving: Tools and frameworks that enable developers to + efficiently deploy and serve AI models in production environments. These + resources include pre-configured stacks for GPUs and other specialized + hardware, ensuring performance at scale. +- Orchestration: Solutions for managing complex AI workflows, such as workflow + engines, Large Language Model (LLM) application frameworks, and lifecycle management + tools, to help streamline development and operations. +- Machine learning frameworks: Popular frameworks like TensorFlow and PyTorch + that provide the building blocks for creating, training, and fine-tuning + machine learning models. +- Databases: Databases optimized for AI workloads, including vector databases + for similarity search, time-series databases for analytics, and NoSQL + solutions for handling unstructured data. \ No newline at end of file diff --git a/content/manuals/docker-hub/mirror.md b/content/manuals/docker-hub/image-library/mirror.md similarity index 97% rename from content/manuals/docker-hub/mirror.md rename to content/manuals/docker-hub/image-library/mirror.md index 71cd160db956..7b993055cc9a 100644 --- a/content/manuals/docker-hub/mirror.md +++ b/content/manuals/docker-hub/image-library/mirror.md @@ -2,12 +2,13 @@ description: Setting-up a local mirror for Docker Hub images keywords: registry, on-prem, images, tags, repository, distribution, mirror, Hub, recipe, advanced -title: Registry as a pull through cache -linkTitle: Mirroring +title: Mirror the Docker Hub library +linkTitle: Mirror weight: 80 aliases: - /engine/admin/registry_mirror/ - /registry/recipes/mirror/ +- /docker-hub/mirror/ --- ## Use-case @@ -37,7 +38,7 @@ Hub can be mirrored. > [!NOTE] > -> Mirrors of Docker Hub are still subject to Docker's [fair use policy](./download-rate-limit.md#fair-use). +> Mirrors of Docker Hub are still subject to Docker's [fair use policy](/manuals/docker-hub/download-rate-limit.md#fair-use). ### Solution diff --git a/content/manuals/docker-hub/image-library/search.md b/content/manuals/docker-hub/image-library/search.md new file mode 100644 index 000000000000..fff381ae49da --- /dev/null +++ b/content/manuals/docker-hub/image-library/search.md @@ -0,0 +1,167 @@ +--- +description: Discover how to browse and search Docker Hub's extensive resources. +keywords: Docker Hub, Hub, explore, search, image library +title: Docker Hub search +linkTitle: Search +weight: 10 +--- + +The [Docker Hub search interface](https://hub.docker.com/search) lets you +explore millions of resources. To help you find exactly what you need, it offers +a variety of filters that let you narrow your results or discover different +types of content. + +## Filters + +The search functionality includes filters to narrow down +results based on your requirements, such as products, categories, and trusted +content. This ensures that you can quickly find and access the resources best +suited to your project. + +### Products + +Docker Hub's content library features three products, each designed to meet +specific needs of developers and organizations. These products include images, +plugins, and extensions. + +#### Images + +Docker Hub hosts millions of container images, making it the go-to repository +for containerized applications and solutions. These images include: + +- Operating system images: Foundational images for Linux distributions like + Ubuntu, Debian, and Alpine, or Windows Server images. +- Database and storage images: Pre-configured databases such as MySQL, + PostgreSQL, and MongoDB to simplify application development. +- Languages and frameworks-based images: Popular images for Java, Python, + Node.js, Ruby, .NET, and more, offering pre-built environments for faster + development. + +Images in Docker Hub simplify the development process by providing pre-built, +reusable building blocks, reducing the need to start from scratch. Whether +you're a beginner building your first container or an enterprise managing +complex architectures, Docker Hub images provide a reliable foundation. + +#### Plugins + +Plugins in Docker Hub let you extend and customize Docker Engine to suit +specialized requirements. Plugins integrate directly with the Docker Engine and +provide capabilities such as: + +- Network plugins: Enhance networking functionality, enabling integration with + complex network infrastructures. +- Volume plugins: Provide advanced storage options, supporting persistent and + distributed storage across various backends. +- Authorization plugins: Offer fine-grained access control to secure Docker + environments. + +By leveraging Docker plugins, teams can tailor Docker Engine to meet their +specific operational needs, ensuring compatibility with existing infrastructures +and workflows. + +To learn more about plugins, see [Docker Engine managed plugin +system](/manuals/engine/extend/_index.md). + +#### Extensions + +Docker Hub offers extensions for Docker Desktop, which enhance its core +functionality. These extensions are purpose-built to streamline the software +development lifecycle. Extensions provide tools for: + +- System optimization and monitoring: Manage resources and optimize Docker + Desktop’s performance. +- Container management: Simplify container deployment and monitoring. +- Database management: Facilitate efficient database operations within + containers. +- Kubernetes and cloud integration: Bridge local environments with cloud-native + and Kubernetes workflows. +- Visualization tools: Gain insights into container resource usage through + graphical representations. + +Extensions help developers and teams create a more efficient and unified +workflow by reducing context switching and bringing essential tools into Docker +Desktop's interface. + +To learn more about extensions, see [Docker +Extensions](/manuals/extensions/_index.md). + +### Trusted content + +Docker Hub's trusted content provides a curated selection of high-quality, +secure images designed to give developers confidence in the reliability and +security of the resources they use. These images are stable, regularly updated, +and adhere to industry best practices, making them a strong foundation for +building and deploying applications. Docker Hub's trusted content includes, +Docker Official Images, Verified Publisher images, and Docker-Sponsored Open +Source Software images. + +For more details, see [Trusted content](./trusted-content.md). + +### Categories + +Docker Hub makes it easy to find and explore container images with categories. +Categories group images based on their primary use case, helping you quickly +locate the tools and resources you need to build, deploy, and run your +applications. + +{{< include "hub-categories.md" >}} + +### Operating systems + +The **Operating systems** filter lets you narrow your search to container +images compatible with specific host operating systems. This filter ensures that +the images you use align with your target environment, whether you're developing +for Linux-based systems, Windows, or both. + +- **Linux**: Access a wide range of images tailored for Linux environments. + These images provide foundational environments for building and running + Linux-based applications in containers. +- **Windows**: Explore Windows container images. + +> [!NOTE] +> +> The **Operating systems** filter is only available for images. If you select +> the **Extensions** or **Plugins** filter, then the **Operating systems** +> filter isn't available. + +### Architectures + +The **Architectures** filter lets you find images built to support specific CPU +architectures. This ensures compatibility with your hardware environment, from +development machines to production servers. + +- **ARM**: Select images compatible with ARM processors, commonly used in IoT + devices and embedded systems. +- **ARM 64**: Locate 64-bit ARM-compatible images for modern ARM processors, + such as those in AWS Graviton or Apple Silicon. +- **IBM POWER**: Find images optimized for IBM Power Systems, offering + performance and reliability for enterprise workloads. +- **PowerPC 64 LE**: Access images designed for the little-endian PowerPC 64-bit + architecture. +- **IBM Z**: Discover images tailored for IBM Z mainframes, ensuring + compatibility with enterprise-grade hardware. +- **x86**: Choose images compatible with 32-bit x86 architectures, suitable for + older systems or lightweight environments. +- **x86-64**: Filter images for modern 64-bit x86 systems, widely used in + desktops, servers, and cloud infrastructures. + +> [!NOTE] +> +> The **Architectures** filter is only available for images. If you select the +> **Extensions** or **Plugins** filter, then the **Architectures** filter isn't +> available. + +### Reviewed by Docker + +The **Reviewed by Docker** filter provides an extra layer of assurance when +selecting extensions. This filter helps you identify whether a Docker Desktop +extension has been reviewed by Docker for quality and reliability. + +- **Reviewed**: Extensions that have undergone Docker's review process, ensuring + they meet high standards. +- **Not Reviewed**: Extensions that have not been reviewed by Docker. + +> [!NOTE] +> +> The **Reviewed by Docker** filter is only available for extensions. To make +> the filter available, you must select only the **Extensions** filter in **Products**. \ No newline at end of file diff --git a/content/manuals/trusted-content/official-images/using.md b/content/manuals/docker-hub/image-library/trusted-content.md similarity index 53% rename from content/manuals/trusted-content/official-images/using.md rename to content/manuals/docker-hub/image-library/trusted-content.md index 21d0a2689ba4..518ccfce6dbb 100644 --- a/content/manuals/trusted-content/official-images/using.md +++ b/content/manuals/docker-hub/image-library/trusted-content.md @@ -1,18 +1,62 @@ --- -title: Using Docker Official Images -description: | - Learn about building applications with Docker Official images - and how to interpret the tag names they use. -keywords: docker official images, doi, tags, slim, feedback, troubleshooting -weight: 10 +description: Learn about Docker Hub's trusted content. +keywords: Docker Hub, Hub, trusted content +title: Trusted content +weight: 15 +aliases: +- /trusted-content/official-images/using/ +- /trusted-content/official-images/ --- -Docker recommends you use the Docker Official Images in your projects. -These images have clear documentation, promote best practices, and are regularly updated. -Docker Official Images support most common use cases, making them perfect for new Docker users. -Advanced users can benefit from more specialized image variants as well as review Docker Official Images as part of your `Dockerfile` learning process. +Docker Hub's trusted content provides a curated selection of high-quality, +secure images designed to give developers confidence in the reliability and +security of the resources they use. These images are stable, regularly updated, +and adhere to industry best practices, making them a strong foundation for +building and deploying applications. Docker Hub's trusted content includes, +Docker Official Images, Verified Publisher images, and Docker-Sponsored Open +Source Software images. -## Tags +## Docker Official Images + +The Docker Official Images are a curated set of Docker repositories hosted on +Docker Hub. + +Docker recommends you use the Docker Official Images in your projects. These +images have clear documentation, promote best practices, and are regularly +updated. Docker Official Images support most common use cases, making them +perfect for new Docker users. Advanced users can benefit from more specialized +image variants as well as review Docker Official Images as part of your +`Dockerfile` learning process. + +> [!NOTE] +> +> Use of Docker Official Images is subject to [Docker's Terms of Service](https://www.docker.com/legal/docker-terms-service/). + +These images provide essential base repositories that serve as the starting +point for the majority of users. + +These include operating systems such as +[Ubuntu](https://hub.docker.com/_/ubuntu/) and +[Alpine](https://hub.docker.com/_/alpine/), programming language runtimes such as +[Python](https://hub.docker.com/_/python) and +[Node](https://hub.docker.com/_/node), and other essential tools such as +[memcached](https://hub.docker.com/_/memcached) and +[MySQL](https://hub.docker.com/_/mysql). + +The images are some of the [most secure images](https://www.docker.com/blog/enhancing-security-and-transparency-with-docker-official-images/) +on Docker Hub. This is particularly important as Docker Official Images are +some of the most popular on Docker Hub. Typically, Docker Official images have +few or no packages containing CVEs. + +The images exemplify [Dockerfile best practices](/manuals/build/building/best-practices.md) +and provide clear documentation to serve as a reference for other Dockerfile authors. + +Images that are part of this program have a special badge on Docker Hub making +it easier for you to identify projects that are part of Docker Official Images. + +![Docker official image badge](../images/official-image-badge-iso.png) + +### Supported tags and respective Dockerfile links The repository description for each Docker Official Image contains a **Supported tags and respective Dockerfile links** section that lists all the @@ -34,7 +78,7 @@ use or are unfamiliar with the underlying software, you should probably start wi the `latest` image. As your understanding of the software and image variants advances, you may find other image variants better suit your needs. -## Slim images +### Slim images A number of language stacks such as [Node.js](https://hub.docker.com/_/node/), @@ -62,7 +106,7 @@ COPY --from=build /app /app CMD ["node", "app.js"] ``` -## Alpine images +### Alpine images Many Docker Official Images repositories also offer `alpine` variants. These images are built on top of the [Alpine Linux](https://www.alpinelinux.org/) @@ -90,7 +134,7 @@ to make your program compatible with Alpine Linux and musl: Refer to the `alpine` image [description](https://hub.docker.com/_/alpine) on Docker Hub for examples on how to install packages if you are unfamiliar. -## Codenames +### Codenames Tags with words that look like Toy Story characters (for example, `bookworm`, `bullseye`, and `trixie`) or adjectives (such as `focal`, `jammy`, and @@ -103,11 +147,37 @@ Linux distribution indicators are helpful because many Docker Official Images provide variants built upon multiple underlying distribution versions (for example, `postgres:bookworm` and `postgres:bullseye`). -## Other tags +### Other tags Docker Official Images tags may contain other hints to the purpose of their image variant in addition to those described here. Often these tag variants are explained in the Docker Official Images repository -documentation. Reading through the “How to use this image” and -“Image Variants” sections will help you to understand how to use these +documentation. Reading through the "How to use this image" and +"Image Variants" sections will help you to understand how to use these variants. + +## Verified Publisher images + +The Docker Verified Publisher program provides high-quality images from +commercial publishers verified by Docker. + +These images help development teams build secure software supply chains, +minimizing exposure to malicious content early in the process to save time and +money later. + +Images that are part of this program have a special badge on Docker Hub making +it easier for users to identify projects that Docker has verified as +high-quality commercial publishers. + +![Docker-Sponsored Open Source badge](../images/verified-publisher-badge-iso.png) + +## Docker-Sponsored Open Source Software images + +The Docker-Sponsored Open Source Software (OSS) program provides images that are +published and maintained by open-source projects sponsored by Docker. + +Images that are part of this program have a special badge on Docker Hub making +it easier for users to identify projects that Docker has verified as trusted, +secure, and active open-source projects. + +![Docker-Sponsored Open Source badge](../images/sponsored-badge-iso.png) \ No newline at end of file diff --git a/content/manuals/trusted-content/images/chart-share-icon.png b/content/manuals/docker-hub/images/chart-share-icon.png similarity index 100% rename from content/manuals/trusted-content/images/chart-share-icon.png rename to content/manuals/docker-hub/images/chart-share-icon.png diff --git a/content/manuals/trusted-content/images/chart.png b/content/manuals/docker-hub/images/chart.png similarity index 100% rename from content/manuals/trusted-content/images/chart.png rename to content/manuals/docker-hub/images/chart.png diff --git a/content/manuals/trusted-content/images/clear_logo_sm.png b/content/manuals/docker-hub/images/clear_logo_sm.png similarity index 100% rename from content/manuals/trusted-content/images/clear_logo_sm.png rename to content/manuals/docker-hub/images/clear_logo_sm.png diff --git a/content/manuals/trusted-content/images/default_logo_sm.png b/content/manuals/docker-hub/images/default_logo_sm.png similarity index 100% rename from content/manuals/trusted-content/images/default_logo_sm.png rename to content/manuals/docker-hub/images/default_logo_sm.png diff --git a/content/manuals/trusted-content/images/download-analytics-data.png b/content/manuals/docker-hub/images/download-analytics-data.png similarity index 100% rename from content/manuals/trusted-content/images/download-analytics-data.png rename to content/manuals/docker-hub/images/download-analytics-data.png diff --git a/content/manuals/trusted-content/images/official-image-badge-iso.png b/content/manuals/docker-hub/images/official-image-badge-iso.png similarity index 100% rename from content/manuals/trusted-content/images/official-image-badge-iso.png rename to content/manuals/docker-hub/images/official-image-badge-iso.png diff --git a/content/manuals/trusted-content/images/organization-tabs.png b/content/manuals/docker-hub/images/organization-tabs.png similarity index 100% rename from content/manuals/trusted-content/images/organization-tabs.png rename to content/manuals/docker-hub/images/organization-tabs.png diff --git a/content/manuals/trusted-content/images/sponsored-badge-iso.png b/content/manuals/docker-hub/images/sponsored-badge-iso.png similarity index 100% rename from content/manuals/trusted-content/images/sponsored-badge-iso.png rename to content/manuals/docker-hub/images/sponsored-badge-iso.png diff --git a/content/manuals/trusted-content/images/sponsored-badge.png b/content/manuals/docker-hub/images/sponsored-badge.png similarity index 100% rename from content/manuals/trusted-content/images/sponsored-badge.png rename to content/manuals/docker-hub/images/sponsored-badge.png diff --git a/content/manuals/trusted-content/images/supported_tags.webp b/content/manuals/docker-hub/images/supported_tags.webp similarity index 100% rename from content/manuals/trusted-content/images/supported_tags.webp rename to content/manuals/docker-hub/images/supported_tags.webp diff --git a/content/manuals/trusted-content/images/upload_logo_sm.png b/content/manuals/docker-hub/images/upload_logo_sm.png similarity index 100% rename from content/manuals/trusted-content/images/upload_logo_sm.png rename to content/manuals/docker-hub/images/upload_logo_sm.png diff --git a/content/manuals/trusted-content/images/verified-publisher-badge-iso.png b/content/manuals/docker-hub/images/verified-publisher-badge-iso.png similarity index 100% rename from content/manuals/trusted-content/images/verified-publisher-badge-iso.png rename to content/manuals/docker-hub/images/verified-publisher-badge-iso.png diff --git a/content/manuals/trusted-content/images/verified-publisher-badge.png b/content/manuals/docker-hub/images/verified-publisher-badge.png similarity index 100% rename from content/manuals/trusted-content/images/verified-publisher-badge.png rename to content/manuals/docker-hub/images/verified-publisher-badge.png diff --git a/content/manuals/docker-hub/repos/_index.md b/content/manuals/docker-hub/repos/_index.md index 5ead03bebe34..7554387ac2f5 100644 --- a/content/manuals/docker-hub/repos/_index.md +++ b/content/manuals/docker-hub/repos/_index.md @@ -47,6 +47,11 @@ In this section, learn how to: Bitbucket for automated builds. Every code change triggers an image rebuild, supporting continuous integration and delivery. + - [Trusted content](./manage/trusted-content/_index.md): Contribute to Docker + Official Images or manage repositories in the Verified Publisher and + Sponsored Open Source programs, including tasks like setting logos, + accessing analytics, and enabling vulnerability scanning. + - [Archive](./archive.md) an outdated or unsupported repository. - [Delete](./delete.md) a repository. - [Manage personal settings](./settings.md): For your account, you can set personal diff --git a/content/manuals/docker-hub/repos/manage/information.md b/content/manuals/docker-hub/repos/manage/information.md index 0edff44ca97d..06f494da5a41 100644 --- a/content/manuals/docker-hub/repos/manage/information.md +++ b/content/manuals/docker-hub/repos/manage/information.md @@ -113,40 +113,8 @@ explore content for the problem domain that they're interested in. ### Available categories The Docker Hub content team maintains a curated list of categories. -The available categories are: - -- **API Management**: Tools for creating, publishing, analyzing, and securing - APIs. -- **Content Management System:** Software applications to create and manage - digital content through templates, procedures, and standard formats. -- **Data Science:** Tools and software to support analyzing data and generating - actionable insights. -- **Databases & Storage:** Systems for storing, retrieving, and managing data. -- **Languages & Frameworks:** Programming language runtimes and frameworks. -- **Integrations & Delivery:** Tools for Continuous Integration (CI) and - Continuous Delivery (CD). -- **Internet of Things:** Tools supporting Internet of Things (IoT) - applications. -- **Machine Learning & AI:** Tools and frameworks optimized for artificial - intelligence and machine learning projects, such as pre-installed libraries - and frameworks for data analysis, model training, and deployment. -- **Message Queues:** Message queuing systems optimized for reliable, scalable, - and efficient message handling. -- **Monitoring & Observability:** Tools to track software and system performance - through metrics, logs, and traces, as well as observability to explore the - system’s state and diagnose issues. -- **Networking:** Repositories that support data exchange and connecting - computers and other devices to share resources. -- **Operating Systems:** Software that manages all other programs on a computer - and serves as an intermediary between users and the computer hardware, while - overseeing applications and system resources. -- **Security:** Tools to protect a computer system or network from theft, - unauthorized access, or damage to their hardware, software, or electronic - data, as well as from service disruption. -- **Web Servers:** Software to serve web pages, HTML files, and other assets to - users or other systems. -- **Web Analytics:** Tools to collect, measure, analyze, and report on web data - and website visitor engagement. + +{{< include "hub-categories.md" >}} ### Auto-generated categories diff --git a/content/manuals/docker-hub/repos/manage/trusted-content/_index.md b/content/manuals/docker-hub/repos/manage/trusted-content/_index.md new file mode 100644 index 000000000000..3b29c8873da4 --- /dev/null +++ b/content/manuals/docker-hub/repos/manage/trusted-content/_index.md @@ -0,0 +1,30 @@ +--- +description: Learn how to manage and contribute to trusted content. +keywords: Docker Hub, Hub, trusted content +title: Trusted content +weight: 100 +--- + +Docker's trusted content programs ensure that container images meet the highest +standards for security, quality, and reliability. These programs provide +opportunities for publishers and contributors to share their images with +millions of developers worldwide while gaining valuable insights into their +content's usage. By participating, you can enhance your content's visibility, +build credibility, and access tools to optimize its impact within the container +ecosystem. + +In this section, learn about: + +- [Docker Official Images](./official-images.md): Learn how to contribute, + propose, and maintain Docker Official Images to serve as reliable foundations + for containerized applications. +- [Docker-Sponsored Open Source (DSOS) Program](dsos-program.md): Discover how + open source projects can gain perks like verified badges, insights, and access + to Docker Scout, enhancing visibility and trust on Docker Hub. +- [Docker Verified Publisher (DVP) Program](./dvp-program.md): Explore how to + join the DVP program to showcase trusted, high-quality images with a verified + badge, gain priority in search results, access insights, and enhance security + through vulnerability analysis. +- [Insights and analytics](./insights-analytics.md): Access detailed metrics on + image and extension usage, including pull counts, geolocation, and client + data, to understand user behavior and optimize your content. \ No newline at end of file diff --git a/content/manuals/trusted-content/dsos-program.md b/content/manuals/docker-hub/repos/manage/trusted-content/dsos-program.md similarity index 87% rename from content/manuals/trusted-content/dsos-program.md rename to content/manuals/docker-hub/repos/manage/trusted-content/dsos-program.md index 8b686508a410..ee404d7db33c 100644 --- a/content/manuals/trusted-content/dsos-program.md +++ b/content/manuals/docker-hub/repos/manage/trusted-content/dsos-program.md @@ -4,15 +4,14 @@ title: Docker-Sponsored Open Source Program keywords: docker hub, hub, insights, analytics, open source, Docker sponsored, program aliases: - /docker-hub/dsos-program/ + - /trusted-content/dsos-program/ --- -[Docker Sponsored Open Source images](https://hub.docker.com/search?q=&image_filter=open_source) are published and maintained by open-source projects sponsored by Docker through the program. +[Docker-Sponsored Open Source images](https://hub.docker.com/search?q=&image_filter=open_source) are published and maintained by open-source projects sponsored by Docker through the program. Images that are part of this program have a special badge on Docker Hub making it easier for users to identify projects that Docker has verified as trusted, secure, and active open-source projects. -![Docker-Sponsored Open Source badge](images/sponsored-badge-iso.png) - -## For content publishers +![Docker-Sponsored Open Source badge](../../../images/sponsored-badge-iso.png) The Docker-Sponsored Open Source (DSOS) Program provides several features and benefits to non-commercial open source developers. @@ -47,25 +46,25 @@ over the repository can change the repository logo. 1. Sign in to [Docker Hub](https://hub.docker.com). 2. Go to the page of the repository that you want to change the logo for. 3. Select the upload logo button, represented by a camera icon - ({{< inline-image src="images/upload_logo_sm.png" alt="camera icon" >}}) + ({{< inline-image src="../../../images/upload_logo_sm.png" alt="camera icon" >}}) overlaying the current repository logo. 4. In the dialog that opens, select the PNG image that you want to upload to set it as the logo for the repository. #### Remove the logo -Select the **Clear** button ({{< inline-image src="images/clear_logo_sm.png" +Select the **Clear** button ({{< inline-image src="../../../images/clear_logo_sm.png" alt="clear button" >}}) to remove a logo. Removing the logo makes the repository default to using the organization logo, if set, or the following default logo if not. -![Default logo which is a 3D grey cube](images/default_logo_sm.png) +![Default logo which is a 3D grey cube](../../../images/default_logo_sm.png) ### Verified Docker-Sponsored Open Source badge Docker verifies that developers can trust images with this badge on Docker Hub as an active open source project. -![Fluent org with a Docker-Sponsored Open Source badge](images/sponsored-badge.png) +![Fluent org with a Docker-Sponsored Open Source badge](../../../images/sponsored-badge.png) ### Insights and analytics @@ -75,8 +74,6 @@ the community uses Docker images, granting insight into user behavior. The usage metrics show the number of image pulls by tag or by digest, and breakdowns by geolocation, cloud provider, client, and more. -![The insights and analytics tab on the Docker Hub website](images/insights-and-analytics-tab.png) - You can select the time span for which you want to view analytics data. You can also export the data in either a summary or raw format. ### Docker Scout diff --git a/content/manuals/trusted-content/dvp-program.md b/content/manuals/docker-hub/repos/manage/trusted-content/dvp-program.md similarity index 86% rename from content/manuals/trusted-content/dvp-program.md rename to content/manuals/docker-hub/repos/manage/trusted-content/dvp-program.md index ed92b9259579..39f75d10d30d 100644 --- a/content/manuals/trusted-content/dvp-program.md +++ b/content/manuals/docker-hub/repos/manage/trusted-content/dvp-program.md @@ -13,6 +13,7 @@ aliases: - /docker-hub/publish/ - /docker-hub/publish/repository-logos/ - /docker-hub/dvp-program/ +- /trusted-content/dvp-program/ --- [The Docker Verified Publisher Program](https://hub.docker.com/search?q=&image_filter=store) provides high-quality images from commercial publishers verified by Docker. @@ -21,9 +22,7 @@ These images help development teams build secure software supply chains, minimiz Images that are part of this program have a special badge on Docker Hub making it easier for users to identify projects that Docker has verified as high-quality commercial publishers. -![Docker-Sponsored Open Source badge](./images/verified-publisher-badge-iso.png) - -## For content publishers +![Docker-Sponsored Open Source badge](../../../images/verified-publisher-badge-iso.png) The Docker Verified Publisher Program (DVP) provides several features and benefits to Docker Hub publishers. The program grants the following perks based on participation tier: @@ -57,37 +56,35 @@ over the repository can change the repository logo. 1. Sign in to [Docker Hub](https://hub.docker.com). 2. Go to the page of the repository that you want to change the logo for. 3. Select the upload logo button, represented by a camera icon ({{< inline-image - src="./images/upload_logo_sm.png" alt="camera icon" >}}) overlaying the + src="../../../images/upload_logo_sm.png" alt="camera icon" >}}) overlaying the current repository logo. 4. In the dialog that opens, select the PNG image that you want to upload to set it as the logo for the repository. #### Remove the logo -Select the **Clear** button ({{< inline-image src="images/clear_logo_sm.png" +Select the **Clear** button ({{< inline-image src="../../../images/clear_logo_sm.png" alt="clear button" >}}) to remove a logo. Removing the logo makes the repository default to using the organization logo, if set, or the following default logo if not. -![Default logo which is a 3D grey cube](images/default_logo_sm.png) +![Default logo which is a 3D grey cube](../../../images/default_logo_sm.png) ### Verified publisher badge Images that are part of this program have a badge on Docker Hub making it easier for developers to identify projects that Docker has verified as high quality publishers and with content they can trust. -![Docker, Inc. org with a verified publisher badge](./images/verified-publisher-badge.png) +![Docker, Inc. org with a verified publisher badge](../../../images/verified-publisher-badge.png) ### Insights and analytics -The [insights and analytics](/docker-hub/publish/insights-analytics) service provides usage metrics for how +The [insights and analytics](./insights-analytics.md) service provides usage metrics for how the community uses Docker images, granting insight into user behavior. The usage metrics show the number of image pulls by tag or by digest, and breakdowns by geolocation, cloud provider, client, and more. -![The insights and analytics tab on the Docker Hub website](./images/insights-and-analytics-tab.png) - You can select the time span for which you want to view analytics data. You can also export the data in either a summary or raw format. ### Vulnerability analysis diff --git a/content/manuals/trusted-content/insights-analytics.md b/content/manuals/docker-hub/repos/manage/trusted-content/insights-analytics.md similarity index 98% rename from content/manuals/trusted-content/insights-analytics.md rename to content/manuals/docker-hub/repos/manage/trusted-content/insights-analytics.md index c2dead2bbdc9..0ffd17abcb5c 100644 --- a/content/manuals/trusted-content/insights-analytics.md +++ b/content/manuals/docker-hub/repos/manage/trusted-content/insights-analytics.md @@ -5,6 +5,7 @@ keywords: docker hub, hub, insights, analytics, api, verified publisher aliases: - /docker-hub/publish/insights-analytics/ - /docker-hub/insights-analytics/ +- /trusted-content/insights-analytics/ --- Insights and analytics provides usage analytics for Docker Verified @@ -31,7 +32,7 @@ To view data in the chart: - Select the time interval: 3, 6, or 12 months - Select one or more repositories in the list -![Insights and analytics chart visualization](./images/chart.png) +![Insights and analytics chart visualization](../../../images/chart.png) > [!TIP] @@ -44,7 +45,7 @@ To view data in the chart: You can share the visualization with others using the **Share** icon above the chart. This is a convenient way to share statistics with others in your organization. -![Chart share icon](./images/chart-share-icon.png) +![Chart share icon](../../../images/chart-share-icon.png) Selecting the icon generates a link that's copied to your clipboard. The link preserves the display selections you made. When someone follows the link, the @@ -75,14 +76,14 @@ Export usage data for your organization's images using the Docker Hub website by 2. Choose your organization and select **Insights and analytics**. - ![Organization overview page, with the Insights and Analytics tab](./images/organization-tabs.png) + ![Organization overview page, with the Insights and Analytics tab](../../../images/organization-tabs.png) 3. Set the time span for which you want to export analytics data. The downloadable CSV files for summary and raw data appear on the right-hand side. - ![Filtering options and download links for analytics data](./images/download-analytics-data.png) + ![Filtering options and download links for analytics data](../../../images/download-analytics-data.png) ### Export data using the API diff --git a/content/manuals/trusted-content/official-images/contributing.md b/content/manuals/docker-hub/repos/manage/trusted-content/official-images.md similarity index 95% rename from content/manuals/trusted-content/official-images/contributing.md rename to content/manuals/docker-hub/repos/manage/trusted-content/official-images.md index 48189a442184..206ee0eaa551 100644 --- a/content/manuals/trusted-content/official-images/contributing.md +++ b/content/manuals/docker-hub/repos/manage/trusted-content/official-images.md @@ -1,9 +1,13 @@ --- -title: Contributing to Docker Official Images +title: Docker Official Images description: | This article describes how Docker Official Images are created, and how you can contribute or leave feedback. keywords: docker official images, doi, contributing, upstream, open source +aliases: +- /trusted-content/official-images/contributing/ +- /docker-hub/official_repos/ +- /docker-hub/official_images/ --- Docker, Inc. sponsors a dedicated team that's responsible for reviewing and diff --git a/content/manuals/docker-hub/service-accounts.md b/content/manuals/docker-hub/service-accounts.md index ea412ccf9e13..845ebd966709 100644 --- a/content/manuals/docker-hub/service-accounts.md +++ b/content/manuals/docker-hub/service-accounts.md @@ -32,4 +32,4 @@ Refer to the following table for details on the Enhanced Service Account add-ons | 4 | 50,000-100,000 | | 5 | 100,000+ | -*The service account may exceed Pulls by up to 25% for up to 20 days during the year without incurring additional fees. Reports on consumption are available upon request. +*The service account may exceed Pulls by up to 25% for up to 20 days during the year without incurring additional fees. Reports on consumption are available upon request. \ No newline at end of file diff --git a/content/manuals/security/security-announcements.md b/content/manuals/security/security-announcements.md index 9c1cbddd0604..bc1bb163d827 100644 --- a/content/manuals/security/security-announcements.md +++ b/content/manuals/security/security-announcements.md @@ -59,7 +59,7 @@ If you are using affected versions of runc, BuildKit, Moby, or Docker Desktop, m If you are unable to update to an unaffected version promptly, follow these best practices to mitigate risk: -* Only use trusted Docker images (such as [Docker Official Images](../trusted-content/official-images/_index.md)). +* Only use trusted Docker images (such as [Docker Official Images](../docker-hub/image-library/trusted-content.md#docker-official-images)). * Don’t build Docker images from untrusted sources or untrusted Dockerfiles. * If you are a Docker Business customer using Docker Desktop and unable to update to v4.27.1, make sure to enable [Hardened Docker Desktop](/manuals/security/for-admins/hardened-desktop/_index.md) features such as: * [Enhanced Container Isolation](/manuals/security/for-admins/hardened-desktop/enhanced-container-isolation/_index.md), which mitigates the impact of CVE-2024-21626 in the case of running containers from malicious images. @@ -149,7 +149,7 @@ the Text4Shell CVE in the vulnerability report. For detailed instructions, see [ ### Docker Official Images impacted by CVE-2022-42889 -A number of [Docker Official Images](../trusted-content/official-images/_index.md) contain the vulnerable versions of +A number of [Docker Official Images](../docker-hub/image-library/trusted-content.md#docker-official-images) contain the vulnerable versions of Apache Commons Text. The following lists Docker Official Images that may contain the vulnerable versions of Apache Commons Text: @@ -201,7 +201,7 @@ Log4j 2 CVE in the vulnerability report. For detailed instructions, see [Scan im _Last updated December 2021_ -A number of [Docker Official Images](../trusted-content/official-images/_index.md) contain the vulnerable versions of +A number of [Docker Official Images](../docker-hub/image-library/trusted-content.md#docker-official-images) contain the vulnerable versions of Log4j 2 CVE-2021-44228. The following table lists Docker Official Images that may contained the vulnerable versions of Log4j 2. We updated Log4j 2 in these images to the latest version. Some of these images may not be vulnerable for other reasons. We recommend that you also review the guidelines published on the upstream websites. diff --git a/content/manuals/subscription/faq.md b/content/manuals/subscription/faq.md index ee89aeeb0b9c..b4713d9b6326 100644 --- a/content/manuals/subscription/faq.md +++ b/content/manuals/subscription/faq.md @@ -24,7 +24,7 @@ Contact the [Docker Sales Team](https://www.docker.com/company/contact). ### What ways can I contribute to Docker content? Docker offers two programs: -- [Docker-Sponsored Open Source Program (DSOS)](../trusted-content/dsos-program.md) -- [Docker Verified Publisher (DVP)](../trusted-content/dvp-program.md) +- [Docker-Sponsored Open Source Program (DSOS)](../docker-hub/repos/manage/trusted-content/dsos-program.md) +- [Docker Verified Publisher (DVP)](../docker-hub/repos/manage/trusted-content/dvp-program.md) You can also join the [Developer Preview Program](https://www.docker.com/community/get-involved/developer-preview/) or sign up for early access programs for specific products to participate in research and try out new features. diff --git a/content/manuals/trusted-content/_index.md b/content/manuals/trusted-content/_index.md deleted file mode 100644 index 4fa05af44256..000000000000 --- a/content/manuals/trusted-content/_index.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Trusted content -description: Optimize your development workflow with secure base images from our selection of trusted content -keywords: doi, dvp, dsos, open source, security, base images -params: - sidebar: - group: Platform -grid: -- title: Docker Official Images - description: A curated set of Docker repositories hosted on Docker Hub. - icon: /trusted-content/images/doi-icon.svg - link: /trusted-content/official-images/ -- title: Docker Verified Publisher - description: High-quality images from verified vendors. - icon: /trusted-content/images/dvp-icon.svg - link: /trusted-content/dvp-program/ -- title: Docker-Sponsored Open Source - description: High-quality images from non-commercial open source projects. - icon: /trusted-content/images/dsos-icon.svg - link: /trusted-content/dsos-program/ ---- - -Trusted content is a selection of high-quality, secure images, curated by -Docker and verified publishing partners. These images are stable, up-to-date, -and follow industry best-practices. They provide a strong foundation for -developing applications. - -{{< grid >}} diff --git a/content/manuals/trusted-content/images/doi-icon.svg b/content/manuals/trusted-content/images/doi-icon.svg deleted file mode 100644 index ccba28f803b0..000000000000 --- a/content/manuals/trusted-content/images/doi-icon.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/content/manuals/trusted-content/images/dsos-icon.svg b/content/manuals/trusted-content/images/dsos-icon.svg deleted file mode 100644 index f62ff75981a6..000000000000 --- a/content/manuals/trusted-content/images/dsos-icon.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/content/manuals/trusted-content/images/dvp-icon.svg b/content/manuals/trusted-content/images/dvp-icon.svg deleted file mode 100644 index 17acbd499764..000000000000 --- a/content/manuals/trusted-content/images/dvp-icon.svg +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/content/manuals/trusted-content/images/insights-and-analytics-tab.png b/content/manuals/trusted-content/images/insights-and-analytics-tab.png deleted file mode 100644 index a1f52fc832e9..000000000000 Binary files a/content/manuals/trusted-content/images/insights-and-analytics-tab.png and /dev/null differ diff --git a/content/manuals/trusted-content/official-images/_index.md b/content/manuals/trusted-content/official-images/_index.md deleted file mode 100644 index c9b05edf0d28..000000000000 --- a/content/manuals/trusted-content/official-images/_index.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -description: Get an overview on Docker Official Images, what they are, and how they differ from other images available on Docker Hub -keywords: Docker, docker, registry, accounts, plans, Dockerfile, Docker Hub, docs, - official,image, documentation -title: Docker Official Images -aliases: -- /docker-hub/official_repos/ -- /docker-hub/official_images/ ---- - -The [Docker Official Images](https://hub.docker.com/search?q=&type=image&image_filter=official) -are a curated set of Docker repositories hosted on Docker Hub. - -> [!NOTE] -> -> Use of Docker Official Images is subject to [Docker's Terms of Service](https://www.docker.com/legal/docker-terms-service/). - -These images provide essential base repositories that serve as the starting -point for the majority of users. - -These include operating systems such as -[Ubuntu](https://hub.docker.com/_/ubuntu/) and -[Alpine](https://hub.docker.com/_/alpine/), programming language runtimes such as -[Python](https://hub.docker.com/_/python) and -[Node](https://hub.docker.com/_/node), and other essential tools such as -[memcached](https://hub.docker.com/_/memcached) and -[MySQL](https://hub.docker.com/_/mysql). - -The images are some of the [most secure images](https://www.docker.com/blog/enhancing-security-and-transparency-with-docker-official-images/) -on Docker Hub. This is particularly important as Docker Official Images are -some of the most popular on Docker Hub. Typically, Docker Official images have -few or no packages containing CVEs. - -The images exemplify [`Dockerfile` best practices](/manuals/build/building/best-practices.md) -and provide clear documentation to serve as a reference for other `Dockerfile` authors. - -Images that are part of this program have a special badge on Docker Hub making -it easier for you to identify projects that are part of Docker Official Images. - -![Docker official image badge](../images/official-image-badge-iso.png) - -## In this section - -{{% sectionlinks %}} diff --git a/content/reference/api/engine/_index.md b/content/reference/api/engine/_index.md index b226065c7e91..2511ce1ba3c3 100644 --- a/content/reference/api/engine/_index.md +++ b/content/reference/api/engine/_index.md @@ -40,7 +40,7 @@ The Docker Engine API is a RESTful API accessed by an HTTP client such as `wget` ## View the API reference You can -[view the reference for the latest version of the API](latest/index.html) +[view the reference for the latest version of the API](/reference/api/engine/version/v{{% param latest_engine_api_version %}}.md) or [choose a specific version](/reference/api/engine/version-history/). ## Versioned API and SDK diff --git a/content/reference/api/hub/latest.yaml b/content/reference/api/hub/latest.yaml index 94f3366a5447..7d0099ab8a62 100644 --- a/content/reference/api/hub/latest.yaml +++ b/content/reference/api/hub/latest.yaml @@ -6,112 +6,104 @@ info: url: https://docs.docker.com/assets/images/logo-docker-main.png href: /reference description: | - Docker Hub is a service provided by Docker for finding and sharing container - images with your team. + Docker Hub is a service provided by Docker for finding and sharing container images with your team. It is the world's largest library and community for container images. - In addition to the [Docker Hub UI](https://docs.docker.com/docker-hub/) and [Docker Hub CLI tool](https://github.com/docker/hub-tool#readme) (currently experimental), - - Docker provides an API that allows you to interact with Docker Hub. + In addition to the [Docker Hub UI](https://docs.docker.com/docker-hub/) and [Docker Hub CLI tool](https://github.com/docker/hub-tool#readme) (currently experimental), Docker provides an API that allows you to interact with Docker Hub. Browse through the Docker Hub API documentation to explore the supported endpoints. - +servers: + - description: Docker HUB API + x-audience: public + url: https://hub.docker.com tags: - name: resources x-displayName: Resources description: | The following resources are available to interact with the documented API: - - - Docker Hub CLI tool (currently experimental) + - [Docker Hub CLI tool](https://github.com/docker/hub-tool#readme) (currently experimental) - name: rate-limiting x-displayName: Rate Limiting description: | The Docker Hub API is limited on the amount of requests you can perform per minute against it. - If you haven't hit the limit, each request to the API will return the - - following headers in the response. + If you haven't hit the limit, each request to the API will return the following headers in the response. - `X-RateLimit-Limit` - The limit of requests per minute. - `X-RateLimit-Remaining` - The remaining amount of calls within the limit period. - `X-RateLimit-Reset` - The unix timestamp of when the remaining resets. - If you have hit the limit, you will receive a response status of `429` and the `X-Retry-After` - header in the response. + If you have hit the limit, you will receive a response status of `429` and the `X-Retry-After` header in the response. The `X-Retry-After` header is a unix timestamp of when you can call the API again. - **Note**: These rate limits are separate from anti-abuse and Docker Hub - - download, or pull rate limiting. To learn more about Docker Hub pull rate - - limiting, see [Docker Hub download rate limit](https://docs.docker.com/docker-hub/download-rate-limit/). + **Note**: These rate limits are separate from anti-abuse and Docker Hub download, or pull rate limiting. + To learn more about Docker Hub pull rate limiting, see [Docker Hub download rate limit](https://docs.docker.com/docker-hub/download-rate-limit/). - name: authentication x-displayName: Authentication description: | - Most Docker Hub API endpoints require you to authenticate using your - Docker credentials before using them. + Most Docker Hub API endpoints require you to authenticate using your Docker credentials before using them. - Additionally, similar to the Docker Hub UI features, API endpoint responses may vary depending - on your plan (Personal, Pro, or Team) and your account's permissions. + Additionally, similar to the Docker Hub UI features, API endpoint responses may vary depending on your plan (Personal, Pro, or Team) and your account's permissions. To learn more about the features available in each plan and to upgrade your existing plan, see [Docker Pricing](https://www.docker.com/pricing). - name: access-tokens x-displayName: Personal Access Tokens description: | - The Personal Access Token endpoints lets you manage personal access tokens. For more - information, see [Access Tokens](https://docs.docker.com/security/for-developers/access-tokens/). + The Personal Access Token endpoints lets you manage personal access tokens. For more information, see [Access Tokens](https://docs.docker.com/security/for-developers/access-tokens/). - You can use a personal access token instead of a password in the [Docker CLI](https://docs.docker.com/engine/reference/commandline/cli/) - or in the [Create an authentication token](#operation/PostUsersLogin) route to obtain a bearer - token. + You can use a personal access token instead of a password in the [Docker CLI](https://docs.docker.com/engine/reference/commandline/cli/) or in the [Create an authentication token](#operation/PostUsersLogin) route to obtain a bearer token. ### Scopes - For each scope grouping (in this case "repo"), you only need to define 1 scope as any lower - scopes are assumed. For example: If you define `repo:write`, the API assumes the scope of both - `repo:read` *and* `repo:public_read` as well. If you were to define both `repo:write` *and* - `repo:read`, then `repo:read` is assumed by `repo:write` and ignored. + For each scope grouping (in this case "repo"), you only need to define 1 scope as any lower scopes are assumed. + For example: If you define `repo:write`, the API assumes the scope of both `repo:read` *and* `repo:public_read` as well. + If you were to define both `repo:write` *and* `repo:read`, then `repo:read` is assumed by `repo:write` and ignored. - ***Treat your personal access token like your password and keep it secret. You cannot retrieve - your token after it is generated.*** + ***Treat your personal access token like your password and keep it secret. You cannot retrieve your token after it is generated.*** - name: audit-logs x-displayName: Audit Logs description: | - The Audit Logs API endpoints allow you to query audit log events across a - namespace. + The Audit Logs API endpoints allow you to query audit log events across a namespace. For more information, see [Audit Log](https://docs.docker.com/admin/organization/activity-logs/). - name: org-settings x-displayName: Org Settings description: | - The Org Settings API endpoints allow you to manage your organization's - settings. + The Org Settings API endpoints allow you to manage your organization's settings. - name: repositories x-displayName: Repositories description: | - The repository endpoints allow you to access your repository's - tags. + The repository endpoints allow you to access your repository's tags. + - name: orgs + x-displayName: Organizations + x-audience: public + description: | + The organization endpoints allow you to interact with and manage your organizations. + + For more information, see [Organization administration overview](https://docs.docker.com/admin/organization/). + - name: groups + x-displayName: Groups (Teams) + x-audience: public + description: | + The groups endpoints allow you to manage your organization's teams and their members. + + For more information, seee [Create and manage a team](https://docs.docker.com/admin/organization/manage-a-team/). + - name: invites + x-displayName: Invites + x-audience: public + description: | + The invites endpoints allow you to manage invites for users to join your Docker organization. + + For more information, see [Invite members](https://docs.docker.com/admin/organization/members/#invite-members). - name: scim x-displayName: SCIM + x-audience: public description: | SCIM is a provisioning system that lets you manage users within your identity provider (IdP). + For more information, see [System for Cross-domain Identity management](https://docs.docker.com/security/for-admins/provisioning/scim/). -x-tagGroups: - - name: General - tags: - - resources - - rate-limiting - - name: API - tags: - - authentication - - access-tokens - - images - - audit-logs - - org-settings - - repositories - - scim paths: /v2/users/login: post: @@ -120,36 +112,33 @@ paths: summary: Create an authentication token operationId: PostUsersLogin description: | - Creates and returns a bearer token in JWT format that you can use to - authenticate with Docker Hub APIs. + Creates and returns a bearer token in JWT format that you can use to authenticate with Docker Hub APIs. The returned token is used in the HTTP Authorization header like `Authorization: Bearer {TOKEN}`. - Most Docker Hub APIs require this token either to consume or to get detailed information. For example, to list - images in a private repository. - - _**As of Monday, September 16, 2024, this route requires a PAT instead of a password if your organization has - SSO enforced.**_ + Most Docker Hub APIs require this token either to consume or to get detailed information. For example, to list images in a private repository. + + _**As of September 16, 2024, this route requires a PAT instead of a password if your organization has SSO enforced.**_ requestBody: content: application/json: schema: - $ref: "#/components/schemas/UsersLoginRequest" + $ref: '#/components/schemas/UsersLoginRequest' description: Login details. required: true responses: - 200: + '200': description: Authentication successful content: application/json: schema: - $ref: "#/components/schemas/PostUsersLoginSuccessResponse" - 401: + $ref: '#/components/schemas/PostUsersLoginSuccessResponse' + '401': description: Authentication failed or second factor required content: application/json: schema: - $ref: "#/components/schemas/PostUsersLoginErrorResponse" + $ref: '#/components/schemas/PostUsersLoginErrorResponse' /v2/users/2fa-login: post: tags: @@ -157,8 +146,7 @@ paths: summary: Second factor authentication operationId: PostUsers2FALogin description: | - When a user has two-factor authentication (2FA) enabled, this is the second call to perform after - `/v2/users/login` call. + When a user has two-factor authentication (2FA) enabled, this is the second call to perform after `/v2/users/login` call. Creates and returns a bearer token in JWT format that you can use to authenticate with Docker Hub APIs. @@ -169,22 +157,22 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/Users2FALoginRequest" + $ref: '#/components/schemas/Users2FALoginRequest' description: Login details. required: true responses: - 200: + '200': description: Authentication successful content: application/json: schema: - $ref: "#/components/schemas/PostUsersLoginSuccessResponse" - 401: + $ref: '#/components/schemas/PostUsersLoginSuccessResponse' + '401': description: Authentication failed or second factor required content: application/json: schema: - $ref: "#/components/schemas/PostUsers2FALoginErrorResponse" + $ref: '#/components/schemas/PostUsers2FALoginErrorResponse' /v2/access-tokens: post: summary: Create a personal access token @@ -195,19 +183,19 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/createAccessTokenRequest" + $ref: '#/components/schemas/createAccessTokenRequest' required: true responses: - 201: + '201': description: Created content: application/json: schema: - $ref: "#/components/schemas/createAccessTokensResponse" - 400: - $ref: "#/components/responses/BadRequest" - 401: - $ref: "#/components/responses/Unauthorized" + $ref: '#/components/schemas/createAccessTokensResponse' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' get: summary: Get a list of personal access tokens description: Returns a paginated list of personal access tokens. @@ -225,16 +213,16 @@ paths: type: number default: 10 responses: - 200: + '200': description: OK content: application/json: schema: - $ref: "#/components/schemas/getAccessTokensResponse" - 400: - $ref: "#/components/responses/BadRequest" - 401: - $ref: "#/components/responses/Unauthorized" + $ref: '#/components/schemas/getAccessTokensResponse' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' /v2/access-tokens/{uuid}: parameters: - in: path @@ -245,49 +233,48 @@ paths: patch: summary: Update a personal access token description: | - Updates a personal access token partially. You can either update the - token's label or enable/disable it. + Updates a personal access token partially. You can either update the token's label or enable/disable it. tags: - access-tokens requestBody: content: application/json: schema: - $ref: "#/components/schemas/patchAccessTokenRequest" + $ref: '#/components/schemas/patchAccessTokenRequest' required: true responses: - 200: + '200': description: OK content: application/json: schema: - $ref: "#/components/schemas/patchAccessTokenResponse" - 400: - $ref: "#/components/responses/BadRequest" - 401: - $ref: "#/components/responses/Unauthorized" + $ref: '#/components/schemas/patchAccessTokenResponse' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' get: summary: Get a personal access token description: Returns a personal access token by UUID. tags: - access-tokens responses: - 200: + '200': description: OK content: application/json: schema: allOf: - - $ref: "#/components/schemas/accessToken" + - $ref: '#/components/schemas/accessToken' - type: object properties: token: type: string - example: "" - 401: - $ref: "#/components/responses/Unauthorized" - 404: - $ref: "#/components/responses/NotFound" + example: '' + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' delete: summary: Delete a personal access token description: | @@ -295,24 +282,24 @@ paths: tags: - access-tokens responses: - 204: + '204': description: A successful response. - 401: - $ref: "#/components/responses/Unauthorized" - 404: - $ref: "#/components/responses/NotFound" + '401': + $ref: '#/components/responses/Unauthorized' + '404': + $ref: '#/components/responses/NotFound' /v2/auditlogs/{account}: get: summary: Returns list of audit log events description: Get audit log events for a given namespace. operationId: AuditLogs_GetAuditLogs responses: - 200: + '200': description: A successful response. content: application/json: schema: - $ref: "#/components/schemas/GetAuditLogsResponse" + $ref: '#/components/schemas/GetAuditLogsResponse' examples: response: value: @@ -324,12 +311,11 @@ paths: data: digest: sha256:c1ae9c435032a276f80220c7d9b40f76266bbe79243d34f9cda30b76fe114dfa tag: latest - timestamp: 2021-02-19T01:34:35Z - action_description: - pushed the tag latest with the digest - sha256:c1ae9c435032a to the repository docker/example - 429: - description: "" + timestamp: '2021-02-19T01:34:35Z' + action_description: | + pushed the tag latest with the digest sha256:c1ae9c435032a to the repository docker/example + '429': + description: '' content: application/json: schema: {} @@ -338,8 +324,8 @@ paths: value: detail: Rate limit exceeded error: false - 500: - description: "" + '500': + description: '' content: application/json: schema: {} @@ -348,7 +334,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/rpcStatus" + $ref: '#/components/schemas/rpcStatus' parameters: - name: account description: Namespace to query audit logs for. @@ -357,27 +343,22 @@ paths: schema: type: string - name: action - description: - action name one of ["repo.tag.push", ...]. Optional parameter to - filter specific audit log actions. + description: | + action name one of ["repo.tag.push", ...]. Optional parameter to filter specific audit log actions. in: query required: false schema: type: string - name: name - description: - name. Optional parameter to filter audit log events to a specific - name. For repository events, this is the name of the repository. For - organization events, this is the name of the organization. For team - member events, this is the username of the team member. + description: | + name. Optional parameter to filter audit log events to a specific name. For repository events, this is the name of the repository. For organization events, this is the name of the organization. For team member events, this is the username of the team member. in: query required: false schema: type: string - name: actor - description: - actor name. Optional parameter to filter audit log events to the - specific user who triggered the event. + description: | + actor name. Optional parameter to filter audit log events to the specific user who triggered the event. in: query required: false schema: @@ -417,17 +398,16 @@ paths: /v2/auditlogs/{account}/actions: get: summary: Returns list of audit log actions - description: - Get audit log actions for a namespace to be used as a filter for - querying audit events. + description: | + Get audit log actions for a namespace to be used as a filter for querying audit events. operationId: AuditLogs_GetAuditActions responses: - 200: + '200': description: A successful response. content: application/json: schema: - $ref: "#/components/schemas/GetAuditActionsResponse" + $ref: '#/components/schemas/GetAuditActionsResponse' examples: response: value: @@ -474,8 +454,8 @@ paths: description: contains image tag delete events label: Tag Deleted label: Repository - 429: - description: "" + '429': + description: '' content: application/json: schema: {} @@ -484,8 +464,8 @@ paths: value: detail: Rate limit exceeded error: false - 500: - description: "" + '500': + description: '' content: application/json: schema: {} @@ -494,7 +474,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/rpcStatus" + $ref: '#/components/schemas/rpcStatus' parameters: - name: account description: Namespace to query audit log actions for. @@ -519,23 +499,22 @@ paths: tags: - org-settings responses: - 200: + '200': description: OK content: application/json: schema: - $ref: "#/components/schemas/orgSettings" - 401: - $ref: "#/components/responses/Unauthorized" - 403: - $ref: "#/components/responses/Forbidden" - 404: - $ref: "#/components/responses/NotFound" + $ref: '#/components/schemas/orgSettings' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' put: summary: Update organization settings description: | - Updates an organization's settings. Some settings are only used when the - organization is on a business plan. + Updates an organization's settings. Some settings are only used when the organization is on a business plan. ***Only users with administrative privileges for the organization (owner role) can modify these settings.*** @@ -552,7 +531,7 @@ paths: properties: restricted_images: allOf: - - $ref: "#/components/schemas/restricted_images" + - $ref: '#/components/schemas/restricted_images' - type: object required: - enabled @@ -560,194 +539,713 @@ paths: - allow_verified_publishers required: true responses: - 200: + '200': description: OK content: application/json: schema: - $ref: "#/components/schemas/orgSettings" - 401: - $ref: "#/components/responses/Unauthorized" - 403: - $ref: "#/components/responses/Forbidden" - 404: - $ref: "#/components/responses/NotFound" - - + $ref: '#/components/schemas/orgSettings' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' /v2/namespaces/{namespace}/repositories/{repository}/tags: parameters: - - $ref: "#/components/parameters/namespace" - - $ref: "#/components/parameters/repository" + - $ref: '#/components/parameters/namespace' + - $ref: '#/components/parameters/repository' get: - summary: "List repository tags" - tags: [ repositories ] + summary: List repository tags + tags: + - repositories parameters: - - $ref: "#/components/parameters/page" - - $ref: "#/components/parameters/page_size" + - in: query + name: page + required: false + schema: + type: integer + description: Page number to get. Defaults to 1. + - in: query + name: page_size + required: false + schema: + type: integer + description: Number of items to get per page. Defaults to 10. Max of 100. responses: - 200: - $ref: "#/components/responses/list_tags" - 403: - $ref: "#/components/responses/Forbidden" - 404: - $ref: "#/components/responses/NotFound" + '200': + $ref: '#/components/responses/list_tags' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' head: - summary: "Check repository tags" - tags: [ repositories ] + summary: Check repository tags + tags: + - repositories responses: - 200: - description: "Repository contains tags" - 403: - $ref: "#/components/responses/Forbidden" - 404: - $ref: "#/components/responses/NotFound" - + '200': + description: Repository contains tags + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' /v2/namespaces/{namespace}/repositories/{repository}/tags/{tag}: parameters: - - $ref: "#/components/parameters/namespace" - - $ref: "#/components/parameters/repository" - - $ref: "#/components/parameters/tag" + - $ref: '#/components/parameters/namespace' + - $ref: '#/components/parameters/repository' + - $ref: '#/components/parameters/tag' get: - summary: "Read repository tag" - tags: [ repositories ] + summary: Read repository tag + tags: + - repositories responses: - 200: - $ref: "#/components/responses/get_tag" - 403: - $ref: "#/components/responses/Forbidden" - 404: - $ref: "#/components/responses/NotFound" + '200': + $ref: '#/components/responses/get_tag' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' head: - summary: "Check repository tag" - tags: [ repositories ] + summary: Check repository tag + tags: + - repositories responses: - 200: - description: "Repository tag exists" - 403: - $ref: "#/components/responses/Forbidden" - 404: - $ref: "#/components/responses/NotFound" - - + '200': + description: Repository tag exists + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + /v2/orgs/{org_name}/members: + x-audience: public + parameters: + - $ref: '#/components/parameters/org_name' + - $ref: '#/components/parameters/search' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/page_size' + - $ref: '#/components/parameters/invites' + - $ref: '#/components/parameters/type' + - $ref: '#/components/parameters/role' + get: + summary: List org members + description: | + Returns a list of members for an organization" + tags: + - orgs + responses: + '200': + description: List of members + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/org_member_paginated' + '400': + $ref: '#/components/responses/bad_request' + '401': + $ref: '#/components/responses/unauthorized' + '403': + $ref: '#/components/responses/forbidden' + '404': + $ref: '#/components/responses/not_found' + /v2/orgs/{org_name}/members/export: + x-audience: public + parameters: + - $ref: '#/components/parameters/org_name' + get: + summary: Export org members CSV + description: | + Export members of an organization as a CSV + tags: + - orgs + responses: + '200': + description: Exported members + content: + text/csv: + schema: + type: array + items: + type: object + required: + - Name + - Username + - Email + - Type + - Role + - Date Joined + properties: + Name: + type: string + description: First and last name of the member + Username: + type: string + description: Username of the member + Email: + type: string + description: Email address of the member + Type: + type: string + description: Type of the member + enum: + - Invitee + - User + Permission: + type: string + description: Permission of the member + enum: + - Owner + - Member + Teams: + type: string + description: Comma-separated list of teams the member is part of + example: team-1, team-2 + Date Joined: + type: string + description: Date the member joined the organization + example: 2020-01-01 15:00:51.193355 +0000 UTC + headers: + Content-Disposition: + schema: + type: string + example: attachment;filename="{org_name}-members-{timestamp}.csv" + '400': + $ref: '#/components/responses/bad_request' + '401': + $ref: '#/components/responses/unauthorized' + '403': + $ref: '#/components/responses/forbidden' + '404': + $ref: '#/components/responses/not_found' + /v2/orgs/{org_name}/members/{username}: + x-audience: public + parameters: + - $ref: '#/components/parameters/org_name' + - $ref: '#/components/parameters/username' + put: + summary: Update org member (role) + description: | + Updates the role of a member in the organization. + ***Only users in the "owners" group of the organization can use this endpoint.*** + tags: + - orgs + requestBody: + required: true + content: + application/json: + schema: + required: + - role + properties: + role: + type: string + description: Role of the member + enum: + - owner + - editor + - member + responses: + '200': + description: Member role updated + content: + application/json: + schema: + $ref: '#/components/schemas/org_member' + '400': + $ref: '#/components/responses/bad_request' + '401': + $ref: '#/components/responses/unauthorized' + '403': + $ref: '#/components/responses/forbidden' + '404': + $ref: '#/components/responses/not_found' + delete: + summary: Remove member from org + description: | + Removes the member from the org, ie. all groups in the org, unless they're the last owner + tags: + - orgs + responses: + '204': + description: Member removed successfully + '400': + $ref: '#/components/responses/bad_request' + '401': + $ref: '#/components/responses/unauthorized' + '403': + $ref: '#/components/responses/forbidden' + '404': + $ref: '#/components/responses/not_found' + /v2/orgs/{org_name}/invites: + x-audience: public + parameters: + - $ref: '#/components/parameters/org_name' + get: + summary: List org invites + description: | + Return all pending invites for a given org, only team owners can call this endpoint + tags: + - invites + responses: + '200': + description: '' + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/invite' + '401': + $ref: '#/components/responses/unauthorized' + '403': + $ref: '#/components/responses/forbidden' + '404': + $ref: '#/components/responses/not_found' + /v2/orgs/{org_name}/groups: + x-audience: public + parameters: + - $ref: '#/components/parameters/org_name' + get: + summary: Get groups of an organization + tags: + - groups + parameters: + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/page_size' + - in: query + name: username + schema: + type: string + description: Get groups for the specified username in the organization. + - in: query + name: search + schema: + type: string + description: Get groups for the specified group in the organization. + responses: + '200': + description: '' + content: + application/json: + schema: + properties: + count: + type: number + example: 1 + next: + type: string + example: null + previous: + type: string + example: null + results: + type: array + items: + $ref: '#/components/schemas/org_group' + '401': + $ref: '#/components/responses/unauthorized' + '403': + $ref: '#/components/responses/forbidden' + '404': + $ref: '#/components/responses/not_found' + post: + summary: Create a new group + description: Create a new group within an organization. + tags: + - groups + requestBody: + content: + application/json: + schema: + required: + - name + properties: + name: + type: string + description: + type: string + responses: + '201': + description: Group created successfully + content: + application/json: + schema: + $ref: '#/components/schemas/org_group' + '400': + $ref: '#/components/responses/bad_request' + '401': + $ref: '#/components/responses/unauthorized' + '403': + $ref: '#/components/responses/forbidden' + /v2/orgs/{org_name}/groups/{group_name}: + x-audience: public + parameters: + - $ref: '#/components/parameters/org_name' + - $ref: '#/components/parameters/group_name' + get: + summary: Get a group of an organization + tags: + - groups + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/org_group' + '401': + $ref: '#/components/responses/unauthorized' + '403': + $ref: '#/components/responses/forbidden' + '404': + $ref: '#/components/responses/not_found' + put: + summary: Update the details for an organization group + tags: + - groups + requestBody: + content: + application/json: + schema: + required: + - name + properties: + name: + type: string + description: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/org_group' + '401': + $ref: '#/components/responses/unauthorized' + '403': + $ref: '#/components/responses/forbidden' + '404': + $ref: '#/components/responses/not_found' + patch: + summary: Update some details for an organization group + tags: + - groups + requestBody: + content: + application/json: + schema: + properties: + name: + type: string + description: + type: string + responses: + '200': + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/org_group' + '401': + $ref: '#/components/responses/unauthorized' + '403': + $ref: '#/components/responses/forbidden' + '404': + $ref: '#/components/responses/not_found' + delete: + summary: Delete an organization group + tags: + - groups + responses: + '204': + description: Group deleted successfully + '401': + $ref: '#/components/responses/unauthorized' + '403': + $ref: '#/components/responses/forbidden' + '404': + $ref: '#/components/responses/not_found' + /v2/orgs/{org_name}/groups/{group_name}/members: + x-audience: public + get: + parameters: + - $ref: '#/components/parameters/org_name' + - $ref: '#/components/parameters/group_name' + - $ref: '#/components/parameters/page' + - $ref: '#/components/parameters/page_size' + - in: query + name: search + schema: + type: string + description: Search members by username, full_name or email. + summary: List members of a group + description: | + List the members (users) that are in a group. + If user is owner of the org or has otherwise elevated permissions, they can search by email and the result will also contain emails. + tags: + - groups + responses: + '200': + description: '' + content: + application/json: + schema: + properties: + count: + type: number + example: 1 + next: + type: string + example: null + previous: + type: string + example: null + results: + type: array + items: + $ref: '#/components/schemas/group_member' + '401': + $ref: '#/components/responses/unauthorized' + '403': + $ref: '#/components/responses/forbidden' + '404': + $ref: '#/components/responses/not_found' + post: + parameters: + - $ref: '#/components/parameters/org_name' + - $ref: '#/components/parameters/group_name' + summary: Adds a member to a group + tags: + - groups + requestBody: + $ref: '#/components/requestBodies/add_member_to_org_group' + responses: + '200': + description: OK + '401': + $ref: '#/components/responses/unauthorized' + '403': + $ref: '#/components/responses/forbidden' + '404': + $ref: '#/components/responses/not_found' + '500': + $ref: '#/components/responses/internal_error' + /v2/orgs/{org_name}/groups/{group_name}/members/{username}: + x-audience: public + parameters: + - $ref: '#/components/parameters/org_name' + - $ref: '#/components/parameters/group_name' + - $ref: '#/components/parameters/username' + delete: + summary: Removes a user from a group + tags: + - groups + responses: + '204': + description: User removed successfully + '401': + $ref: '#/components/responses/unauthorized' + '403': + $ref: '#/components/responses/forbidden' + '404': + $ref: '#/components/responses/not_found' + /v2/invites/{id}: + x-audience: public + parameters: + - in: path + name: id + required: true + schema: + type: string + delete: + summary: Cancel an invite + description: | + Mark the invite as cancelled so it doesn't show up on the list of pending invites + tags: + - invites + responses: + '204': + description: '' + '401': + $ref: '#/components/responses/unauthorized' + '403': + $ref: '#/components/responses/forbidden' + '404': + $ref: '#/components/responses/not_found' + /v2/invites/{id}/resend: + x-audience: public + parameters: + - in: path + name: id + schema: + type: string + required: true + patch: + summary: Resend an invite + description: | + Resend a pending invite to the user, any org owner can resend an invite + tags: + - invites + responses: + '204': + description: '' + '401': + $ref: '#/components/responses/unauthorized' + '403': + $ref: '#/components/responses/forbidden' + '404': + $ref: '#/components/responses/not_found' + /v2/invites/bulk: + x-audience: public + parameters: + - $ref: '#/components/parameters/bulk_invite' + post: + summary: Bulk create invites + description: | + Create multiple invites by emails or DockerIDs. Only a team owner can create invites. + tags: + - invites + requestBody: + $ref: '#/components/requestBodies/bulk_invite_request' + responses: + '202': + description: Accepted + content: + application/json: + schema: + type: object + properties: + invitees: + $ref: '#/components/schemas/bulk_invite' + '400': + $ref: '#/components/responses/bad_request' + '409': + $ref: '#/components/responses/conflict' /v2/scim/2.0/ServiceProviderConfig: + x-audience: public get: summary: Get service provider config description: | Returns a service provider config for Docker's configuration. - tags: [ scim ] + tags: + - scim security: - - bearerSCIMAuth: [ ] + - bearerSCIMAuth: [] responses: - 200: + '200': $ref: '#/components/responses/scim_get_service_provider_config_resp' - 401: - $ref: "#/components/responses/scim_unauthorized" - 500: - $ref: "#/components/responses/scim_error" - + '401': + $ref: '#/components/responses/scim_unauthorized' + '500': + $ref: '#/components/responses/scim_error' /v2/scim/2.0/ResourceTypes: + x-audience: public get: summary: List resource types description: | Returns all resource types supported for the SCIM configuration. - tags: [ scim ] + tags: + - scim security: - - bearerSCIMAuth: [ ] + - bearerSCIMAuth: [] responses: - 200: - $ref: "#/components/responses/scim_get_resource_types_resp" - 401: - $ref: "#/components/responses/scim_unauthorized" - 500: - $ref: "#/components/responses/scim_error" - + '200': + $ref: '#/components/responses/scim_get_resource_types_resp' + '401': + $ref: '#/components/responses/scim_unauthorized' + '500': + $ref: '#/components/responses/scim_error' /v2/scim/2.0/ResourceTypes/{name}: + x-audience: public get: summary: Get a resource type description: | Returns a resource type by name. - tags: [ scim ] + tags: + - scim parameters: - name: name in: path schema: type: string example: User + required: true security: - - bearerSCIMAuth: [ ] + - bearerSCIMAuth: [] responses: - 200: - $ref: "#/components/responses/scim_get_resource_type_resp" - 401: - $ref: "#/components/responses/scim_unauthorized" - 404: - $ref: "#/components/responses/scim_not_found" - 500: - $ref: "#/components/responses/scim_error" - + '200': + $ref: '#/components/responses/scim_get_resource_type_resp' + '401': + $ref: '#/components/responses/scim_unauthorized' + '404': + $ref: '#/components/responses/scim_not_found' + '500': + $ref: '#/components/responses/scim_error' /v2/scim/2.0/Schemas: + x-audience: public get: summary: List schemas description: | Returns all schemas supported for the SCIM configuration. - tags: [ scim ] + tags: + - scim security: - - bearerSCIMAuth: [ ] + - bearerSCIMAuth: [] responses: - 200: - $ref: "#/components/responses/scim_get_schemas_resp" - 401: - $ref: "#/components/responses/scim_unauthorized" - 500: - $ref: "#/components/responses/scim_error" - + '200': + $ref: '#/components/responses/scim_get_schemas_resp' + '401': + $ref: '#/components/responses/scim_unauthorized' + '500': + $ref: '#/components/responses/scim_error' /v2/scim/2.0/Schemas/{id}: + x-audience: public get: summary: Get a schema description: | Returns a schema by ID. - tags: [ scim ] + tags: + - scim parameters: - name: id in: path schema: type: string example: urn:ietf:params:scim:schemas:core:2.0:User + required: true security: - - bearerSCIMAuth: [ ] + - bearerSCIMAuth: [] responses: - 200: - $ref: "#/components/responses/scim_get_schema_resp" - 401: - $ref: "#/components/responses/scim_unauthorized" - 404: - $ref: "#/components/responses/scim_not_found" - 500: - $ref: "#/components/responses/scim_error" - + '200': + $ref: '#/components/responses/scim_get_schema_resp' + '401': + $ref: '#/components/responses/scim_unauthorized' + '404': + $ref: '#/components/responses/scim_not_found' + '500': + $ref: '#/components/responses/scim_error' /v2/scim/2.0/Users: + x-audience: public get: summary: List users description: | - List users, returns paginated users for an organization. Use `startIndex` - and `count` query parameters to receive paginated results. + Returns paginated users for an organization. Use `startIndex` and `count` query parameters to receive paginated results. + + **Sorting:** - **Sorting:**
- Sorting lets you specify the order of returned resources by specifying - a combination of `sortBy` and `sortOrder` query parameters. + Sorting allows you to specify the order in which resources are returned by specifying a combination of `sortBy` and `sortOrder` query parameters. - The `sortBy` parameter specifies the attribute whose value will be used - to order the returned responses. The `sortOrder` parameter defines the - order in which the `sortBy` parameter is applied. Allowed values are - "ascending" and "descending". + The `sortBy` parameter specifies the attribute whose value will be used to order the returned responses. The `sortOrder` parameter defines the order in which the `sortBy` parameter is applied. Allowed values are "ascending" and "descending". - **Filtering:**
- You can request a subset of resources by specifying the `filter` query - parameter containing a filter expression. Attribute names and attribute - operators used in filters are case insensitive. The filter parameter - must contain at least one valid expression. Each expression must contain - an attribute name followed by an attribute operator and an optional - value. + **Filtering:** + + You can request a subset of resources by specifying the `filter` query parameter containing a filter expression. Attribute names and attribute operators used in filters are case insensitive. The filter parameter must contain at least one valid expression. Each expression must contain an attribute name followed by an attribute operator and an optional value. Supported operators are listed below. @@ -759,16 +1257,17 @@ paths: - `or` Logical "or" - `not` "Not" function - `()` Precedence grouping - tags: [ scim ] + tags: + - scim security: - - bearerSCIMAuth: [ ] + - bearerSCIMAuth: [] parameters: - name: startIndex in: query schema: type: integer minimum: 1 - description: "" + description: '' example: 1 - name: count in: query @@ -776,15 +1275,15 @@ paths: type: integer minimum: 1 maximum: 200 - description: "" + description: '' example: 10 - name: filter in: query schema: type: string - description: "" + description: '' example: userName eq "jon.snow@docker.com" - - $ref: "#/components/parameters/scim_attributes" + - $ref: '#/components/parameters/scim_attributes' - name: sortOrder in: query schema: @@ -796,100 +1295,96 @@ paths: in: query schema: type: string - description: "User attribute to sort by." + description: User attribute to sort by. example: userName responses: - 200: - $ref: "#/components/responses/scim_get_users_resp" - 400: - $ref: "#/components/responses/scim_bad_request" - 401: - $ref: "#/components/responses/scim_unauthorized" - 403: - $ref: "#/components/responses/scim_forbidden" - 404: - $ref: "#/components/responses/scim_not_found" - 500: - $ref: "#/components/responses/scim_error" - + '200': + $ref: '#/components/responses/scim_get_users_resp' + '400': + $ref: '#/components/responses/scim_bad_request' + '401': + $ref: '#/components/responses/scim_unauthorized' + '403': + $ref: '#/components/responses/scim_forbidden' + '404': + $ref: '#/components/responses/scim_not_found' + '500': + $ref: '#/components/responses/scim_error' post: summary: Create user description: | - Creates a user. If the user already exists by email, they are assigned - to the organization on the "company" team. - tags: [ scim ] + Creates a user. If the user already exists by email, they are assigned to the organization on the "company" team. + tags: + - scim security: - - bearerSCIMAuth: [ ] + - bearerSCIMAuth: [] requestBody: - $ref: "#/components/requestBodies/scim_create_user_request" + $ref: '#/components/requestBodies/scim_create_user_request' responses: - 201: - $ref: "#/components/responses/scim_create_user_resp" - 400: - $ref: "#/components/responses/scim_bad_request" - 401: - $ref: "#/components/responses/scim_unauthorized" - 403: - $ref: "#/components/responses/scim_forbidden" - 404: - $ref: "#/components/responses/scim_not_found" - 409: - $ref: "#/components/responses/scim_conflict" - 500: - $ref: "#/components/responses/scim_error" - + '201': + $ref: '#/components/responses/scim_create_user_resp' + '400': + $ref: '#/components/responses/scim_bad_request' + '401': + $ref: '#/components/responses/scim_unauthorized' + '403': + $ref: '#/components/responses/scim_forbidden' + '404': + $ref: '#/components/responses/scim_not_found' + '409': + $ref: '#/components/responses/scim_conflict' + '500': + $ref: '#/components/responses/scim_error' /v2/scim/2.0/Users/{id}: + x-audience: public parameters: - - $ref: "#/components/parameters/scim_user_id" + - $ref: '#/components/parameters/scim_user_id' get: summary: Get a user description: | Returns a user by ID. - tags: [ scim ] + tags: + - scim security: - - bearerSCIMAuth: [ ] + - bearerSCIMAuth: [] responses: - 200: - $ref: "#/components/responses/scim_get_user_resp" - 400: - $ref: "#/components/responses/scim_bad_request" - 401: - $ref: "#/components/responses/scim_unauthorized" - 403: - $ref: "#/components/responses/scim_forbidden" - 404: - $ref: "#/components/responses/scim_not_found" - 500: - $ref: "#/components/responses/scim_error" + '200': + $ref: '#/components/responses/scim_get_user_resp' + '400': + $ref: '#/components/responses/scim_bad_request' + '401': + $ref: '#/components/responses/scim_unauthorized' + '403': + $ref: '#/components/responses/scim_forbidden' + '404': + $ref: '#/components/responses/scim_not_found' + '500': + $ref: '#/components/responses/scim_error' put: summary: Update a user description: | - Updates a user. Use this route to change the user's name, activate, - and deactivate the user. - tags: [ scim ] + Updates a user. This route is used to change the user's name, activate, and deactivate the user. + tags: + - scim security: - - bearerSCIMAuth: [ ] + - bearerSCIMAuth: [] requestBody: - $ref: "#/components/requestBodies/scim_update_user_request" + $ref: '#/components/requestBodies/scim_update_user_request' responses: - 200: - $ref: "#/components/responses/scim_update_user_resp" - 400: - $ref: "#/components/responses/scim_bad_request" - 401: - $ref: "#/components/responses/scim_unauthorized" - 403: - $ref: "#/components/responses/scim_forbidden" - 404: - $ref: "#/components/responses/scim_not_found" - 409: - $ref: "#/components/responses/scim_conflict" - 500: - $ref: "#/components/responses/scim_error" - - -servers: - - url: https://hub.docker.com/ + '200': + $ref: '#/components/responses/scim_update_user_resp' + '400': + $ref: '#/components/responses/scim_bad_request' + '401': + $ref: '#/components/responses/scim_unauthorized' + '403': + $ref: '#/components/responses/scim_forbidden' + '404': + $ref: '#/components/responses/scim_not_found' + '409': + $ref: '#/components/responses/scim_conflict' + '500': + $ref: '#/components/responses/scim_error' components: responses: BadRequest: @@ -897,100 +1392,144 @@ components: content: application/json: schema: - $ref: "#/components/schemas/ValueError" + $ref: '#/components/schemas/ValueError' Unauthorized: description: Unauthorized content: application/json: schema: - $ref: "#/components/schemas/Error" + $ref: '#/components/schemas/Error' Forbidden: description: Forbidden content: application/json: schema: - $ref: "#/components/schemas/Error" + $ref: '#/components/schemas/Error' NotFound: description: Not Found content: application/json: schema: - $ref: "#/components/schemas/Error" - + $ref: '#/components/schemas/Error' + list_tags: + description: list repository tags + content: + application/json: + schema: + $ref: '#/components/schemas/paginated_tags' + get_tag: + description: repository tag + content: + application/json: + schema: + $ref: '#/components/schemas/tag' + bad_request: + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/error' + unauthorized: + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/error' + forbidden: + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/error' + not_found: + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/error' + conflict: + description: Conflict + content: + application/json: + schema: + $ref: '#/components/schemas/error' + internal_error: + description: Internal + content: + application/json: + schema: + $ref: '#/components/schemas/error' scim_bad_request: description: Bad Request content: application/scim+json: schema: allOf: - - $ref: "#/components/schemas/scim_error" + - $ref: '#/components/schemas/scim_error' - properties: status: - example: "400" + example: '400' scimType: type: string - description: Some types of errors will return this per the - specification. + description: Some types of errors will return this per the specification. scim_unauthorized: description: Unauthorized content: application/scim+json: schema: allOf: - - $ref: "#/components/schemas/scim_error" + - $ref: '#/components/schemas/scim_error' - properties: status: - example: "401" + example: '401' scim_forbidden: description: Forbidden content: application/scim+json: schema: allOf: - - $ref: "#/components/schemas/scim_error" + - $ref: '#/components/schemas/scim_error' - properties: status: - example: "403" + example: '403' scim_not_found: description: Not Found content: application/scim+json: schema: allOf: - - $ref: "#/components/schemas/scim_error" + - $ref: '#/components/schemas/scim_error' - properties: status: - example: "404" + example: '404' scim_conflict: description: Conflict content: application/scim+json: schema: allOf: - - $ref: "#/components/schemas/scim_error" + - $ref: '#/components/schemas/scim_error' - properties: status: - example: "409" + example: '409' scim_error: description: Internal Error content: application/scim+json: schema: allOf: - - $ref: "#/components/schemas/scim_error" + - $ref: '#/components/schemas/scim_error' - properties: status: - example: "500" - + example: '500' scim_get_service_provider_config_resp: - description: "" + description: '' content: application/scim+json: schema: - $ref: "#/components/schemas/scim_service_provider_config" - + $ref: '#/components/schemas/scim_service_provider_config' scim_get_resource_types_resp: - description: "" + description: '' content: application/scim+json: schema: @@ -1000,24 +1539,22 @@ components: type: array items: type: string - example: [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ] + example: urn:ietf:params:scim:api:messages:2.0:ListResponse totalResults: type: integer example: 1 resources: type: array items: - $ref: "#/components/schemas/scim_resource_type" - + $ref: '#/components/schemas/scim_resource_type' scim_get_resource_type_resp: - description: "" + description: '' content: application/scim+json: schema: - $ref: "#/components/schemas/scim_resource_type" - + $ref: '#/components/schemas/scim_resource_type' scim_get_schemas_resp: - description: "" + description: '' content: application/scim+json: schema: @@ -1027,24 +1564,22 @@ components: type: array items: type: string - example: [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ] + example: urn:ietf:params:scim:api:messages:2.0:ListResponse totalResults: type: integer example: 1 resources: type: array items: - $ref: "#/components/schemas/scim_schema" - + $ref: '#/components/schemas/scim_schema' scim_get_schema_resp: - description: "" + description: '' content: application/scim+json: schema: - $ref: "#/components/schemas/scim_schema" - + $ref: '#/components/schemas/scim_schema' scim_get_users_resp: - description: "" + description: '' content: application/scim+json: schema: @@ -1054,7 +1589,8 @@ components: type: array items: type: string - example: [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ] + example: + - urn:ietf:params:scim:api:messages:2.0:ListResponse totalResults: type: integer example: 1 @@ -1067,43 +1603,25 @@ components: resources: type: array items: - $ref: "#/components/schemas/scim_user" - + $ref: '#/components/schemas/scim_user' scim_create_user_resp: - description: "" + description: '' content: application/scim+json: schema: - $ref: "#/components/schemas/scim_user" - + $ref: '#/components/schemas/scim_user' scim_get_user_resp: - description: "" + description: '' content: application/scim+json: schema: - $ref: "#/components/schemas/scim_user" - + $ref: '#/components/schemas/scim_user' scim_update_user_resp: - description: "" + description: '' content: application/scim+json: schema: - $ref: "#/components/schemas/scim_user" - - list_tags: - description: "list repository tags" - content: - application/json: - schema: - $ref: "#/components/schemas/paginated_tags" - - get_tag: - description: "repository tag" - content: - application/json: - schema: - $ref: "#/components/schemas/tag" - + $ref: '#/components/schemas/scim_user' schemas: UsersLoginRequest: description: User login details @@ -1117,11 +1635,10 @@ components: type: string example: myusername password: - description: - The password or personal access token (PAT) of the Docker Hub - account to authenticate with. + description: | + The password or personal access token (PAT) of the Docker Hub account to authenticate with. type: string - example: hunter2 + example: p@ssw0rd PostUsersLoginSuccessResponse: description: successful user login response type: object @@ -1129,7 +1646,6 @@ components: token: description: | Created authentication token. - This token can be used in the HTTP Authorization header as a JWT to authenticate with the Docker Hub APIs. type: string example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c @@ -1146,10 +1662,8 @@ components: example: Incorrect authentication credentials nullable: false login_2fa_token: - description: - Short time lived token to be used on `/v2/users/2fa-login` to - complete the authentication. This field is present only if 2FA is - enabled. + description: | + Short time lived token to be used on `/v2/users/2fa-login` to complete the authentication. This field is present only if 2FA is enabled. type: string example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c nullable: true @@ -1165,9 +1679,8 @@ components: type: string example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c code: - description: - The Time-based One-Time Password of the Docker Hub account to - authenticate with. + description: | + The Time-based One-Time Password of the Docker Hub account to authenticate with. type: string example: 123456 PostUsers2FALoginErrorResponse: @@ -1179,369 +1692,6 @@ components: type: string example: Incorrect authentication credentials nullable: false - ErrorInfo: - description: Context information for an error used for diagnostics. - type: object - properties: - api_call_docker_id: - description: ID of docker user. - type: string - api_call_name: - description: Name of the API operation called. - type: string - api_call_start: - description: Date/time of call start. - type: string - api_call_txnid: - description: Unique ID for this call. - type: string - ErrorResponse: - description: Represents an error. - type: object - properties: - txnid: - description: Unique ID for this call. - type: string - message: - description: The error message. - type: string - errinfo: - $ref: "#/components/schemas/ErrorInfo" - ErrorDetail: - description: Error with a detail field. - type: object - properties: - detail: - description: The error message. - type: string - GetNamespaceRepositoryImagesSummaryResponse: - description: Summary information for images in a repository. - type: object - properties: - active_from: - description: - Time from which an image must have been pushed or pulled to be - counted as active. - type: string - example: 2021-01-25T14:25:37.076343059Z - statistics: - type: object - properties: - total: - description: Number of images in this repository. - type: integer - example: 3 - active: - description: Number of images counted as active in this repository. - type: integer - example: 2 - inactive: - description: Number of images counted as inactive in this repository. - type: integer - example: 1 - GetNamespaceRepositoryImagesResponse: - description: Paginated list of images in a repository. - type: object - properties: - count: - description: Total count of images in the repository. - type: integer - example: 100 - next: - description: - Link to the next page with the same query parameters if there are - more images. - type: string - example: https://hub.docker.com/v2/namespaces/mynamespace/repositories/myrepo/images?&page=4&page_size=20 - nullable: true - previous: - description: - Link to the previous page with the same query parameters if not on - first page. - type: string - example: https://hub.docker.com/v2/namespaces/mynamespace/repositories/myrepo/images?&page=2&page_size=20 - nullable: true - results: - type: array - description: Image details. - items: - type: object - properties: - namespace: - description: The repository namespace. - type: string - example: mynamespace - repository: - description: The repository name. - type: string - example: myrepo - digest: - description: The image's digest. - type: string - example: sha256:1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqr - tags: - description: The current and historical tags for this image. - type: array - items: - type: object - properties: - tag: - description: The tag. - type: string - example: latest - is_current: - description: | - `true` if the tag currently points to this image. - - `false` if it has been overwritten to point at a different image. - type: boolean - example: true - last_pushed: - description: Time when this image was last pushed. - type: string - example: 2021-02-24T22:05:27.526308Z - nullable: true - last_pulled: - description: - Time when this image was last pulled. Note this is updated at - most once per hour. - type: string - example: 2021-02-24T23:16:10.200008Z - nullable: true - status: - description: - The status of the image based on its last activity against the - `active_from` time. - type: string - enum: - - active - - inactive - example: active - GetNamespaceRepositoryImagesTagsResponse: - description: Paginated list of tags for this repository. - type: object - properties: - count: - description: Total count of tags for this image. - type: integer - example: 100 - next: - description: Link to the next page if there are more tags. - type: string - example: https://hub.docker.com/v2/namespaces/mynamespace/repositories/myrepo/images/sha256:mydigest/tags?&page=4&page_size=20 - nullable: true - previous: - description: Link to the previous page if not on first page. - type: string - example: https://hub.docker.com/v2/namespaces/mynamespace/repositories/myrepo/images/sha256:mydigest/tags?&page=2&page_size=20 - nullable: true - results: - description: The current and historical tags for this image. - type: array - items: - type: object - properties: - tag: - description: The tag. - type: string - example: latest - is_current: - description: | - `true` if the tag currently points to this image. - - `false` if it has been overwritten to point at a different image. - type: boolean - example: true - PostNamespacesDeleteImagesRequest: - description: Delete images request. - type: object - properties: - dry_run: - description: - If `true` then will check and return errors and unignored warnings - for the deletion request but will not delete any images. - type: boolean - example: false - active_from: - description: | - Sets the time from which an image must have been pushed or pulled to - be counted as active. - - Defaults to 1 month before the current time. - type: string - example: 2020-12-01T12:00:00Z - manifests: - description: Image manifests to delete. - type: array - items: - type: object - required: - - repository - - digest - properties: - repository: - description: Name of the repository to delete the image from. - type: string - example: myrepo - digest: - description: Digest of the image to delete. - type: string - example: sha256:1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqr - ignore_warnings: - description: | - Warnings to ignore. If a warning is not ignored then no deletions will happen and the - warning is returned in the response. - - These warnings include: - - - is_active: warning when attempting to delete an image that is marked as active. - - current_tag: warning when attempting to delete an image that has one or more current - tags in the repository. - - Warnings can be copied from the response to the request. - type: array - items: - type: object - required: - - repository - - digest - - warning - properties: - repository: - description: Name of the repository of the image to ignore the warning for. - type: string - example: myrepo - digest: - description: Digest of the image to ignore the warning for. - type: string - example: sha256:1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqr - warning: - description: Warning to ignore. - type: string - enum: - - is_active - - current_tag - example: current_tag - tags: - description: Current tags to ignore. - type: array - items: - type: string - example: latest - PostNamespacesDeleteImagesResponseSuccess: - description: Successful delete images response. - type: object - properties: - dry_run: - description: Whether the request was a dry run or not. - type: boolean - example: false - metrics: - type: object - properties: - manifest_deletes: - description: Number of manifests deleted. - type: integer - example: 3 - manifest_errors: - description: Number of manifests that failed to delete. - type: integer - example: 0 - tag_deletes: - description: Number of tags deleted. - type: integer - example: 1 - tag_errors: - description: Number of tags that failed to delete. - type: integer - example: 0 - PostNamespacesDeleteImagesResponseError: - description: Deletion not possible. - type: object - properties: - txnid: - description: Unique ID for this call. - type: string - message: - description: The error message. - type: string - errinfo: - allOf: - - $ref: "#/components/schemas/ErrorInfo" - - type: object - properties: - type: - description: Type of error. - type: string - example: validation - details: - type: object - properties: - errors: - description: - Errors from validating delete request. These cannot be - ignored. - type: array - items: - type: object - properties: - repository: - description: - Name of the repository of the image that caused - the error. - type: string - example: myrepo - digest: - description: Digest of the image that caused the error. - type: string - example: sha256:1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqr - error: - description: Error type. - type: string - enum: - - not_found - - unauthorized - - child_manifest - example: not_found - warnings: - description: | - Warnings that can be ignored. - - These warnings include: - - - is_active: warning when attempting to delete an image that is marked as - active. - - current_tag: warning when attempting to delete an image that has one or - more current tags in the repository. - - Warnings can be copied from the response to the request. - type: array - items: - type: object - properties: - repository: - description: - Name of the repository of the image that caused - the warning. - type: string - example: myrepo - digest: - description: Digest of the image that caused the warning. - type: string - example: sha256:1234567890abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqr - warning: - description: Warning type. - type: string - enum: - - is_active - - current_tag - example: current_tag - tags: - description: Current tags if warning is `current_tag`. - type: array - items: - type: string - example: latest protobufAny: type: object properties: @@ -1561,7 +1711,7 @@ components: details: type: array items: - $ref: "#/components/schemas/protobufAny" + $ref: '#/components/schemas/protobufAny' AuditLogAction: type: object properties: @@ -1581,7 +1731,7 @@ components: actions: type: array items: - $ref: "#/components/schemas/AuditLogAction" + $ref: '#/components/schemas/AuditLogAction' description: List of audit log actions. label: type: string @@ -1592,7 +1742,7 @@ components: actions: type: object additionalProperties: - $ref: "#/components/schemas/AuditLogActions" + $ref: '#/components/schemas/AuditLogActions' description: Map of audit log actions. description: GetAuditActions response. GetAuditLogsResponse: @@ -1601,7 +1751,7 @@ components: logs: type: array items: - $ref: "#/components/schemas/AuditLog" + $ref: '#/components/schemas/AuditLog' description: List of audit log events. description: GetAuditLogs response. AuditLog: @@ -1659,7 +1809,7 @@ components: example: some user agent created_at: type: string - example: 2021-07-20T12:00:00.000000Z + example: '2021-07-20T12:00:00.000000Z' last_used: type: string example: null @@ -1703,7 +1853,7 @@ components: items: type: string createAccessTokensResponse: - $ref: "#/components/schemas/accessToken" + $ref: '#/components/schemas/accessToken' getAccessTokensResponse: type: object properties: @@ -1723,12 +1873,12 @@ components: type: array items: allOf: - - $ref: "#/components/schemas/accessToken" + - $ref: '#/components/schemas/accessToken' - type: object properties: token: type: string - example: "" + example: '' patchAccessTokenRequest: type: object properties: @@ -1741,12 +1891,12 @@ components: type: boolean example: false patchAccessTokenResponse: - $ref: "#/components/schemas/accessToken" + $ref: '#/components/schemas/accessToken' orgSettings: type: object properties: restricted_images: - $ref: "#/components/schemas/restricted_images" + $ref: '#/components/schemas/restricted_images' restricted_images: type: object properties: @@ -1767,29 +1917,29 @@ components: properties: digest: type: string - description: "image layer digest" + description: image layer digest nullable: true size: type: integer - description: "size of the layer" + description: size of the layer instruction: type: string - description: "Dockerfile instruction" + description: Dockerfile instruction image: type: object properties: architecture: type: string - description: "CPU architecture" + description: CPU architecture features: type: string - description: "CPU features" + description: CPU features variant: type: string - description: "CPU variant" + description: CPU variant digest: type: string - description: "image digest" + description: image digest nullable: true layers: type: array @@ -1797,80 +1947,83 @@ components: $ref: '#/components/schemas/layer' os: type: string - description: "operating system" + description: operating system os_features: type: string - description: "OS features" + description: OS features os_version: type: string - description: "OS version" + description: OS version size: type: integer - description: "size of the image" + description: size of the image status: type: string - enum: ["active", "inactive"] - description: "Status of the image" + enum: + - active + - inactive + description: Status of the image last_pulled: type: string - example: "2021-01-05T21:06:53.506400Z" - description: "datetime of last pull" + example: '2021-01-05T21:06:53.506400Z' + description: datetime of last pull nullable: true last_pushed: type: string - example: "2021-01-05T21:06:53.506400Z" - description: "datetime of last push" + example: '2021-01-05T21:06:53.506400Z' + description: datetime of last push nullable: true tag: type: object properties: id: type: integer - description: "tag ID" + description: tag ID images: type: object $ref: '#/components/schemas/image' creator: type: integer - description: "ID of the user that pushed the tag" + description: ID of the user that pushed the tag last_updated: type: string - example: "2021-01-05T21:06:53.506400Z" - description: "datetime of last update" + example: '2021-01-05T21:06:53.506400Z' + description: datetime of last update nullable: true last_updater: type: integer - description: "ID of the last user that updated the tag" + description: ID of the last user that updated the tag last_updater_username: type: string - description: "Hub username of the user that updated the tag" + description: Hub username of the user that updated the tag name: type: string - description: "name of the tag" + description: name of the tag repository: type: integer - description: "repository ID" + description: repository ID full_size: type: integer - description: "compressed size (sum of all layers) of the tagged image" + description: compressed size (sum of all layers) of the tagged image v2: type: string - description: "repository API version" + description: repository API version status: type: string - enum: ["active", "inactive"] - description: "whether a tag has been pushed to or pulled in the past month" + enum: + - active + - inactive + description: whether a tag has been pushed to or pulled in the past month tag_last_pulled: type: string - example: "2021-01-05T21:06:53.506400Z" - description: "datetime of last pull" + example: '2021-01-05T21:06:53.506400Z' + description: datetime of last pull nullable: true tag_last_pushed: type: string - example: "2021-01-05T21:06:53.506400Z" - description: "datetime of last push" + example: '2021-01-05T21:06:53.506400Z' + description: datetime of last push nullable: true - paginated_tags: allOf: - $ref: '#/components/schemas/page' @@ -1894,7 +2047,118 @@ components: type: string description: link to previous page of results if any nullable: true - + scim_schema_attribute: + type: object + properties: + name: + type: string + example: userName + type: + enum: + - string + - boolean + - complex + type: string + example: string + multiValued: + type: boolean + example: false + description: + type: string + example: Unique identifier for the User, typically used by the user to directly authenticate to the service provider. Each User MUST include a non-empty userName value. This identifier MUST be unique across the service provider's entire set of Users. + required: + type: boolean + example: true + caseExact: + type: boolean + example: false + mutability: + type: string + example: readWrite + returned: + type: string + example: default + uniqueness: + type: string + example: server + scim_schema_parent_attribute: + allOf: + - $ref: '#/components/schemas/scim_schema_attribute' + - type: object + properties: + subAttributes: + type: array + items: + $ref: '#/components/schemas/scim_schema_attribute' + invite: + type: object + properties: + id: + type: string + description: uuid representing the invite id + example: e36eca69-4cc8-4f17-9845-ae8c2b832691 + inviter_username: + type: string + example: moby + invitee: + type: string + description: can either be a dockerID for registred users or an email for non-registred users + example: invitee@docker.com + org: + type: string + description: name of the org to join + example: docker + team: + type: string + description: name of the team (user group) to join + example: owners + created_at: + type: string + example: '2021-10-28T18:30:19.520861Z' + bulk_invite: + type: object + properties: + invitees: + type: array + description: A list of invitees + items: + type: object + properties: + invitee: + type: string + description: invitee email or Docker ID + status: + type: string + description: status of the invite or validation error + invite: + description: Invite data if successfully invited + $ref: '#/components/schemas/invite' + example: + invitees: + - invitee: invitee@docker.com + status: invited + invite: + id: e36eca69-4cc8-4f17-9845-ae8c2b832691 + inviter_username: moby + invitee: invitee@docker.com + org: docker + team: owners + created_at: '2021-10-28T18:30:19.520861Z' + - invitee: invitee2@docker.com + status: existing_org_member + - invitee: invitee3@docker.com + status: invalid_email_or_docker_id + error: + type: object + properties: + errinfo: + type: object + items: + type: string + detail: + type: string + message: + type: string scim_error: type: object properties: @@ -1909,7 +2173,180 @@ components: detail: type: string description: Details about why the request failed. - + user: + type: object + properties: + id: + type: string + example: 0ab70deb065a43fcacd55d48caa945d8 + description: The UUID trimmed + company: + type: string + example: Docker Inc + date_joined: + type: string + example: '2021-01-05T21:06:53.506400Z' + full_name: + type: string + example: Jon Snow + gravatar_email: + type: string + gravatar_url: + type: string + location: + type: string + profile_url: + type: string + type: + type: string + enum: + - User + - Org + example: User + username: + type: string + example: dockeruser + org_member: + allOf: + - $ref: '#/components/schemas/user' + properties: + email: + type: string + description: User's email address + example: example@docker.com + role: + type: string + description: User's role in the Organization + enum: + - Owner + - Member + - Invitee + example: Owner + groups: + type: array + description: Groups (Teams) that the user is member of + items: + type: string + example: + - developers + - owners + is_guest: + type: boolean + description: If the organization has verfied domains, members that have email addresses outside of those domains will be flagged as Guest member + example: false + primary_email: + type: string + description: User's email primary address + example: example@docker.com + deprecated: true + org_member_paginated: + type: object + properties: + count: + type: number + description: The total number of items that match with the search. + example: 120 + previous: + type: string + description: The URL or link for the previous page of items. + example: https://hub.docker.com/v2/some/resources/items?page=1&page_size=20 + next: + type: string + description: The URL or link for the next page of items. + example: https://hub.docker.com/v2/some/resources/items?page=3&page_size=20 + results: + type: array + description: List of accounts. + items: + $ref: '#/components/schemas/org_member' + org_group: + type: object + properties: + id: + type: number + example: 10 + description: Group ID + uuid: + type: string + description: UUID for the group + name: + type: string + example: mygroup + description: Name of the group + description: + type: string + example: Groups description + description: Description of the group + member_count: + type: number + example: 10 + description: Member count of the group + group_member: + type: object + properties: + id: + type: string + example: 0ab70deb065a43fcacd55d48caa945d8 + description: The UUID trimmed + company: + type: string + example: Docker Inc + date_joined: + type: string + example: '2021-01-05T21:06:53.506400Z' + full_name: + type: string + example: John Snow + gravatar_email: + type: string + gravatar_url: + type: string + location: + type: string + profile_url: + type: string + type: + type: string + enum: + - User + - Org + example: User + username: + type: string + example: dockeruser + email: + type: string + example: dockeruser@docker.com + email_address: + type: object + properties: + id: + type: number + user_id: + type: number + email: + type: string + example: dockeruser@docker.com + verified: + type: boolean + primary: + type: boolean + legacy_email_address: + allOf: + - $ref: '#/components/schemas/email_address' + - type: object + properties: + user: + type: string + example: dockeruser + email_with_username: + allOf: + - $ref: '#/components/schemas/email_address' + - type: object + properties: + username: + type: string + example: dockeruser scim_service_provider_config: type: object properties: @@ -1917,10 +2354,11 @@ components: type: array items: type: string - example: [ "urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig" ] + example: + - urn:ietf:params:scim:schemas:core:2.0:ServiceProviderConfig documentationUri: type: string - example: "" + example: '' patch: properties: supported: @@ -1974,11 +2412,10 @@ components: example: The OAuth 2.0 Bearer Token Authentication scheme. OAuth enables clients to access protected resources by obtaining an access token, which is defined in RFC 6750 as "a string representing an access authorization issued to the client", rather than using the resource owner's credentials directly. specUri: type: string - example: "http://tools.ietf.org/html/rfc6750" + example: http://tools.ietf.org/html/rfc6750 type: type: string example: oauthbearertoken - scim_resource_type: type: object properties: @@ -1986,7 +2423,8 @@ components: type: array items: type: string - example: "urn:ietf:params:scim:schemas:core:2.0:ResourceType" + example: + - urn:ietf:params:scim:schemas:core:2.0:ResourceType id: type: string example: User @@ -1998,57 +2436,10 @@ components: example: User endpoint: type: string - example: "/Users" + example: /Users schema: type: string - example: "urn:ietf:params:scim:schemas:core:2.0:User" - - scim_schema_attribute: - type: object - properties: - name: - type: string - example: userName - type: - enum: - - string - - boolean - - complex - type: string - example: string - multiValued: - type: boolean - example: false - description: - type: string - example: Unique identifier for the User, typically used by the user to directly authenticate to the service provider. Each User MUST include a non-empty userName value. This identifier MUST be unique across the service provider's entire set of Users. - required: - type: boolean - example: true - caseExact: - type: boolean - example: false - mutability: - type: string - example: readWrite - returned: - type: string - example: default - uniqueness: - type: string - example: server - - - scim_schema_parent_attribute: - allOf: - - $ref: "#/components/schemas/scim_schema_attribute" - - type: object - properties: - subAttributes: - type: array - items: - $ref: "#/components/schemas/scim_schema_attribute" - + example: urn:ietf:params:scim:schemas:core:2.0:User scim_schema: type: object properties: @@ -2056,7 +2447,8 @@ components: type: array items: type: string - example: [ "urn:ietf:params:scim:schemas:core:2.0:Schema" ] + example: + - urn:ietf:params:scim:schemas:core:2.0:Schema id: type: string example: urn:ietf:params:scim:schemas:core:2.0:User @@ -2068,10 +2460,9 @@ components: example: User Account attributes: type: array - example: [ ] + example: [] items: - $ref: "#/components/schemas/scim_schema_parent_attribute" - + $ref: '#/components/schemas/scim_schema_parent_attribute' scim_email: type: object properties: @@ -2084,22 +2475,19 @@ components: primary: type: boolean example: true - scim_group: type: object properties: value: type: string - example: "nightswatch" + example: nightswatch display: type: string - example: "nightswatch" - + example: nightswatch scim_user_username: type: string description: The user's email address. This must be reachable via email. example: jon.snow@docker.com - scim_user_name: type: object properties: @@ -2109,48 +2497,44 @@ components: familyName: type: string example: Snow - scim_user_display_name: type: string description: The username in Docker. Also known as the "Docker ID". example: jonsnow - scim_user_schemas: type: array items: type: string - example: "urn:ietf:params:scim:schemas:core:2.0:User" + example: urn:ietf:params:scim:schemas:core:2.0:User minItems: 1 - scim_user_id: type: string example: d80f7c79-7730-49d8-9a41-7c42fb622d9c description: The unique identifier for the user. A v4 UUID. - scim_user: type: object properties: schemas: - $ref: "#/components/schemas/scim_user_schemas" + $ref: '#/components/schemas/scim_user_schemas' id: - $ref: "#/components/schemas/scim_user_id" + $ref: '#/components/schemas/scim_user_id' userName: - $ref: "#/components/schemas/scim_user_username" + $ref: '#/components/schemas/scim_user_username' name: - $ref: "#/components/schemas/scim_user_name" + $ref: '#/components/schemas/scim_user_name' displayName: - $ref: "#/components/schemas/scim_user_display_name" + $ref: '#/components/schemas/scim_user_display_name' active: type: boolean example: true emails: type: array items: - $ref: "#/components/schemas/scim_email" + $ref: '#/components/schemas/scim_email' groups: type: array items: - $ref: "#/components/schemas/scim_group" + $ref: '#/components/schemas/scim_group' meta: type: object properties: @@ -2162,31 +2546,13 @@ components: example: https://hub.docker.com/v2/scim/2.0/Users/d80f7c79-7730-49d8-9a41-7c42fb622d9c created: type: string - description: The creation date for the user as a RFC3339 formatted - string. - example: 2022-05-20T00:54:18Z + description: The creation date for the user as a RFC3339 formatted string. + example: '2022-05-20T00:54:18Z' lastModified: type: string - description: The date the user was last modified as a RFC3339 - formatted string. - example: 2022-05-20T00:54:18Z - + description: The date the user was last modified as a RFC3339 formatted string. + example: '2022-05-20T00:54:18Z' parameters: - scim_attributes: - in: query - name: attributes - schema: - type: string - description: Comma delimited list of attributes to limit to in the - response. - example: userName,displayName - scim_user_id: - name: id - in: path - schema: - type: string - description: The user ID. - example: "d80f7c79-7730-49d8-9a41-7c42fb622d9c" namespace: in: path name: namespace @@ -2205,22 +2571,132 @@ components: required: true schema: type: string + org_name: + in: path + name: org_name + description: Name of the organization (namespace). + schema: + type: string + example: myorganization + required: true + group_name: + in: path + name: group_name + description: Name of the group (team) in the organization. + schema: + type: string + example: developers + required: true + username: + in: path + name: username + description: Username, identifier for the user (namespace, DockerID). + schema: + type: string + example: jonsnow + required: true page: in: query name: page - required: false + description: Page number (starts on 1). schema: type: integer - description: "Page number to get. Defaults to 1." page_size: in: query name: page_size - required: false + description: Number of items (rows) per page. schema: type: integer - description: "Number of items to get per page. Defaults to 10. Max of 100." - + invites: + in: query + name: invites + description: Include invites in the response. + schema: + type: boolean + search: + in: query + name: search + schema: + type: integer + description: Search term. + scim_attributes: + in: query + name: attributes + schema: + type: string + description: Comma delimited list of attributes to limit to in the response. + example: userName,displayName + scim_user_id: + name: id + in: path + schema: + type: string + description: The user ID. + example: d80f7c79-7730-49d8-9a41-7c42fb622d9c + required: true + type: + in: query + name: type + schema: + type: string + enum: + - all + - invitee + - member + example: all + role: + in: query + name: role + schema: + type: string + enum: + - owner + - editor + - member + example: owner + bulk_invite: + in: header + name: X-Analytics-Client-Feature + description: Optional string that indicates the feature used to submit the bulk invites (e.g.'file', 'web') + schema: + type: string requestBodies: + bulk_invite_request: + required: true + content: + application/json: + schema: + type: object + required: + - org + - invitees + properties: + org: + type: string + description: organization name + example: docker + team: + type: string + description: team name + example: owners + role: + type: string + description: role for invitees + example: member + invitees: + type: array + description: list of invitees emails or Docker Ids + items: + type: string + description: invitee email or Docker ID + example: + - invitee1DockerId + - invitee2@docker.com + - invitee3@docker.com + dry_run: + type: boolean + description: Optional, run through validation but don't actually change data. + example: true scim_create_user_request: required: true content: @@ -2232,12 +2708,11 @@ components: - userName properties: schemas: - $ref: "#/components/schemas/scim_user_schemas" + $ref: '#/components/schemas/scim_user_schemas' userName: - $ref: "#/components/schemas/scim_user_username" + $ref: '#/components/schemas/scim_user_username' name: - $ref: "#/components/schemas/scim_user_name" - + $ref: '#/components/schemas/scim_user_name' scim_update_user_request: required: true content: @@ -2248,15 +2723,41 @@ components: - schemas properties: schemas: - $ref: "#/components/schemas/scim_user_schemas" + $ref: '#/components/schemas/scim_user_schemas' name: allOf: - - $ref: "#/components/schemas/scim_user_name" - - description: If this is omitted from the request, the - update will skip the update on it. We will only ever - change the name, but not clear it. + - $ref: '#/components/schemas/scim_user_name' + - description: If this is omitted from the request, the update will skip the update on it. We will only ever change the name, but not clear it. enabled: type: boolean default: false - description: If this is omitted from the request, it will - default to false resulting in a deactivated user. + description: If this is omitted from the request, it will default to false resulting in a deactivated user. + add_member_to_org_group: + required: true + content: + application/json: + schema: + type: object + required: + - member + properties: + member: + type: string + example: jonsnow +x-tagGroups: + - name: General + tags: + - resources + - rate-limiting + - name: API + tags: + - authentication + - access-tokens + - images + - audit-logs + - org-settings + - repositories + - scim + - orgs + - groups + - invites diff --git a/content/reference/compose-file/develop.md b/content/reference/compose-file/develop.md index 1e48a00ff290..d08ad90a31d7 100644 --- a/content/reference/compose-file/develop.md +++ b/content/reference/compose-file/develop.md @@ -56,10 +56,36 @@ Compose to monitor source code for changes. For more information, see [Use Compo `action` defines the action to take when changes are detected. If `action` is set to: - `rebuild`, Compose rebuilds the service image based on the `build` section and recreates the service with the updated image. +- `restart`, Compose restarts the service container. Available with Docker Compose version 2.32.0 and later. - `sync`, Compose keeps the existing service container(s) running, but synchronizes source files with container content according to the `target` attribute. -- `sync+restart`, Compose synchronizes source files with container content according to the `target` attribute, and then restarts the container. +- `sync+restart`, Compose synchronizes source files with container content according to the `target` attribute, and then restarts the container. Available with Docker Compose version 2.23.0 and later. +- `sync+exec`, Compose synchronizes source files with container content according to the `target` attribute, and then executes a command inside the container. Available with Docker Compose version 2.32.0 and later. -> `sync+restart` attribute is available with Docker Compose version 2.23.0 and later. +#### exec + +{{< introduced compose 2.23.2 "/manuals/compose/releases/release-notes.md#2232" >}} + +`exec` is only relevant when `action` is set to `sync+exec`. Like [service hooks](services.md#post_start), `exec` is used to define the command to be run inside the container once it has started. + +- `command`: Specifies the command to run once the container starts. This attribute is required, and you can choose to use either the shell form or the exec form. +- `user`: The user to run the command. If not set, the command is run with the same user as the main service command. +- `privileged`: Lets the command run with privileged access. +- `working_dir`: The working directory in which to run the command. If not set, it is run in the same working directory as the main service command. +- `environment`: Sets the environment variables to run the command. While the command inherits the environment variables defined for the service’s main command, this section lets you add new variables or override existing ones. + +```yaml +services: + frontend: + image: ... + develop: + watch: + # sync content then run command to reload service without interruption + - path: ./etc/config + action: sync+exec + target: /etc/config/ + exec: + command: app reload +``` #### ignore diff --git a/content/reference/compose-file/services.md b/content/reference/compose-file/services.md index 90999a93bf90..73ec17d5ce9f 100644 --- a/content/reference/compose-file/services.md +++ b/content/reference/compose-file/services.md @@ -1152,6 +1152,27 @@ Compose creates containers with canonical labels: The `com.docker.compose` label prefix is reserved. Specifying labels with this prefix in the Compose file results in a runtime error. +### label_file + +{{< introduced compose 2.23.2 "/manuals/compose/releases/release-notes.md#2232" >}} + +The `label_file` attribute lets you load labels for a service from an external file or a list of files. This provides a convenient way to manage multiple labels without cluttering the Compose file. + +The file uses a key-value format, similar to `env_file`. You can specify multiple files as a list. When using multiple files, they are processed in the order they appear in the list. If the same label is defined in multiple files, the value from the last file in the list overrides earlier ones. + +```yaml +services: + one: + label_file: ./app.labels + + two: + label_file: + - ./app.labels + - ./additional.labels +``` + +If a label is defined in both the `label_file` and the `labels` attribute, the value in [`labels](#labels) takes precedence. + ### links `links` defines a network link to containers in another service. Either specify both the service name and diff --git a/go.mod b/go.mod index 9f2ade109a47..752e39197d32 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.23.1 require ( github.com/docker/buildx v0.19.2 // indirect github.com/docker/cli v27.4.0+incompatible // indirect - github.com/docker/compose/v2 v2.31.0 // indirect + github.com/docker/compose/v2 v2.32.0 // indirect github.com/docker/scout-cli v1.15.0 // indirect github.com/moby/buildkit v0.18.0 // indirect github.com/moby/moby v27.4.0+incompatible // indirect diff --git a/hugo.yaml b/hugo.yaml index 9ef72604c382..56a269f10a18 100644 --- a/hugo.yaml +++ b/hugo.yaml @@ -109,7 +109,7 @@ params: latest_engine_api_version: "1.47" docker_ce_version: "27.4.0" docker_ce_version_prev: "27.3.1" - compose_version: "v2.30.3" + compose_version: "v2.32.0" compose_file_v3: "3.8" compose_file_v2: "2.4" buildkit_version: "0.16.0"