Improve alt text on images (#16484)

This commit is contained in:
Allie Sadler 2023-01-10 16:28:46 +00:00 committed by GitHub
parent 85fcaa424f
commit f956ab6552
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
48 changed files with 92 additions and 92 deletions

View File

@ -81,7 +81,7 @@ with the appropriate condition on the IAM role statement.
> this stack requires a capability. This stack creates a role that will grant
> Atomist read-only access to ECR resources.
>
> ![confirm](./images/ecr/capability.png)
> ![Confirm read-only access to ECR resources](./images/ecr/capability.png)
<div style="text-align: center">
<table>
@ -185,7 +185,7 @@ with the appropriate condition on the IAM role statement.
Atomist tests the connection with your ECR registry. A green check mark
displays beside the integration if a successful connection is made.
![integration list showing a successful ECR integration](./images/ecr/connection-successful.png){:
![Integration list showing a successful ECR integration](./images/ecr/connection-successful.png){:
width="700px"}
</div>

View File

@ -24,7 +24,7 @@ repositories for your Docker images.
the
[Atomist GitHub App](https://github.com/apps/atomist "Atomist GitHub App"){: target="blank" rel="noopener" class=""}.
![install the GitHub app](images/gh-install.png){: width="700px" }
![Install the GitHub app view](images/gh-install.png){: width="700px" }
4. Install the app.
@ -39,7 +39,7 @@ repositories for your Docker images.
5. In the repository selection menu, select what repositories you want Atomist
to start watching.
![activate repositories](images/activate-repos.png){: width="500px" }
![Activate repositories view](images/activate-repos.png){: width="500px" }
If you are just looking to evaluate Atomist, start by selecting a few
repositories during evaluation. Once you are comfortable using Atomist, you

View File

@ -77,12 +77,12 @@ rel="noopener" class=""}.
target="blank" rel="noopener" class=""}, where you should see the image in
the list.
![indexed image in the image overview list](./images/images-overview.png){:
![Indexed image in the image overview list](./images/images-overview.png){:
width="700px"}
6. Select the image name. This gets you to the list of image tags.
![list of image tags](./images/tags-list.png){: width="700px"}
![List of image tags](./images/tags-list.png){: width="700px"}
Since this is your first time indexing this image, the list only has one tag
for now. When you integrate Atomist with your container registry, images and
@ -90,7 +90,7 @@ rel="noopener" class=""}.
7. Select the tag name. This shows you the insights for this tag.
![vulnerability breakdown view](./images/vulnerabilities-overview.png){:
![Vulnerability breakdown view](./images/vulnerabilities-overview.png){:
width="700px"}
In this view, you can see how many vulnerabilities this image has, their

View File

@ -145,7 +145,7 @@ CONTAINER ID IMAGE COMMAND CREATED STATUS
You can also check from the browser that Nginx is running:
![containerd_feature_nginx](../images/containerd_feature_nginx.png){:width="750px"}
![Containerd setting in Docker Desktop](../images/containerd_feature_nginx.png){:width="750px"}
## Building multi-platform images

View File

@ -13,7 +13,7 @@ It uses tools built into code editors that allows Docker to access code mounted
You can use Dev Environments through the intuitive GUI in Docker Dashboard or straight from you terminal with the new [`docker dev` CLI plugin](dev-cli.md).
![Dev environment intro](../images/dev-env.PNG){:width="700px"}
![Dev environments tab in Docker Desktop](../images/dev-env.PNG){:width="700px"}
## How does it work?

View File

@ -13,7 +13,7 @@ Extensions can be composed of 3 (optional) components:
- a backend: one or many containerised services running in the Docker Desktop VM
- executables: shell scripts or binaries that Docker Desktop copies on the host when installing the extension
![Overview](./images/overview.svg)
![Overview of the three components of an extension](./images/overview.svg)
An extension doesn't necessarily need to have all these components, but at least one of them depending on the extension features.
To configure and run those components, Docker Desktop uses a `metadata.json` file. See the

View File

@ -209,7 +209,7 @@ provide you with type definitions for the extension APIs and auto-completion in
npm install @docker/extension-api-client-types --save-dev
```
![types auto complete](images/types-autocomplete.png)
![Auto completion in an IDE](images/types-autocomplete.png)
For example, you can use the `docker.cli.exec` function to get the list of all the containers via the `docker ps --all`
command and display the result in a table.

View File

@ -100,7 +100,7 @@ To preview the extension in Docker Desktop, close and open Docker Dashboard once
The left-hand menu displays a new tab with the name of your extension.
![minimal-frontend-extension](images/ui-minimal-extension.png)
![Minimal frontend extension](images/ui-minimal-extension.png)
## What's next?

View File

@ -18,39 +18,39 @@ Use the [Docker Material UI Theme](https://www.npmjs.com/package/@docker/docker-
- Ensure the extension has both a light and dark theme. Using the components and styles as per the Docker style guide ensures that your extension meets the [level AA accessibility standard.](https://www.w3.org/WAI/WCAG2AA-Conformance){:target="_blank" rel="noopener" class="_"}.
![light and dark mode](images/light_dark_mode.png)
![Light and dark mode](images/light_dark_mode.png)
- Ensure that your extension icon is visible both in light and dark mode.
![icon colors](images/icon_colors.png)
![Icon colors in light and dark mode](images/icon_colors.png)
- Ensure that the navigational behavior is consistent with the rest of Docker Desktop. Add a header to set the context for the extension.
![header](images/header.png)
![Header that sets the context](images/header.png)
- Avoid embedding terminal windows. The advantage we have with Docker Desktop over the CLI is that we have the opportunity to provide rich information to users. Make use of this interface as much as possible.
![terminal window dont](images/terminal_window_dont.png){:height="=50%" width="50%"}
![Terminal window used incorrectly](images/terminal_window_dont.png){:height="=50%" width="50%"}
![terminal window do](images/terminal_window_do.png)
![Terminal window used correctly](images/terminal_window_do.png)
## Build Features Natively
- In order not to disrupt the flow of users, avoid scenarios where the user has to navigate outside Docker Desktop, to the CLI or a webpage for example, in order to carry out certain functionalities. Instead, build features that are native to Docker Desktop.
![switch context dont](images/switch_context_dont.png){:height="=50%" width="50%"}
![Incorrect way to switch context](images/switch_context_dont.png){:height="=50%" width="50%"}
![switch context do](images/switch_context_do.png)
![Correct way to switch context](images/switch_context_do.png)
## Break Down Complicated User Flows
- If a flow is too complicated or the concept is abstract, break down the flow into multiple steps with one simple call-to-action in each step. This helps when onboarding novice users to your extension
![complicated flow](images/complicated_flows.png)
![A complicated flow](images/complicated_flows.png)
- Where there are multiple call-to-actions, ensure you use the primary (filled button style) and secondary buttons (outline button style) to convey the importance of each action.
![call to action](images/cta.png)
![Call to action](images/cta.png)
## Onboarding New Users

View File

@ -8,7 +8,7 @@ Extensions use image labels to provide additional information like title, descri
These information allow to display an overview of the extension to users so they can choose to install it:
![List preview](images/marketplace-details.png)
![Extension preview](images/marketplace-details.png)
You can define [Image labels](../../../engine/reference/builder.md#label) in the extension's `Dockerfile`.

View File

@ -20,7 +20,7 @@ The Authorization Code grant type is used by confidential and public clients to
After the user returns to the client via the redirect URL, the application gets the authorization code from the URL and uses it to request an access token.
![oauth2-flow](images/oauth2-flow.png){: style=width:80% }
![Flow for OAuth 2.0](images/oauth2-flow.png){: style=width:80% }
The image above shows that:
- The Docker Extension asks the user to authorize access to their data.

View File

@ -16,7 +16,7 @@ You can seamlessly connect your favorite development tools to your application d
Anyone can use Docker Extensions and there is no limit to the number of extensions you can install.
![extenstions](../images/extensions-marketplace.PNG){:width="750px"}
![Extensions Marketplace](../images/extensions-marketplace.PNG){:width="750px"}
## What extensions are available?

View File

@ -141,4 +141,4 @@ Docker doesn't automatically mandate that developers re-launch and sign in once
In Docker Desktop, developers see the relevant settings grayed out and the message **Locked by your administrator**.
![Proxy settings grayed out](/assets/images/grayed-setting.png){:width="350px"}
![Proxy settings grayed out with Settings Management](/assets/images/grayed-setting.png){:width="350px"}

View File

@ -176,7 +176,7 @@ Docker Desktop does not start automatically after installation. To start Docker
1. Search for Docker, and select **Docker Desktop** in the search results.
![search for Docker app](images/docker-app-search.png){:width="300px"}
![Search for Docker app](images/docker-app-search.png){:width="300px"}
2. The Docker menu (![whale menu](images/whale-x.svg){: .inline}) displays the Docker Subscription Service Agreement window.

View File

@ -30,7 +30,7 @@ To navigate to **Troubleshoot** either:
- Select the Docker menu ![whale menu](../images/whale-x.svg){: .inline} and then **Troubleshoot**
- Select the **Troubleshoot** icon from the Docker Dashboard
![Troubleshoot Docker Desktop](../images/troubleshoot.png){:width="600px"}
![Troubleshoot menu in Docker Desktop](../images/troubleshoot.png){:width="600px"}
The Troubleshoot page contains the following options:

View File

@ -8,7 +8,7 @@ redirect_from:
When you open Docker Desktop, the Docker Dashboard displays.
![dashboard](../images/dashboard.PNG){:width="750px"}
![Docker Dashboard on Containers view](../images/dashboard.PNG){:width="750px"}
The **Containers** view provides a runtime view of all your containers and applications. It allows you to interact with containers and applications, and manage the lifecycle of your applications directly from your machine. This view also provides an intuitive interface to perform common actions to inspect, interact with, and manage your Docker objects including containers and Docker Compose-based applications. For more information, see [Explore running containers and applications](container.md).

View File

@ -18,11 +18,11 @@ To disable two-factor authentication, log in to your Docker Hub account. Click
on your username and select **Account Settings**. Go to Security and click on
**Disable 2FA**.
![Disable 2fa button](../images/2fa-disable-2fa.png)
![Disable 2FA button](../images/2fa-disable-2fa.png)
You will be prompted to input your Docker ID password. Enter your password and
click **Disable 2FA**.
![Enter your password](../images/2fa-enter-pw-disable-2fa.png){:width="250px"}
![Enter your password view](../images/2fa-enter-pw-disable-2fa.png){:width="250px"}
You have successfully disabled two-factor authentication.

View File

@ -52,7 +52,7 @@ entering a text code into your authenticator app. Once you have linked your
authenticator app, it will give you a six-digit code to enter in text field.
Click **Next**.
![Enter special code](../images/2fa-enter-code.png)
![Enter special code view](../images/2fa-enter-code.png)
You have successfully enabled two-factor authentication. The next time you log
in to your Docker Hub account, you will be asked for a security code.

View File

@ -20,7 +20,7 @@ on your username and select **Account Settings**. Go to **Security** and **Click
Enter your password.
![Enter your password](../images/2fa-pw-new-code.png){:width="250px"}
![Enter your password view](../images/2fa-pw-new-code.png){:width="250px"}
Your new recovery code will be displayed. Remember to save your recovery code
and store it somewhere safe.

View File

@ -50,7 +50,7 @@ To create your access token:
will be used, or set a purpose for the token. You can view the following access
permissions from the drop-down:
![PAT Menu](images/hub-create-token.png){:width="700px"}
![New access token menu](images/hub-create-token.png){:width="700px"}
The access permissions are scopes that set restrictions in your
repositories. For example, for Read & Write permissions, an automation
@ -60,7 +60,7 @@ To create your access token:
5. Copy the token that appears on the screen and save it. You will not be able
to retrieve the token once you close this prompt.
![Copy Token](images/hub-copy-token.png){:width="700px"}
![Copy access token view](images/hub-copy-token.png){:width="700px"}
## Use an access token
@ -85,12 +85,12 @@ You can rename, activate, deactivate, or delete a token as needed.
This page shows an overview of all your tokens. You can also view the number
of tokens that are activated and deactivated in the toolbar.
![Delete or Edit](images/hub-delete-edit-token.png){:width="700px"}
![Delete or edit and access token](images/hub-delete-edit-token.png){:width="700px"}
2. Select a token and click **Delete** or **Edit**, or use the menu on
the far right of a token row to bring up the edit screen. You can also
select multiple tokens to delete at once.
![Modify Token](images/hub-edit-token.png){:width="700px"}
![Modify an access token](images/hub-edit-token.png){:width="700px"}
3. After modifying the token, click the **Save** button to save your changes.

View File

@ -41,7 +41,7 @@ By default, all activities that occur at organization and repository levels are
Click the **All Activities** drop-down list to view activities that are specific to an organization or a repository. After choosing **Organization** or **Repository**, you can further refine the results using the **All Actions** drop-down list. If you select the **Activities** tab from the **Repository** view, you can only filter repository-level activities.
![Refine org activities](images/org-all-actions.png){:width="600px"}
![Refine organization activities](images/org-all-actions.png){:width="600px"}
## Audit logs event definitions

View File

@ -179,7 +179,7 @@ bar chart of the build queue times and durations. Both views display the
pending, in progress, successful, and failed builds for any tag of the
repository.
![Active Builds](images/index-active.png)
![Active builds](images/index-active.png)
From either location, you can select a build job to view its build report. The
build report shows information about the build job. This includes the source
@ -191,7 +191,7 @@ repository and branch (or tag), the build logs, the build duration, creation tim
> refresh the Builds page. With the in-progress build logs, you can debug your
> builds before they're finished.
![Build Report](/docker-hub/images/index-report.png)
![Build report](/docker-hub/images/index-report.png)
## Cancel or retry a build
@ -200,7 +200,7 @@ report link on the General tab and on the Builds tab. You can also click the
**Cancel** on the build report page, or from the Timeline tab's logs
display for the build.
![list of builds showing the cancel icon](images/build-cancelicon.png)
![List of builds showing the cancel icon](images/build-cancelicon.png)
## Failing builds

View File

@ -166,7 +166,7 @@ To give a team access to a repository
4. Choose a permission from the **Permissions** drop-down list and click
**Add**.
![Team Repo Permissions](images/team-repo-permission.png){:width="700px"}
![Team repository permissions view](images/team-repo-permission.png){:width="700px"}
### View a team's permissions for all repositories

View File

@ -93,13 +93,13 @@ To create a repository:
3. Name it **&lt;your-username&gt;/my-private-repo**.
4. Set the visibility to **Private**.
![Create Repository](images/index-create-repo.png)
![Create a repository](images/index-create-repo.png)
5. Click **Create**.
You've created your first repository. You should see:
![Repository Created](images/index-repo-created.png)
![Repository created](images/index-repo-created.png)
### Step 3: Download and install Docker Desktop
@ -175,7 +175,7 @@ Docker image locally.
5. Your repository in Docker Hub should now display a new `latest` tag under **Tags**:
![Tag Created](images/index-tag.png)
![Tag created](images/index-tag.png)
Congratulations! You've successfully:

View File

@ -27,7 +27,7 @@ see the [organizations documentation](../../../docker-hub/orgs.md#create-an-orga
Docker Hub's individual repositories view shows you the available tags and the
size of the associated image. Go to the **Repositories** view and select repository to see its tags. To view individual tags, select the **Tags** tab.
![View Repo Tags](../../images/repo-overview.png)
![View repo tags](../../images/repo-overview.png)
Image sizes are the cumulative space taken up by the image and all its parent
images. This is also the disk space used by the contents of the `.tar` file
@ -48,7 +48,7 @@ To delete a tag, select the corresponding checkbox and select **Delete** from th
You can select a tag's digest to view more details.
![View Tag](../../images/repo-image-layers.png)
![View tag](../../images/repo-image-layers.png)
## Searching for repositories

View File

@ -11,7 +11,7 @@ When configuring repositories, your private repositories let you keep your conta
You can make an existing repository private by going to its **Settings** tab and select **Make private**.
![Repo make private](../../images/repo-make-private.png){: style="max-width: 60%"}
![Make a repo private](../../images/repo-make-private.png){: style="max-width: 60%"}
You get one free private repository with your Docker Hub user account (not
available for organizations you're a member of). If you need more private

View File

@ -53,7 +53,7 @@ To create a private repository, navigate to Docker Hub and select **Repositories
>
> To update your public repository to private, navigate to your repository, select **Settings** and **Make private**.
![Create Private Repo](/docker-hub/images/repo-create-private.png){: style="max-width: 60%"}
![Create a private repo](/docker-hub/images/repo-create-private.png){: style="max-width: 60%"}
## Deleting a repository

View File

@ -24,7 +24,7 @@ SSO must be set up and be functional for your organization before you start conf
Before you make SCIM configuration changes in your IdP, navigate to [Docker Hub](https://hub.docker.com){: target="_blank" rel="noopener" class="_"} and select **Organizations** > **Settings** > **Security**. SCIM is locked until you complete the SSO configuration and verify your company domain. Enable SCIM and access your Base URL and API Token. You can also generate a new API token.
![scim-provisioning](images/scim-provisioning.png){:width="700px"}
![SCIM provisioning view](images/scim-provisioning.png){:width="700px"}
### Okta
@ -37,16 +37,16 @@ Before you make SCIM configuration changes in your IdP, navigate to [Docker Hub]
* **Supported Provisioning actions**: select **Push New Users**, **Push Profile Updates**
* **Authorization/Bearer**: SCIM API Token from Docker Hub
![scim-app-provisioning](images/scim-app-provisioning.png){:width="700px"}
![SCIM app provisioning options](images/scim-app-provisioning.png){:width="700px"}
4. Click **Test Connection Configuration** to complete the configuration and **Save**.
5. Once configured, you must enable synchronization. Navigate to **Provisioning** > **To App** > **Edit**, and enable **Create Users**, **Update User Attributes** and **Deactivates Users**, and **Save**.
![provisioning-to-app](images/provisioning-to-app.png){:width="700px"}
![Enable synchronization](images/provisioning-to-app.png){:width="700px"}
6. Remove all fields that aren't supported from your **Docker Hub Attributes Mappings**.
![scim-attributes](images/scim-attributes.png){:width="700px"}
![Docker Hub attributes mappings view](images/scim-attributes.png){:width="700px"}
The synchronization of user data is now automated, and the members in your Docker organization will now be automatically provisioned, updated, and de-provisioned based on the access control managed through your identity provider, Okta.

View File

@ -8,7 +8,7 @@ You can use webhooks to cause an action in another service in response to a push
Configure webhooks through the "Webhooks" tab on your Docker Hub repository:
![Webhooks Page](images/webhooks-empty.png)
![Webhooks page](images/webhooks-empty.png)
### Create Webhooks
@ -16,13 +16,13 @@ To create a webhook, visit the webhooks tab for your repository. Then:
1. Provide a name for the webhooks
2. Provide a destination webhook URL. This is where webhook POST requests will be delivered:
![Webhooks Create](images/webhooks-create.png)
![Create webhooks](images/webhooks-create.png)
### View Webhook delivery history
You can view Webhook Delivery History by clicking on the submenu of the webhook and then clicking "View History"
![Webhooks View History](images/webhooks-submenu.png)
![Webhook delivery history](images/webhooks-submenu.png)
You can then view the delivery history, and whether delivering the POST request was successful or failed:

View File

@ -32,7 +32,7 @@ the lifetime of the node in the current swarm.
The diagram below illustrates how manager nodes and worker nodes encrypt
communications using a minimum of TLS 1.2.
![tls diagram](/engine/swarm/images/tls.png)
![TLS diagram](/engine/swarm/images/tls.png)
The example below shows the information from a certificate from a worker node:

View File

@ -31,7 +31,7 @@ For example, imagine you want to load balance between three instances of an HTTP
listener. The diagram below shows an HTTP listener service with three replicas.
Each of the three instances of the listener is a task in the swarm.
![services diagram](../images/services-diagram.png)
![ HTTP listener service with three replicas](../images/services-diagram.png)
A container is an isolated process. In the swarm mode model, each task invokes
exactly one container. A task is analogous to a “slot” where the scheduler
@ -66,7 +66,7 @@ current version of Docker only supports container tasks.
The diagram below shows how swarm mode accepts service create requests and
schedules tasks to worker nodes.
![services flow](../images/service-lifecycle.png)
![Services flow](../images/service-lifecycle.png)
### Pending services
@ -116,7 +116,7 @@ swarm.
The diagram below shows a three-service replica in yellow and a global service
in gray.
![global vs replicated services](../images/replicated-vs-global.png)
![Global vs replicated services](../images/replicated-vs-global.png)
## Learn more

View File

@ -69,7 +69,7 @@ the node. For externally routable IP addresses, the port is available from
outside the host. For all other IP addresses the access is only available from
within the host.
![service ingress image](images/ingress-routing-mesh.png)
![Service ingress image](images/ingress-routing-mesh.png)
You can publish a port for an existing service using the following command:
@ -198,7 +198,7 @@ You can configure an external load balancer to route requests to a swarm
service. For example, you could configure [HAProxy](https://www.haproxy.org) to
balance requests to an nginx service published to port 8080.
![ingress with external load balancer image](images/ingress-lb.png)
![Ingress with external load balancer image](images/ingress-lb.png)
In this case, port 8080 must be open between the load balancer and the nodes in
the swarm. The swarm nodes can reside on a private network that is accessible to

View File

@ -776,7 +776,7 @@ possible to fulfill.
This diagram illustrates how placement preferences work:
![placement preferences example](images/placement_prefs.png)
![How placement preferences work](images/placement_prefs.png)
When updating a service with `docker service update`, `--placement-pref-add`
appends a new placement preference after all existing placement preferences.

View File

@ -126,7 +126,7 @@ Now that you have an image, you can run the application in a [container](../get-
2. After a few seconds, open your web browser to [http://localhost:3000](http://localhost:3000){:target="_blank" rel="noopener" class="_"}.
You should see your app.
![Empty Todo List](images/todo-list-empty.png){: style="width:450px;margin-top:20px;"}
![Empty todo list](images/todo-list-empty.png){: style="width:450px;margin-top:20px;"}
{: .text-center }
3. Go ahead and add an item or two and see that it works as you expect. You can mark items as complete and remove items. Your frontend is successfully storing items in the backend.

View File

@ -84,7 +84,7 @@ daemon. The Docker client and daemon communicate using a REST API, over UNIX
sockets or a network interface. Another Docker client is Docker Compose,
that lets you work with applications consisting of a set of containers.
![Docker Architecture Diagram](/engine/images/architecture.svg)
![Docker Architecture diagram](/engine/images/architecture.svg)
### The Docker daemon

View File

@ -264,7 +264,7 @@ $ docker run \
Let's test that the application works and is connecting to the database. Using a web browser, access `http://localhost:5000`. A page similar to the following image appears.
![image of app page](./images/dotnet-verify-db.png)
![Image of app page](./images/dotnet-verify-db.png)
## Connect Adminer and populate the database
@ -284,7 +284,7 @@ Using a web browser, access `http://localhost:8080`.
The Adminer login page appears.
![image of app page](./images/dotnet-adminer-login.png)
![Image of app page](./images/dotnet-adminer-login.png)
Specify the following in the login page and then click **Login**:
@ -296,21 +296,21 @@ Specify the following in the login page and then click **Login**:
The `Schema: public` page appears.
![image of app page](./images/dotnet-adminer-db.png)
![Image of app page](./images/dotnet-adminer-db.png)
In `Tables and views`, click `Students`. The `Table: Students` page appears.
![image of app page](./images/dotnet-adminer-table.png)
![Image of app page](./images/dotnet-adminer-table.png)
Click `New item`. The `Insert: Students` page appears.
![image of app page](./images/dotnet-adminer-add.png)
![Image of app page](./images/dotnet-adminer-add.png)
Specify a `LastName`, `FirstMidName`, and `EnrollmentDate`. Click `Save`.
Verify that the student name appears in the application. Use a web browser to access `http://localhost:5000`.
![image of app page](./images/dotnet-app-verify-db-add.png)
![Image of app page](./images/dotnet-app-verify-db-add.png)
List and then stop the application, database, and Adminer containers.

View File

@ -38,7 +38,7 @@ $ docker run --publish 5000:80 dotnet-docker
Now, let's access `http://localhost:5000` in a browser. You should see a page similar to the following image.
![image of app page](./images/dotnet-app-verify-build.png)
![Image of app page](./images/dotnet-app-verify-build.png)
Success! We were able to connect to the application running inside of our container on port 80.
@ -57,7 +57,7 @@ Docker started our container in the background and printed the Container ID on t
Again, lets make sure that our container is running properly. In a web browser, access `http://localhost:5000`. You should see a page similar to the following image.
![image of app page](./images/dotnet-app-verify-build.png)
![Image of app page](./images/dotnet-app-verify-build.png)
## List containers

View File

@ -184,7 +184,7 @@ We pass the `--build` flag so Docker compiles our image and then starts it.
If all goes well, you should see something similar:
![node-compile](images/node-compile.png){:width="800px"}
![Screenshot of image being compiled](images/node-compile.png){:width="800px"}
Now lets test our API endpoint. Run the following curl command:
@ -206,7 +206,7 @@ Well use the debugger that comes with the Chrome browser. Open Chrome on your
It opens the following screen.
![Chrome-inspect](images/chrome-inspect.png){:width="800px"}
![Imaging showing Chrome inspect with DevTools](images/chrome-inspect.png){:width="800px"}
Click the **Open dedicated DevTools for Node** link. This opens the DevTools that are connected to the running Node.js process inside our container.
@ -222,7 +222,7 @@ Add the following code above the existing `server.use()` statement, and save the
If you take a look at the terminal where our Compose application is running, youll see that nodemon noticed the changes and reloaded our application.
![nodemon](images/nodemon.png){:width="800px"}
![Image of terminal noticing change and reloading](images/nodemon.png){:width="800px"}
Navigate back to the Chrome DevTools and set a breakpoint on the line containing the `return res.json({ "foo": "bar" })` statement, and then run the following curl command to trigger the breakpoint.

View File

@ -84,7 +84,7 @@ To help understand how this mode interacts with other hosts, the following
figure shows the same layer 2 segment between two Docker hosts that applies to
and IPvlan L2 mode.
![Multiple IPvlan Hosts](images/macvlan-bridge-ipvlan-l2.png)
![Multiple IPvlan hosts](images/macvlan-bridge-ipvlan-l2.png)
The following will create the exact same network as the network `db_net` created
earlier, with the driver defaults for `--gateway=192.168.1.1` and `-o ipvlan_mode=l2`.
@ -161,7 +161,7 @@ practice of layered defense in depth architectures. VLANs or the equivocal VNI
(Virtual Network Identifier) when using the Overlay driver, are the first step
in isolating tenant traffic.
![Docker VLANs in Depth](images/vlans-deeper-look.png)
![Docker VLANs in-depth](images/vlans-deeper-look.png)
The Linux sub-interface tagged with a VLAN can either already exist or will be
created when you call a `docker network create`. `docker network rm` will delete
@ -293,7 +293,7 @@ upstream network will not know about without route distribution. For those
curious how IPvlan L3 will fit into container networking, see the following
examples.
![Docker IPvlan L2 Mode](images/ipvlan-l3.png)
![Docker IPvlan L2 mode](images/ipvlan-l3.png)
IPvlan L3 mode drops all broadcast and multicast traffic. This reason alone
makes IPvlan L3 mode a prime candidate for those looking for massive scale and

View File

@ -37,7 +37,7 @@ To remove a user from an organization:
When you disable SSO, you can delete the connection to remove the configuration settings and the added domains. Once you delete this connection, it can't be undone. Users must authenticate with their Docker ID and password or create a password reset if they don't have one.
![Delete SSO](/single-sign-on/images/delete-sso.png){:width="500px"}
![Delete SSO view](/single-sign-on/images/delete-sso.png){:width="500px"}
## FAQs

View File

@ -21,7 +21,7 @@ available. If you are developing new Docker applications, consider using
[named volumes](volumes.md) instead. You can't use Docker CLI commands to directly
manage bind mounts.
![bind mounts on the Docker host](images/types-of-mounts-bind.png)
![Bind mounts on the Docker host](images/types-of-mounts-bind.png)
## Choose the -v or --mount flag

View File

@ -38,7 +38,7 @@ in the container's filesystem.
An easy way to visualize the difference among volumes, bind mounts, and `tmpfs`
mounts is to think about where the data lives on the Docker host.
![types of mounts and where they live on the Docker host](images/types-of-mounts.png)
![Types of mounts and where they live on the Docker host](images/types-of-mounts.png)
- **Volumes** are stored in a part of the host filesystem which is _managed by
Docker_ (`/var/lib/docker/volumes/` on Linux). Non-Docker processes should not

View File

@ -167,14 +167,14 @@ nested and snapshotted. The diagram below shows 4 subvolumes. 'Subvolume 2' and
'Subvolume 3' are nested, whereas 'Subvolume 4' shows its own internal directory
tree.
![subvolume example](images/btfs_subvolume.jpg)
![Subvolume example](images/btfs_subvolume.jpg)
Only the base layer of an image is stored as a true subvolume. All the other
layers are stored as snapshots, which only contain the differences introduced
in that layer. You can create snapshots of snapshots as shown in the diagram
below.
![snapshots diagram](images/btfs_snapshots.jpg)
![Snapshots diagram](images/btfs_snapshots.jpg)
On disk, snapshots look and feel just like subvolumes, but in reality they are
much smaller and more space-efficient. Copy-on-write is used to maximize storage
@ -182,7 +182,7 @@ efficiency and minimize layer size, and writes in the container's writable layer
are managed at the block level. The following image shows a subvolume and its
snapshot sharing data.
![snapshot and subvolume sharing data](images/btfs_pool.jpg)
![Snapshot and subvolume sharing data](images/btfs_pool.jpg)
For maximum efficiency, when a container needs more space, it is allocated in
*chunks* of roughly 1 GB in size.

View File

@ -740,7 +740,7 @@ container, it is a snapshot of the image the container is based on. The followin
example shows a Docker host with two running containers. The first is a `ubuntu`
container and the second is a `busybox` container.
![ubuntu and busybox image layers](images/two_dm_container.jpg)
![Ubuntu and busybox image layers](images/two_dm_container.jpg)
## How container reads and writes work with `devicemapper`
@ -750,7 +750,7 @@ With `devicemapper`, reads happen at the block level. The diagram below shows
the high level process for reading a single block (`0x44f`) in an example
container.
![reading a block with devicemapper](images/dm_container.jpg)
![Reading a block with devicemapper](images/dm_container.jpg)
An application makes a read request for block `0x44f` in the container. Because
the container is a thin snapshot of an image, it doesn't have the block, but it

View File

@ -90,7 +90,7 @@ stored in this container layer, multiple containers can share access to the same
underlying image and yet have their own data state. The diagram below shows
multiple containers sharing the same Ubuntu 15.04 image.
![Containers sharing same image](images/sharing-layers.jpg)
![Containers sharing the same image](images/sharing-layers.jpg)
Docker uses storage drivers to manage the contents of the image layers and the
writable container layer. Each storage driver handles the implementation

View File

@ -248,7 +248,7 @@ The unified view is exposed through a directory called `merged` which is
effectively the containers mount point. The diagram shows how Docker constructs
map to OverlayFS constructs.
![overlayfs lowerdir, upperdir, merged](images/overlay_constructs.jpg)
![How Docker constructs map to OverlayFS constructs](images/overlay_constructs.jpg)
Where the image layer and the container layer contain the same files, the
container layer "wins" and obscures the existence of the same files in the image

View File

@ -150,7 +150,7 @@ ZFS uses the following objects:
The process of creating a clone:
![zfs snapshots and clones](images/zfs_clones.jpg)
![ZFS snapshots and clones](images/zfs_clones.jpg)
1. A read-only snapshot is created from the filesystem.
@ -175,7 +175,7 @@ on a ZFS Snapshot of the top layer of the image it's created from.
The diagram below shows how this is put together with a running container based
on a two-layer image.
![zfs pool for Docker container](images/zfs_zpool.jpg)
![ZFS pool for Docker container](images/zfs_zpool.jpg)
When you start a container, the following steps happen in order:
@ -209,7 +209,7 @@ the dataset it was created from (the snapshots of its parent layers). Read
operations are fast, even if the data being read is from a deep layer.
This diagram illustrates how block sharing works:
![zfs block sharing](images/zpool_blocks.jpg)
![ZFS block sharing](images/zpool_blocks.jpg)
### Writing files

View File

@ -29,7 +29,7 @@ container's writable layer, because a volume does not increase the size of the
containers using it, and the volume's contents exist outside the lifecycle of a
given container.
![volumes on the Docker host](images/types-of-mounts-volume.png)
![Volumes on the Docker host](images/types-of-mounts-volume.png)
If your container generates non-persistent state data, consider using a
[tmpfs mount](tmpfs.md) to avoid storing the data anywhere permanently, and to