From e9cc83194728437799f032f658170dc3b54095ed Mon Sep 17 00:00:00 2001 From: David Karlsson <35727626+dvdksn@users.noreply.github.com> Date: Tue, 29 Oct 2024 15:15:39 +0100 Subject: [PATCH 01/12] guides: add docker+zscaler guide Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- _vale/config/vocabularies/Docker/accept.txt | 2 + content/guides/zscaler/index.md | 141 ++++++++++++++++++++ 2 files changed, 143 insertions(+) create mode 100644 content/guides/zscaler/index.md diff --git a/_vale/config/vocabularies/Docker/accept.txt b/_vale/config/vocabularies/Docker/accept.txt index 036c9e833475..933d166bf315 100644 --- a/_vale/config/vocabularies/Docker/accept.txt +++ b/_vale/config/vocabularies/Docker/accept.txt @@ -99,6 +99,7 @@ OCI OTel Okta PAT +PEM Postgres PowerShell Python @@ -140,6 +141,7 @@ WSL Wasm Windows WireMock +Zscaler Zsh [Bb]uildx [Cc]odenames? diff --git a/content/guides/zscaler/index.md b/content/guides/zscaler/index.md new file mode 100644 index 000000000000..141031c2dfbb --- /dev/null +++ b/content/guides/zscaler/index.md @@ -0,0 +1,141 @@ +--- +title: Using Docker with Zscaler +tags: [networking, admin] +summary: | + This guide explains how to embed Zscaler’s root certificate into Docker + images, allowing containers to operate securely with Zscaler proxies and + avoid SSL errors. +params: + time: 10 minutes +--- + +In many corporate environments, network traffic is intercepted and monitored +using HTTPS proxies, such as Zscaler. While Zscaler ensures security compliance +and network control, it can cause issues for developers using Docker, +particularly during build processes, where SSL certificate validation errors +might occur. This guide outlines how to configure Docker containers and builds +to properly handle Zscaler's custom certificates, ensuring smooth operation in +monitored environments. + +## The role of certificates in Docker + +When Docker builds or runs containers, it often needs to fetch resources from +the internet—whether it's pulling a base image from a registry, downloading +dependencies, or communicating with external services. In a proxied +environment, Zscaler intercepts HTTPS traffic and replaces the remote server's +certificate with its own. However, Docker doesn't trust this Zscaler +certificate by default, leading to SSL errors. + +```plaintext +x509: certificate signed by unknown authority +``` + +These errors occur because Docker cannot verify the validity of the certificate +presented by Zscaler. To avoid this, you must configure Docker to trust +Zscaler's certificate. + +## Configure Zscaler proxy for Docker Desktop + +Depending on how Zscaler is deployed, you may need to configure Docker Desktop +proxy settings manually to use the Zscaler proxy. + +If you're using Zscaler as a system-level proxy via the [Zscaler Client Connector](https://help.zscaler.com/zscaler-client-connector/what-is-zscaler-client-connector), +all traffic on the device is automatically routed through Zscaler, so Docker +Desktop uses the Zscaler proxy automatically with no additional configuration +necessary. + +If you are not using Zscaler as a system-level proxy, manually configure proxy +settings in Docker Desktop. Set up proxy settings for all clients in the +organization using [Settings Management](/manuals/security/for-admins/hardened-desktop/settings-management/_index.md), +or edit proxy configuration in the Docker Desktop GUI under [**Settings > Resources > Proxies**](/manuals/desktop/settings.md#proxies). + +## Install root certificates in Docker images + +To enable containers to use and trust the Zscaler proxy, embed the certificate +in the image and configure the image's trust store. Installing certificates at +image build time is the preferred approach, as it removes the need for +configuration during startup and provides an auditable, consistent environment. + +### Obtaining the root certificate + +The easiest way to obtain the root certificate is to export it from a machine +where an administrator has already installed it. You can use either a web +browser or the system's certificate management service (for example, Windows +Certificate Store). + +#### Example: Exporting the certificate using Google Chrome + +1. In Google Chrome, navigate to `chrome://certificate-manager/`. +2. Under **Local certificates**, select **View imported certificates**. +3. Find the Zscaler root certificate, often labeled **Zscaler Root CA**. +4. Open the certificate details and select **Export**. +5. Save the certificate in ASCII PEM format. +6. Open the exported file in a text editor to confirm it includes `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----`. + +When you have obtained the certificate, store it in an accessible repository, +such as JFrog Artifactory or a Git repository. Alternatively, use generic +storage like AWS S3. + +### Building with the certificate + +To install these certificates when building images, copy the certificate into +the build container and update the trust store. An example Dockerfile looks +like this: + +```dockerfile +FROM debian:bookworm +COPY zscaler-cert.pem /usr/local/share/ca-certificates/zscaler-cert.pem +RUN apt-get update && \ + apt-get install -y ca-certificates && \ + update-ca-certificates +``` + +Here, `zscaler-cert.pem` is the root certificate, located at the root of the +build context (often within the application's Git repository). + +If you use an artifact repository, you can fetch the certificate directly using +the `ADD` instruction. You can also use the `--checksum` flag to verify that +the content digest of the certificate is correct. + +```dockerfile +FROM debian:bookworm +ADD --checksum=sha256:24454f830cdb571e2c4ad15481119c43b3cafd48dd869a9b2945d1036d1dc68d \ + https://artifacts.example/certs/zscaler-cert.pem /usr/local/share/ca-certificates/zscaler-cert.pem +RUN apt-get update && \ + apt-get install -y ca-certificates && \ + update-ca-certificates +``` + +#### Using multi-stage builds + +For multi-stage builds where certificates are needed in the final runtime +image, ensure the certificate installation occurs in the final stage. + +```dockerfile +FROM debian:bookworm AS build +WORKDIR /build +RUN apt-get update && apt-get install -y \ + build-essential \ + cmake \ + curl \ + git +RUN --mount=target=. cmake -B output/ + +FROM debian:bookworm-slim AS final +ADD --checksum=sha256:24454f830cdb571e2c4ad15481119c43b3cafd48dd869a9b2945d1036d1dc68d \ + https://artifacts.example/certs/zscaler-cert.pem /usr/local/share/ca-certificates/zscaler-cert.pem +RUN apt-get update && \ + apt-get install -y ca-certificates && \ + update-ca-certificates +WORKDIR /app +COPY --from=build /build/output/bin . +ENTRYPOINT ["/app/bin"] +``` + +## Conclusion + +Embedding the Zscaler root certificate directly into your Docker images ensures +that containers run smoothly within Zscaler-proxied environments. By using this +approach, you reduce potential runtime errors and create a consistent, +auditable configuration that allows for smooth Docker operations within a +monitored network. From 15e3c9c703f16f394d54f8958edb9cab67df39b8 Mon Sep 17 00:00:00 2001 From: David Karlsson <35727626+dvdksn@users.noreply.github.com> Date: Thu, 10 Oct 2024 17:48:17 +0200 Subject: [PATCH 02/12] copilot: restructure content, editorial improvements Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- content/manuals/copilot/_index.md | 68 ++++++ content/manuals/copilot/examples.md | 47 +++++ .../{ => images}/copilot-action-prompt.png | Bin .../copilot/{ => images}/copilot-button.png | Bin .../{ => images}/docker-agent-copilot.png | Bin content/manuals/copilot/index.md | 197 ------------------ content/manuals/copilot/install.md | 43 ++++ content/manuals/copilot/usage.md | 62 ++++++ hugo_stats.json | 2 - 9 files changed, 220 insertions(+), 199 deletions(-) create mode 100644 content/manuals/copilot/_index.md create mode 100644 content/manuals/copilot/examples.md rename content/manuals/copilot/{ => images}/copilot-action-prompt.png (100%) rename content/manuals/copilot/{ => images}/copilot-button.png (100%) rename content/manuals/copilot/{ => images}/docker-agent-copilot.png (100%) delete mode 100644 content/manuals/copilot/index.md create mode 100644 content/manuals/copilot/install.md create mode 100644 content/manuals/copilot/usage.md diff --git a/content/manuals/copilot/_index.md b/content/manuals/copilot/_index.md new file mode 100644 index 000000000000..e669cd5bec65 --- /dev/null +++ b/content/manuals/copilot/_index.md @@ -0,0 +1,68 @@ +--- +title: Docker for GitHub Copilot +params: + sidebar: + badge: + color: violet + text: EA +weight: 100 +description: | + Learn how to streamline Docker-related tasks with the Docker for GitHub + Copilot extension. This integration helps you generate Docker assets, analyze + vulnerabilities, and automate containerization through GitHub Copilot Chat in + various development environments. +keywords: Docker, GitHub Copilot, extension, Visual Studio Code, chat, ai, containerization +--- + +{{% restricted title="Early Access" %}} +The Docker for GitHub Copilot extension is an [early access](/release-lifecycle#early-access-ea) product. +{{% /restricted %}} + +The [Docker for GitHub Copilot](https://github.com/marketplace/docker-for-github-copilot) +extension integrates Docker's capabilities with GitHub Copilot, providing +assistance with containerizing applications, generating Docker assets, and +analyzing project vulnerabilities. This extension helps you streamline +Docker-related tasks wherever GitHub Copilot Chat is available. + +## Key features + +Key features of the Docker for GitHub Copilot extension include: + +- Ask questions and receive responses about containerization in any context + where GitHub Copilot Chat is available, such as on GitHub.com and in Visual Studio Code. +- Automatically generate Dockerfiles, Docker Compose files, and `.dockerignore` + files for a project. +- Open pull requests with generated Docker assets directly from the chat + interface. +- Get summaries of project vulnerabilities from [Docker + Scout](/manuals/scout/_index.md) and receive next steps via the CLI. + +## Data Privacy + +The Docker agent is trained exclusively on Docker's documentation and tools to +assist with containerization and related tasks. It does not have access to your +project's data outside the context of the questions you ask. + +When using the Docker Extension for GitHub Copilot, GitHub Copilot may include +a reference to the currently open file in its request if authorized by the +user. The Docker agent can read the file to provide context-aware responses. + +If the agent is requested to check for vulnerabilities or generate +Docker-related assets, it will clone the referenced repository into in-memory +storage to perform the necessary actions. + +Source code, questions, and responses are not persistently stored. The Docker +agent processes data only to provide responses and discards it immediately +afterward. + +## Supported languages + +The Docker Extension for GitHub Copilot supports the following +programming languages: + +- Go +- Java +- JavaScript +- Python +- Rust +- TypeScript diff --git a/content/manuals/copilot/examples.md b/content/manuals/copilot/examples.md new file mode 100644 index 000000000000..99fd1698b23d --- /dev/null +++ b/content/manuals/copilot/examples.md @@ -0,0 +1,47 @@ +--- +title: Example prompts for the Docker agent +linkTitle: Example prompts +description: | + Discover example prompts to interact with the Docker agent and learn how to + automate tasks like Dockerizing projects or opening pull requests. +weight: 30 +--- + +{{% restricted title="Early Access" %}} +The Docker for GitHub Copilot extension is an [early access](/release-lifecycle#early-access-ea) product. +{{% /restricted %}} + +Here are some examples of the types of questions you can ask the Docker agent: + +### Ask general Docker questions + +You can ask general question about Docker. For example: + +- `@docker what is a Dockerfile` +- `@docker how do I build a Docker image` +- `@docker how do I run a Docker container` + +### Ask questions about your project + +You can ask questions about your project, such as: + +- `@docker what is the best way to Dockerize this project` +- `@docker can you help me find vulnerabilities in my project?` + +The Docker agent will analyze your project, generate the necessary files, and, +if applicable, offer to raise a pull request with the necessary Docker assets. + +## Performing actions on your behalf + +Before the agent performs any actions on your behalf, such as opening a pull +request for you, you're prompted to provide your consent to allow the +operation. You can always roll back or back out of the changes. + +![Copilot action prompt](images/copilot-action-prompt.png?w=400px) + +In the event that the agent encounters an error, for example during PR +creation, it handles timeouts and lack of responses gracefully. + +## Feedback + +For issues or feedback, visit the [GitHub feedback repository](https://github.com/docker/copilot-issues). diff --git a/content/manuals/copilot/copilot-action-prompt.png b/content/manuals/copilot/images/copilot-action-prompt.png similarity index 100% rename from content/manuals/copilot/copilot-action-prompt.png rename to content/manuals/copilot/images/copilot-action-prompt.png diff --git a/content/manuals/copilot/copilot-button.png b/content/manuals/copilot/images/copilot-button.png similarity index 100% rename from content/manuals/copilot/copilot-button.png rename to content/manuals/copilot/images/copilot-button.png diff --git a/content/manuals/copilot/docker-agent-copilot.png b/content/manuals/copilot/images/docker-agent-copilot.png similarity index 100% rename from content/manuals/copilot/docker-agent-copilot.png rename to content/manuals/copilot/images/docker-agent-copilot.png diff --git a/content/manuals/copilot/index.md b/content/manuals/copilot/index.md deleted file mode 100644 index b563ffac8115..000000000000 --- a/content/manuals/copilot/index.md +++ /dev/null @@ -1,197 +0,0 @@ ---- -title: Docker for GitHub Copilot -linkTitle: Docker for GitHub Copilot -params: - sidebar: - badge: - color: violet - text: Early Access -weight: 100 -description: Learn how to use the Docker Extension for GitHub Copilot to streamline Docker-related tasks. -keywords: Docker, GitHub Copilot, extension, Visual Studio Code, chat, ai, containerization ---- - -{{% restricted title="Early access" %}} - -The Docker Extension for GitHub Copilot is a part of the [Limited Public Beta](https://github.blog/changelog/2024-05-21-copilot-extensions-now-in-limited-public-beta/) -for GitHub Copilot Extensions. - -To get access, [sign up for the Copilot Extensions waitlist](https://github.com/github-copilot/copilot_extensions_waitlist_signup). - -{{% /restricted %}} - -The Docker Extension for GitHub Copilot integrates Docker's capabilities with -GitHub Copilot, providing assistance with containerizing applications and -generating Docker assets. This extension helps you streamline Docker-related -tasks wherever GitHub Copilot Chat is available. - -The key features are: - -- Ask questions and receive responses about containerization in any context - when GitHub Copilot Chat is available, such as on GitHub.com and in Visual Studio Code. -- Automatically generate Dockerfiles, Docker Compose files, and .dockerignore - files for a project. -- Open pull requests with generated Docker assets directly from the chat - interface. -- Get summaries of project vulnerabilities from Docker Scout and receive next - steps via CLI. - -## Data Privacy - -The Docker agent is trained exclusively on Docker's documentation and tools to -assist with containerization and related tasks. It does not have access to your -project's data outside the context of the questions you ask. - -When using the Docker Extension for GitHub Copilot, GitHub Copilot may include -a reference to the currently open file in its request if authorized by the -user. The Docker agent can read the file to provide context-aware responses. - -If the agent is requested to check for vulnerabilities or generate -Docker-related assets, it will clone the referenced repository into in-memory -storage to perform the necessary actions. - -Source code, questions, and responses are not persistently stored. The Docker -agent processes data only to provide responses and discards it immediately -afterward. - -## Supported languages - -The Docker Extension for GitHub Copilot supports the following -programming languages: - -- Dockerfile -- Go -- Java -- JavaScript -- Python -- Rust -- TypeScript - -## Get Started - -Here's how to get started with the Docker Extension for GitHub Copilot. - -### Prerequisites - -Before you start, ensure that: - -- You have been granted access to GitHub's [limited public beta program](https://github.blog/changelog/2024-05-21-copilot-extensions-now-in-limited-public-beta/). -- You're signed in to your GitHub account on GitHub.com. - -### Install the extension for your organization - -1. Go to the [Docker for GitHub Copilot](https://github.com/marketplace/docker-for-github-copilot) - app in the GitHub Marketplace. - -2. Select the **Add** button at the top of the page. - -3. Under **Pricing and setup**, select the organization that you want to - install the extension for and select **Install it for free**. - -4. Select the **Complete order and begin installation** button. - -5. Select the repositories where you want to use the Docker Extension for - GitHub Copilot and finish with **Install**. - -> [!NOTE] -> Before you can use Copilot Extensions in your organization, you need to -> enable the Copilot Extensions policy. For more information, see -> [Setting a policy for GitHub Copilot Extensions in your organization](https://docs.github.com/en/copilot/managing-copilot/managing-github-copilot-in-your-organization/setting-policies-for-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization#setting-a-policy-for-github-copilot-extensions-in-your-organization). - -### Set up Copilot Chat - -Once you've installed the Docker Extension for GitHub Copilot and enabled the -Copilot Extensions policy, you can use the extension in your editor or IDE, or -on GitHub.com. - -{{< tabs >}} -{{< tab name="Editor or IDE" >}} - -For instructions on how to use the Docker Extension for GitHub Copilot in -your editor, see: - -- [Visual Studio Code](https://docs.github.com/en/copilot/github-copilot-chat/copilot-chat-in-ides/using-github-copilot-chat-in-your-ide?tool=vscode) -- [Visual Studio](https://docs.github.com/en/copilot/github-copilot-chat/copilot-chat-in-ides/using-github-copilot-chat-in-your-ide?tool=visualstudio) -- [Codespaces](https://docs.github.com/en/codespaces/reference/using-github-copilot-in-github-codespaces) - -{{< /tab >}} -{{< tab name="GitHub.com" >}} - -No setup is needed for the Docker Extension for GitHub Copilot on GitHub.com. -Simply go to any repository and start using the chat interface, -see [Using the extension](#using-the-extension). - -{{< /tab >}} -{{< /tabs >}} - -You can verify that the extension has been properly installed by typing -`@docker` in the Copilot Chat window. As you type, you should see the Docker -agent appear in the chat interface. - -![Docker agent in chat](/copilot/docker-agent-copilot.png) - -## Using the extension - -The Docker Extension for GitHub Copilot provides a chat interface that you can -use to interact with the Docker agent. You can ask questions and get help -Dockerizing your project. - -The Docker agent is trained to understand Docker-related questions, and provide -guidance on Dockerfiles, Docker Compose files, and other Docker assets. - -### Editor - -To use the extension in your editor or IDE: - -1. Open your project in your editor. -2. Open the Copilot chat interface. -3. Interact with the Docker agent using the `/docker` or `@docker`, followed by your question. - -### GitHub.com - -To use the extension in the GitHub web interface: - -1. Go to [github.com](https://github.com/) and sign in to your account. -2. Go to any repository. -3. Select the Copilot logo in the site menu to open the chat interface. - - ![Copilot chat button](/copilot/copilot-button.png?w=400px) - -4. Interact with the Docker agent by tagging `@docker`. - -## Example prompts - -Here are some examples of the types of questions you can ask the Docker agent: - -### Ask general Docker questions - -You can ask general question about Docker. For example: - -- `@docker what is a Dockerfile` -- `@docker how do I build a Docker image` -- `@docker how do I run a Docker container` - -### Ask questions about your project - -You can ask questions about your project, such as: - -- `@docker what is the best way to Dockerize this project` -- `@docker can you help me find vulnerabilities in my project?` - -The Docker agent will analyze your project, generate the necessary files, and, -if applicable, offer to raise a pull request with the necessary Docker assets. - -## Performing actions on your behalf - -Before the agent performs any actions on your behalf, such as opening a pull -request for you, you're prompted to provide your consent to allow the -operation. You can always roll back or back out of the changes. - -![Copilot action prompt](/copilot/copilot-action-prompt.png?w=400px) - -In the event that the agent encounters an error, for example during PR -creation, it handles timeouts and lack of responses gracefully. - -## Feedback - -For issues or feedback, visit the [GitHub feedback repository](https://github.com/docker/copilot-issues). diff --git a/content/manuals/copilot/install.md b/content/manuals/copilot/install.md new file mode 100644 index 000000000000..01213b504eee --- /dev/null +++ b/content/manuals/copilot/install.md @@ -0,0 +1,43 @@ +--- +title: Install the extension for your organization +linkTitle: Install +description: | + Learn how to install the Docker for GitHub Copilot extension for your + organization and manage relevant policies to enable seamless integration. +weight: 10 +--- + +{{% restricted title="Early Access" %}} +The Docker for GitHub Copilot extension is an [early access](/release-lifecycle#early-access-ea) product. +{{% /restricted %}} + +To use the Docker for GitHub copilot extension, you first need to +[install](#install) the extension for your organization, and +[manage](#manage-policies) policies for Copilot in your organization. + +## Prerequisites + +Before you start, ensure that you're signed in to your GitHub account on +GitHub.com. + +## Install + +To install the Docker for GitHub Copilot extension for your GitHub organization: + +1. Go to the [Docker for GitHub Copilot](https://github.com/marketplace/docker-for-github-copilot) + app in the GitHub Marketplace. + +2. Select the **Add** button at the top of the page. + +3. Under **Pricing and setup**, select the organization that you want to + install the extension for and select **Install it for free**. + +4. Select the **Complete order and begin installation** button. + +5. Select the repositories where you want to use the Docker Extension for + GitHub Copilot and finish with **Install**. + +## Manage policies + +After installing the extension, you need to enable the Copilot Extensions +policy. For instructions, see [Setting a policy for GitHub Copilot Extensions in your organization](https://docs.github.com/en/copilot/managing-copilot/managing-github-copilot-in-your-organization/setting-policies-for-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization#setting-a-policy-for-github-copilot-extensions-in-your-organization). diff --git a/content/manuals/copilot/usage.md b/content/manuals/copilot/usage.md new file mode 100644 index 000000000000..41c2fea54eac --- /dev/null +++ b/content/manuals/copilot/usage.md @@ -0,0 +1,62 @@ +--- +title: Using the Docker for GitHub Copilot extension +linkTitle: Usage +description: | + Learn how to use the Docker for GitHub Copilot extension to interact with the + Docker agent, get help Dockerizing projects, and ask Docker-related questions + directly from your IDE or GitHub.com. +weight: 20 +--- + +{{% restricted title="Early Access" %}} +The Docker for GitHub Copilot extension is an [early access](/release-lifecycle#early-access-ea) product. +{{% /restricted %}} + +The Docker Extension for GitHub Copilot provides a chat interface that you can +use to interact with the Docker agent. You can ask questions and get help +Dockerizing your project. + +The Docker agent is trained to understand Docker-related questions, and provide +guidance on Dockerfiles, Docker Compose files, and other Docker assets. + +## Setup + +Before you can start interacting with the Docker agent, make sure you've +[installed](./install.md) the extension for your organization. + +### Enable GitHub Copilot chat in your editor or IDE + +For instructions on how to use the Docker Extension for GitHub Copilot in +your editor, see: + +- [Visual Studio Code](https://docs.github.com/en/copilot/github-copilot-chat/copilot-chat-in-ides/using-github-copilot-chat-in-your-ide?tool=vscode) +- [Visual Studio](https://docs.github.com/en/copilot/github-copilot-chat/copilot-chat-in-ides/using-github-copilot-chat-in-your-ide?tool=visualstudio) +- [Codespaces](https://docs.github.com/en/codespaces/reference/using-github-copilot-in-github-codespaces) + +### Verify the setup + +You can verify that the extension has been properly installed by typing +`@docker` in the Copilot Chat window. As you type, you should see the Docker +agent appear in the chat interface. + +![Docker agent in chat](images/docker-agent-copilot.png) + +## Asking Docker questions in your editor + +To interact with the Docker agent from within your editor or IDE: + +1. Open your project in your editor. +2. Open the Copilot chat interface. +3. Interact with the Docker agent by tagging `@docker`, followed by your question. + +## Asking Docker questions on GitHub.com + +To interact with the Docker agent from the GitHub web interface: + +1. Go to [github.com](https://github.com/) and sign in to your account. +2. Go to any repository. +3. Select the Copilot logo in the site menu, or select the floating Copilot widget, to open the chat interface. + + ![Copilot chat button](images/copilot-button.png?w=400px) + +4. Interact with the Docker agent by tagging `@docker`, followed by your question. diff --git a/hugo_stats.json b/hugo_stats.json index 4ea6d584b275..a7c95c1759c8 100644 --- a/hugo_stats.json +++ b/hugo_stats.json @@ -44,7 +44,6 @@ "Docker-Desktop", "Docker-Hub", "Download", - "Editor-or-IDE", "Entra-ID", "Entra-ID-SAML-2.0", "External-cloud-storage", @@ -58,7 +57,6 @@ "Git-Bash", "Git-Bash-CLI", "GitHub-Actions", - "GitHub.com", "GitLab", "Go", "HTTP", From 65b65d58d576c3392d08b1c88608ba3acc0b4e5b Mon Sep 17 00:00:00 2001 From: David Karlsson <35727626+dvdksn@users.noreply.github.com> Date: Fri, 11 Oct 2024 15:37:21 +0200 Subject: [PATCH 03/12] chore: add area/copilot config to labeler Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- .github/labeler.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/labeler.yml b/.github/labeler.yml index 719a3ab98f04..9ded4b2350d7 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -158,6 +158,11 @@ area/accounts: - any-glob-to-any-file: - content/manuals/accounts/** +area/copilot: + - changed-files: + - any-glob-to-any-file: + - content/manuals/copilot/** + hugo: - changed-files: - any-glob-to-any-file: From 3bfe54229517c042f1e573c79891635116d52e9e Mon Sep 17 00:00:00 2001 From: David Karlsson <35727626+dvdksn@users.noreply.github.com> Date: Mon, 14 Oct 2024 14:30:57 +0200 Subject: [PATCH 04/12] copilot: clarify that managing policies is only for orgs Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- content/manuals/copilot/install.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/content/manuals/copilot/install.md b/content/manuals/copilot/install.md index 01213b504eee..35756b6cfd2c 100644 --- a/content/manuals/copilot/install.md +++ b/content/manuals/copilot/install.md @@ -39,5 +39,6 @@ To install the Docker for GitHub Copilot extension for your GitHub organization: ## Manage policies -After installing the extension, you need to enable the Copilot Extensions -policy. For instructions, see [Setting a policy for GitHub Copilot Extensions in your organization](https://docs.github.com/en/copilot/managing-copilot/managing-github-copilot-in-your-organization/setting-policies-for-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization#setting-a-policy-for-github-copilot-extensions-in-your-organization). +If you're enabling the extension for a GitHub organization, you also +need to enable the Copilot Extensions policy. For instructions, see +[Setting a policy for GitHub Copilot Extensions in your organization](https://docs.github.com/en/copilot/managing-copilot/managing-github-copilot-in-your-organization/setting-policies-for-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization#setting-a-policy-for-github-copilot-extensions-in-your-organization). From fa27131e673c566a1104f9fab83f7bcd28c3897b Mon Sep 17 00:00:00 2001 From: David Karlsson <35727626+dvdksn@users.noreply.github.com> Date: Mon, 14 Oct 2024 14:31:09 +0200 Subject: [PATCH 05/12] copilot: mention Docker account sign-in and authorization Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- content/manuals/copilot/usage.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/content/manuals/copilot/usage.md b/content/manuals/copilot/usage.md index 41c2fea54eac..92cba9c494a6 100644 --- a/content/manuals/copilot/usage.md +++ b/content/manuals/copilot/usage.md @@ -41,6 +41,9 @@ agent appear in the chat interface. ![Docker agent in chat](images/docker-agent-copilot.png) +The first time you interact with the agent, you're prompted to sign in and +authorize the Copilot extension with your Docker account. + ## Asking Docker questions in your editor To interact with the Docker agent from within your editor or IDE: From c7347bde41235e9496e9d84643633b03dbad50cc Mon Sep 17 00:00:00 2001 From: David Karlsson <35727626+dvdksn@users.noreply.github.com> Date: Mon, 14 Oct 2024 16:29:38 +0200 Subject: [PATCH 06/12] copilot: "supported languages" pertains to containerization features Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- content/manuals/copilot/_index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/manuals/copilot/_index.md b/content/manuals/copilot/_index.md index e669cd5bec65..ebb683554196 100644 --- a/content/manuals/copilot/_index.md +++ b/content/manuals/copilot/_index.md @@ -57,8 +57,8 @@ afterward. ## Supported languages -The Docker Extension for GitHub Copilot supports the following -programming languages: +The Docker Extension for GitHub Copilot supports the following programming +languages for tasks involving containerizing a project from scratch: - Go - Java From 36a227b30cb452e62232df19a91fe81e39eced83 Mon Sep 17 00:00:00 2001 From: David Karlsson <35727626+dvdksn@users.noreply.github.com> Date: Mon, 14 Oct 2024 16:30:33 +0200 Subject: [PATCH 07/12] copilot: add question marks to example questions Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- content/manuals/copilot/examples.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/manuals/copilot/examples.md b/content/manuals/copilot/examples.md index 99fd1698b23d..eeb14f84700a 100644 --- a/content/manuals/copilot/examples.md +++ b/content/manuals/copilot/examples.md @@ -17,9 +17,9 @@ Here are some examples of the types of questions you can ask the Docker agent: You can ask general question about Docker. For example: -- `@docker what is a Dockerfile` -- `@docker how do I build a Docker image` -- `@docker how do I run a Docker container` +- `@docker what is a Dockerfile?` +- `@docker how do I build a Docker image?` +- `@docker how do I run a Docker container?` ### Ask questions about your project From 80a7cedc56ec9050c2d1cfeb59b8480aabef9822 Mon Sep 17 00:00:00 2001 From: David Karlsson <35727626+dvdksn@users.noreply.github.com> Date: Mon, 14 Oct 2024 17:11:55 +0200 Subject: [PATCH 08/12] copilot: revamp example prompts Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- content/manuals/copilot/examples.md | 29 ++++++++++++------ .../copilot/images/copilot-vuln-report.png | Bin 0 -> 73585 bytes 2 files changed, 20 insertions(+), 9 deletions(-) create mode 100644 content/manuals/copilot/images/copilot-vuln-report.png diff --git a/content/manuals/copilot/examples.md b/content/manuals/copilot/examples.md index eeb14f84700a..cca306374796 100644 --- a/content/manuals/copilot/examples.md +++ b/content/manuals/copilot/examples.md @@ -13,7 +13,7 @@ The Docker for GitHub Copilot extension is an [early access](/release-lifecycle# Here are some examples of the types of questions you can ask the Docker agent: -### Ask general Docker questions +## Ask general Docker questions You can ask general question about Docker. For example: @@ -21,15 +21,29 @@ You can ask general question about Docker. For example: - `@docker how do I build a Docker image?` - `@docker how do I run a Docker container?` -### Ask questions about your project +## Get help containerizing your project -You can ask questions about your project, such as: +You can ask the agent to help you containerize your existing project: -- `@docker what is the best way to Dockerize this project` -- `@docker can you help me find vulnerabilities in my project?` +- `@docker can you help create a compose file for this project?` +- `@docker can you create a Dockerfile for this project?` The Docker agent will analyze your project, generate the necessary files, and, -if applicable, offer to raise a pull request with the necessary Docker assets. +if applicable, offer to [raise a pull request](#performing-actions-on-your-behalf) +with the necessary Docker assets. + +## Analyze a project for vulnerabilities + +The agent can help you improve your security posture with [Docker +Scout](/manuals/scout/_index.md): + +- `@docker can you help me find vulnerabilities in my project?` +- `@docker does my project contain any insecure dependencies?` + +The agent will run use Docker Scout to analyze your project's dependencies, and +report whether you're vulnerable to any [known CVEs](/manuals/scout/deep-dive/advisory-db-sources.md). + +![Copilot vulnerabilities report](images/copilot-vuln-report.png?w=500px&border=1) ## Performing actions on your behalf @@ -39,9 +53,6 @@ operation. You can always roll back or back out of the changes. ![Copilot action prompt](images/copilot-action-prompt.png?w=400px) -In the event that the agent encounters an error, for example during PR -creation, it handles timeouts and lack of responses gracefully. - ## Feedback For issues or feedback, visit the [GitHub feedback repository](https://github.com/docker/copilot-issues). diff --git a/content/manuals/copilot/images/copilot-vuln-report.png b/content/manuals/copilot/images/copilot-vuln-report.png new file mode 100644 index 0000000000000000000000000000000000000000..ca203875bd0322c00cbb907127a1dcbd3360e491 GIT binary patch literal 73585 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 z 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νA=xE9h+ng-!pg8E4~+hbN#?PZ>pZn=`$XVxO^kLE$5QDJ>*N< zc^12h%k@pJED9b@NS7_~1dnECKV=((^14(MgCL&IHeb3GW5AdK z!aQ+ztRVuc;QaRjL87JkN*%+z>9YB)fhA!O;Cu7gP>O<|V*Kfl?T;Mf>u=~}O@E^j z(m8xlFSNWURgTOuXoF2J`%N`GO8zI4XB@lo_#zP?$vgIL9&wPo*oh?affUvA8uslV zmaMguN%e46%;|G%2%lJG6nx&lTLZ2`Qj`R*5SO;>G%fgm;}T6R3v-HiwQ>yjds@50 z&Ey4THUcvH&wz@@!I5)KGLH6iN`eBNIEjsbRAx8>QQ+3Hr+8|t`{B^ Date: Mon, 14 Oct 2024 17:16:40 +0200 Subject: [PATCH 09/12] copilot: clarify data processing disclaimer Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- content/manuals/copilot/_index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/manuals/copilot/_index.md b/content/manuals/copilot/_index.md index ebb683554196..08f501b1113f 100644 --- a/content/manuals/copilot/_index.md +++ b/content/manuals/copilot/_index.md @@ -51,9 +51,9 @@ If the agent is requested to check for vulnerabilities or generate Docker-related assets, it will clone the referenced repository into in-memory storage to perform the necessary actions. -Source code, questions, and responses are not persistently stored. The Docker -agent processes data only to provide responses and discards it immediately -afterward. +Source code or project metadata is never persistently stored. Questions and +answers are retained for analytics and troubleshooting. Data processed by the +Docker agent is never shared with third parties. ## Supported languages From 51acb80f1fb7cf7f9401b34ddc2fc791f0857c46 Mon Sep 17 00:00:00 2001 From: David Karlsson <35727626+dvdksn@users.noreply.github.com> Date: Wed, 6 Nov 2024 16:46:46 +0100 Subject: [PATCH 10/12] copilot: restructure examples section Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- content/manuals/copilot/examples.md | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/content/manuals/copilot/examples.md b/content/manuals/copilot/examples.md index cca306374796..e7c498cfc0ad 100644 --- a/content/manuals/copilot/examples.md +++ b/content/manuals/copilot/examples.md @@ -11,28 +11,35 @@ weight: 30 The Docker for GitHub Copilot extension is an [early access](/release-lifecycle#early-access-ea) product. {{% /restricted %}} +## Use cases + Here are some examples of the types of questions you can ask the Docker agent: -## Ask general Docker questions +### Ask general Docker questions You can ask general question about Docker. For example: - `@docker what is a Dockerfile?` - `@docker how do I build a Docker image?` - `@docker how do I run a Docker container?` +- `@docker what does 'docker buildx imagetools inspect' do?` -## Get help containerizing your project +### Get help containerizing your project You can ask the agent to help you containerize your existing project: - `@docker can you help create a compose file for this project?` - `@docker can you create a Dockerfile for this project?` +#### Opening pull requests + The Docker agent will analyze your project, generate the necessary files, and, -if applicable, offer to [raise a pull request](#performing-actions-on-your-behalf) -with the necessary Docker assets. +if applicable, offer to raise a pull request with the necessary Docker assets. + +Automatically opening pull requests against your repositories is only available +when the agent generates new Docker assets. -## Analyze a project for vulnerabilities +### Analyze a project for vulnerabilities The agent can help you improve your security posture with [Docker Scout](/manuals/scout/_index.md): From 802981584502b70d8eacdbaab2530593aba021f8 Mon Sep 17 00:00:00 2001 From: David Karlsson <35727626+dvdksn@users.noreply.github.com> Date: Wed, 6 Nov 2024 16:47:23 +0100 Subject: [PATCH 11/12] copilot: remove "actions on your behalf" section, add "limitations" Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- content/manuals/copilot/examples.md | 10 ++++------ .../copilot/images/copilot-action-prompt.png | Bin 12248 -> 0 bytes 2 files changed, 4 insertions(+), 6 deletions(-) delete mode 100644 content/manuals/copilot/images/copilot-action-prompt.png diff --git a/content/manuals/copilot/examples.md b/content/manuals/copilot/examples.md index e7c498cfc0ad..f9573a6a1b0f 100644 --- a/content/manuals/copilot/examples.md +++ b/content/manuals/copilot/examples.md @@ -52,13 +52,11 @@ report whether you're vulnerable to any [known CVEs](/manuals/scout/deep-dive/ad ![Copilot vulnerabilities report](images/copilot-vuln-report.png?w=500px&border=1) -## Performing actions on your behalf +## Limitations -Before the agent performs any actions on your behalf, such as opening a pull -request for you, you're prompted to provide your consent to allow the -operation. You can always roll back or back out of the changes. - -![Copilot action prompt](images/copilot-action-prompt.png?w=400px) +- The agent is currently not able to access specific files in your repository, + such as the currently-opened file in your editor, or if you pass a file + reference with your message in the chat message. ## Feedback diff --git a/content/manuals/copilot/images/copilot-action-prompt.png b/content/manuals/copilot/images/copilot-action-prompt.png deleted file mode 100644 index 0c7d7aae7a7b76ffb08a7e6c0e9fab3362f638c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12248 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 From 6e45fe69e0011bfa1fff3bf1b7dacc51ad6a978c Mon Sep 17 00:00:00 2001 From: David Karlsson <35727626+dvdksn@users.noreply.github.com> Date: Thu, 7 Nov 2024 13:18:41 +0100 Subject: [PATCH 12/12] fix: broken link to dd settings after refactor Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- content/guides/zscaler/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/guides/zscaler/index.md b/content/guides/zscaler/index.md index 141031c2dfbb..56c35463d534 100644 --- a/content/guides/zscaler/index.md +++ b/content/guides/zscaler/index.md @@ -47,7 +47,7 @@ necessary. If you are not using Zscaler as a system-level proxy, manually configure proxy settings in Docker Desktop. Set up proxy settings for all clients in the organization using [Settings Management](/manuals/security/for-admins/hardened-desktop/settings-management/_index.md), -or edit proxy configuration in the Docker Desktop GUI under [**Settings > Resources > Proxies**](/manuals/desktop/settings.md#proxies). +or edit proxy configuration in the Docker Desktop GUI under [**Settings > Resources > Proxies**](/manuals/desktop/settings-and-maintenance/settings.md#proxies). ## Install root certificates in Docker images