diff --git a/content/get-started/11_what_next.md b/content/get-started/11_what_next.md
index 2da650229a..4206427bd8 100644
--- a/content/get-started/11_what_next.md
+++ b/content/get-started/11_what_next.md
@@ -1,11 +1,11 @@
---
-title: What next after getting started
+title: What next after the Docker workshop
keywords: get started, setup, orientation, quickstart, intro, concepts, containers,
docker desktop
description: Making sure you have more ideas of what you could do next with your application
---
-Although you're done with the get started guide, there's still a lot more to learn about containers.
+Although you're done with the workshop, there's still a lot more to learn about containers.
Here are a few other areas to look at next.
diff --git a/content/get-started/_index.md b/content/get-started/_index.md
index b3d1723fd7..41f4af5087 100644
--- a/content/get-started/_index.md
+++ b/content/get-started/_index.md
@@ -1,9 +1,9 @@
---
-title: Overview of the get started guide
+title: Overview of the Docker workshop
keywords: docker basics, how to start a docker container, container settings, setup
docker, how to setup docker, setting up docker, docker container guide, how to get
started with docker
-description: Get started with the Docker basics in this comprehensive overview, You'll
+description: Get started with the Docker basics in this workshop, You'll
learn about containers, images, and how to containerize your first application.
aliases:
- /engine/getstarted-voting-app/
@@ -62,7 +62,7 @@ aliases:
- /get-started/hands-on-overview/
---
-This guide contains step-by-step instructions on how to get started with Docker. This guide shows you how to:
+This 45-minute workshop contains step-by-step instructions on how to get started with Docker. This workshop shows you how to:
- Build and run an image as a container.
- Share images using Docker Hub.
diff --git a/content/guides/_index.md b/content/guides/_index.md
index 91c9f41ace..ce395f251a 100644
--- a/content/guides/_index.md
+++ b/content/guides/_index.md
@@ -11,7 +11,7 @@ get-started:
icon: summarize
- title: Get started
description: Get started with the basics and the benefits of containerizing your applications.
- link: /get-started/
+ link: /guides/getting-started/get-docker-desktop/
icon: rocket
- title: Docker concepts
description: Gain a better understanding of foundational Docker concepts.
@@ -35,6 +35,10 @@ dive-deeper:
description: Deploy and manage Docker containers at scale.
link: /get-started/orchestration/
icon: workspaces
+- title: Docker workshop
+ description: Get guided through a 45-minute workshop to learn about Docker.
+ link: /get-started/
+ icon: desk
resources:
- title: Educational resources
diff --git a/content/guides/getting-started/build-and-push-first-image.md b/content/guides/getting-started/build-and-push-first-image.md
new file mode 100644
index 0000000000..ff67d227e1
--- /dev/null
+++ b/content/guides/getting-started/build-and-push-first-image.md
@@ -0,0 +1,198 @@
+---
+title: Build and push your first image
+keywords: concepts, container, docker desktop
+description: This concept page will teach you how to build and push your first image
+---
+
+{{< youtube-embed 7ge1s5nAa34 >}}
+
+## Explanation
+
+Now that you've updated the [to-do list app](develop-with-containers.md), you’re ready to create a container image for the application and share it on Docker Hub. To do so, you will need to do the following:
+
+1. Sign in with your Docker account
+2. Create an image repository on Docker Hub
+3. Build the container image
+4. Push the image to Docker Hub
+
+Before you dive into the hands-on guide, the following are a few core concepts that you should be aware of.
+
+### Container images
+
+If you’re new to container images, think of them as a standardized package that contains everything needed to run an application, including its files, configuration, and dependencies. These packages can then be distributed and shared with others.
+
+### Docker Hub
+
+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/):
+
+- [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
+- [phpmyadmin](https://hub.docker.com/_/phpmyadmin) - provides phpMyAdmin, a web-based interface to the MySQL database
+- [traefik](https://hub.docker.com/_/traefik) - provides Traefik, a modern HTTP reverse proxy and load balancer that routes requests to the appropriate container based on routing rules
+
+Explore the full catalog of [Docker Official Images](https://hub.docker.com/search?image_filter=official&q=), [Docker Verified Publishers](https://hub.docker.com/search?q=&image_filter=store), and [Docker Sponsored Open Source Software](https://hub.docker.com/search?q=&image_filter=open_source) images to see more of what there is to run and build on.
+
+## Try it out
+
+In this hands-on guide, you'll learn how to sign in to Docker Hub and push images to Docker Hub repository.
+
+## Sign in with your Docker account
+
+To push images to Docker Hub, you will need to sign in with a Docker account.
+
+1. Open the Docker Dashboard.
+
+2. Select **Sign in** at the top-right corner.
+
+3. If needed, create an account and then complete the sign-in flow.
+
+Once you're done, you should see the **Sign in** button turn into a profile picture.
+
+## Create an image repository
+
+Now that you have an account, you can create an image repository. Just as a Git repository holds source code, an image repository stores container images.
+
+1. Go to [Docker Hub](https://hub.docker.com).
+
+2. Select **Create repository**.
+
+3. On the **Create repository** page, enter the following information:
+
+ - **Repository name** - `getting-started-todo-app`
+ - **Short description** - feel free to enter a description if you'd like
+ - **Visibility** - select **Public** to allow others to pull your customized to-do app
+
+4. Select **Create** to create the repository.
+
+
+## Build and push the image
+
+Now that you have a repository, you are ready to build and push your image. An important note is that the image you are building extends the Node image, meaning you don't need to install or configure Node, yarn, etc. You can simply focus on what makes your application unique.
+
+> **What is an image/Dockerfile?**
+>
+> Without going too deep yet, think of a container image as a single package that contains
+> everything needed to run a process. In this case, it will contain a Node environment,
+> the backend code, and the compiled React code.
+>
+> Any machine that runs a container using the image, will then be able to run the application as
+> it was built without needing anything else pre-installed on the machine.
+>
+> A `Dockerfile` is a text-based script that provides the instruction set on how to build
+> the image. For this quick start, the repository already contains the Dockerfile.
+
+
+{{< tabs group="cli-or-vs-code" persist=true >}}
+{{< tab name="CLI" >}}
+
+1. To get started, either clone or [download the project as a ZIP file](https://github.com/docker/getting-started-todo-app/archive/refs/heads/main.zip) to your local machine.
+
+ ```console
+ $ git clone https://github.com/docker/getting-started-todo-app
+ ```
+
+ And after the project is cloned, navigate into the new directory created by the clone:
+
+ ```console
+ $ cd getting-started-todo-app
+ ```
+
+2. Build the project by running the following command, swapping out `DOCKER_USERNAME` with your username.
+
+ ```console
+ $ docker build -t
+
+{{< card
+ title="Docker Desktop for Windows"
+ description="[Download](https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe?utm_source=docker&utm_medium=webreferral&utm_campaign=docs-driven-download-windows) | [Install instructions](/desktop/install/windows-install)"
+ icon="/assets/images/windows_48.svg" >}}
+
+
+
+{{< card
+ title="Docker Desktop for Linux"
+ description="[Install instructions](/desktop/install/linux-install/)"
+ icon="/assets/images/linux_48.svg" >}}
+
+Once it's installed, complete the setup process and you're all set to run a Docker container.
+
+## Try it out
+
+In this hands-on guide, you will see how to run a Docker container using Docker Desktop.
+
+Follow the instructions to run a container using the CLI.
+
+
+## Run your first container
+
+Open your CLI terminal and start a container by running the `docker run` command:
+
+
+
+```console
+$ docker run -d -p 8080:80 docker/welcome-to-docker
+```
+
+## Access the frontend
+
+For this container, the frontend is accessible on port `8080`. To open the website, visit [http://localhost:8080](http://localhost:8080) in your browser.
+
+
+
+
+
+
+
+## Manage containers using Docker Desktop
+
+
+1. Open Docker Desktop and select the **Container** field on the left sidebar.
+2. You can view information about your container including logs, and files, and even access the shell by selecting the **Exec** tab.
+
+ 
+
+
+3. Select the **Inspect** field to obtain detailed information about the container. You can perform various actions such as pause, resume, start or stop containers, or explore the **Logs**, **Bind mounts**, **Exec**, **Files**, and **Stats** tabs.
+
+
+
+Docker Desktop simplifies container management for developers by streamlining the setup, configuration, and compatibility of applications across different environments, thereby addressing the pain points of environment inconsistencies and deployment challenges.
+
+## What's next?
+
+Now that you have Docker Desktop installed and ran your first container, it's time to start developing with containers.
+
+{{< button text="Develop with containers" url="develop-with-containers" >}}
+
diff --git a/content/guides/getting-started/images/build-vscode-menu-item.webp b/content/guides/getting-started/images/build-vscode-menu-item.webp
new file mode 100644
index 0000000000..160be98b8f
Binary files /dev/null and b/content/guides/getting-started/images/build-vscode-menu-item.webp differ
diff --git a/content/guides/getting-started/images/build-vscode-push-image.webp b/content/guides/getting-started/images/build-vscode-push-image.webp
new file mode 100644
index 0000000000..75c4cef04f
Binary files /dev/null and b/content/guides/getting-started/images/build-vscode-push-image.webp differ
diff --git a/content/guides/getting-started/images/clone-the-repo.webp b/content/guides/getting-started/images/clone-the-repo.webp
new file mode 100644
index 0000000000..dbfce9d62a
Binary files /dev/null and b/content/guides/getting-started/images/clone-the-repo.webp differ
diff --git a/content/guides/getting-started/images/develop-app-with-greetings.webp b/content/guides/getting-started/images/develop-app-with-greetings.webp
new file mode 100644
index 0000000000..2e5ff3137a
Binary files /dev/null and b/content/guides/getting-started/images/develop-app-with-greetings.webp differ
diff --git a/content/guides/getting-started/images/develop-app-with-updated-client.webp b/content/guides/getting-started/images/develop-app-with-updated-client.webp
new file mode 100644
index 0000000000..348e87f2dc
Binary files /dev/null and b/content/guides/getting-started/images/develop-app-with-updated-client.webp differ
diff --git a/content/guides/getting-started/images/develop-app-with-updated-placeholder.webp b/content/guides/getting-started/images/develop-app-with-updated-placeholder.webp
new file mode 100644
index 0000000000..80dce4645d
Binary files /dev/null and b/content/guides/getting-started/images/develop-app-with-updated-placeholder.webp differ
diff --git a/content/guides/getting-started/images/develop-getting-started-app-first-launch.webp b/content/guides/getting-started/images/develop-getting-started-app-first-launch.webp
new file mode 100644
index 0000000000..d61ee3abf8
Binary files /dev/null and b/content/guides/getting-started/images/develop-getting-started-app-first-launch.webp differ
diff --git a/content/guides/getting-started/images/exec-into-docker-container.webp b/content/guides/getting-started/images/exec-into-docker-container.webp
new file mode 100644
index 0000000000..5b9368b904
Binary files /dev/null and b/content/guides/getting-started/images/exec-into-docker-container.webp differ
diff --git a/content/guides/getting-started/images/inspecting-container.webp b/content/guides/getting-started/images/inspecting-container.webp
new file mode 100644
index 0000000000..889c34d2f3
Binary files /dev/null and b/content/guides/getting-started/images/inspecting-container.webp differ
diff --git a/content/guides/getting-started/whats-next.md b/content/guides/getting-started/whats-next.md
new file mode 100644
index 0000000000..13a4d6b8f7
--- /dev/null
+++ b/content/guides/getting-started/whats-next.md
@@ -0,0 +1,74 @@
+---
+title: What's next
+keywords: concepts, build, images, container, docker desktop
+description: Explore step-by-step guides to hep you understand core Docker concepts, building images, and running containers.
+notoc: true
+
+the-basics:
+- title: What is a container?
+ description: Learn how to run your first container.
+ link: /guides/docker-concepts/the-basics/what-is-a-container/
+- title: What is an image?
+ description: Learn the basics of image layers.
+ link: /guides/docker-concepts/the-basics/what-is-an-image/
+- title: What is a registry?
+ description: Learn about container registries, explore their interoperability, and interact with registries.
+ link: /guides/docker-concepts/the-basics/what-is-a-registry/
+- title: What is Docker Compose?
+ description: Gain a better understanding of Docker Compose.
+ link: /guides/docker-concepts/the-basics/what-is-docker-compose/
+
+building-images:
+- title: Understanding image layers
+ description: Learn about the layers of container images.
+ link: /guides/docker-concepts/building-images/understanding-image-layers/
+- title: Writing a Dockerfile
+ description: Learn how to create an image using a Dockerfile.
+ link: /guides/docker-concepts/building-images/writing-a-dockerfile/
+- title: Build, tag and publish an image
+ description: Learn how to build, tag, and publish an image to Docker Hub or any other registry.
+ link: /guides/docker-concepts/building-images/build-tag-and-publish-an-image/
+- title: Using the build cache
+ description: Learn about the build cache, what changes invalidate the cache, and how to effectively use the build cache.
+ link: /guides/docker-concepts/building-images/using-the-build-cache/
+- title: Multi-stage builds
+ description: Get a better understanding of multi-stage builds and their benefits.
+ link: /guides/docker-concepts/building-images/multi-stage-builds/
+
+running-containers:
+- title: Publishing ports
+ description: Understand the significance of publishing and exposing ports in Docker.
+ link: /guides/docker-concepts/running-containers/publishing-ports/
+- title: Overriding container defaults
+ description: Learn how to override the container defaults using the `docker run` command.
+ link: /guides/docker-concepts/running-containers/overriding-container-defaults/
+- title: Persisting container data
+ description: Learn the significance of data persistence in Docker.
+ link: /guides/docker-concepts/running-containers/persisting-container-data/
+- title: Sharing local files with containers
+ description: Explore the various storage options available in Docker and their common usage.
+ link: /guides/docker-concepts/running-containers/sharing-local-files/
+- title: Multi-container applications
+ description: Learn the significance of multi-container applications and how they're different from single-container applications.
+ link: /guides/docker-concepts/running-containers/multi-container-applications/
+---
+
+The following sections provide step-by-step guides to help you understand core Docker concepts, building images, and running containers.
+
+## The basics
+
+Get started learning the core concepts of containers, images, registries, and Docker Compose.
+
+{{< grid items="the-basics" >}}
+
+## Building images
+
+Craft optimized container images with Dockerfiles, build cache, and multi-stage builds.
+
+{{< grid items="building-images" >}}
+
+## Running containers
+
+Master essential techniques for exposing ports, overriding defaults, persisting data, sharing files, and managing multi-container applications.
+
+{{< grid items="running-containers" >}}
diff --git a/data/toc.yaml b/data/toc.yaml
index 51c06ed2f2..e2290b33e3 100644
--- a/data/toc.yaml
+++ b/data/toc.yaml
@@ -3,28 +3,18 @@ Guides:
path: /guides/
- title: Docker overview
path: /get-started/overview/
-- sectiontitle: Get started
+
+- sectiontitle: "Getting started"
section:
- - title: "Part 1: Overview"
- path: /get-started/
- - title: "Part 2: Containerize an application"
- path: /get-started/02_our_app/
- - title: "Part 3: Update the application"
- path: /get-started/03_updating_app/
- - title: "Part 4: Share the application"
- path: /get-started/04_sharing_app/
- - title: "Part 5: Persist the DB"
- path: /get-started/05_persisting_data/
- - title: "Part 6: Use bind mounts"
- path: /get-started/06_bind_mounts/
- - title: "Part 7: Multi-container apps"
- path: /get-started/07_multi_container/
- - title: "Part 8: Use Docker Compose"
- path: /get-started/08_using_compose/
- - title: "Part 9: Image-building best practices"
- path: /get-started/09_image_best/
- - title: "Part 10: What next?"
- path: /get-started/11_what_next/
+ - title: "Get Docker Desktop"
+ path: /guides/getting-started/get-docker-desktop/
+ - title: "Develop with containers"
+ path: /guides/getting-started/develop-with-containers/
+ - title: "Build and push your first image"
+ path: /guides/getting-started/build-and-push-first-image/
+ - title: "What's next"
+ path: /guides/getting-started/whats-next/
+
- sectiontitle: "Docker concepts"
section:
@@ -261,6 +251,31 @@ Guides:
path: /get-started/swarm-deploy/
- title: Cloud integrations
path: /cloud/
+
+- sectiontitle: Docker workshop
+ section:
+ - title: "Part 1: Overview"
+ path: /get-started/
+ - title: "Part 2: Containerize an application"
+ path: /get-started/02_our_app/
+ - title: "Part 3: Update the application"
+ path: /get-started/03_updating_app/
+ - title: "Part 4: Share the application"
+ path: /get-started/04_sharing_app/
+ - title: "Part 5: Persist the DB"
+ path: /get-started/05_persisting_data/
+ - title: "Part 6: Use bind mounts"
+ path: /get-started/06_bind_mounts/
+ - title: "Part 7: Multi-container apps"
+ path: /get-started/07_multi_container/
+ - title: "Part 8: Use Docker Compose"
+ path: /get-started/08_using_compose/
+ - title: "Part 9: Image-building best practices"
+ path: /get-started/09_image_best/
+ - title: "Part 10: What next?"
+ path: /get-started/11_what_next/
+
+
- path: /get-started/resources/
title: "Educational resources"
diff --git a/layouts/index.html b/layouts/index.html
index cc13e1ef39..ff66f7d9df 100644
--- a/layouts/index.html
+++ b/layouts/index.html
@@ -119,7 +119,7 @@