diff --git a/.forestry/front_matter/templates/docker-desktop.yml b/.forestry/front_matter/templates/docker-desktop.yml
new file mode 100644
index 000000000..a692a822c
--- /dev/null
+++ b/.forestry/front_matter/templates/docker-desktop.yml
@@ -0,0 +1,4 @@
+---
+label: Docker Desktop
+hide_body: false
+fields: []
diff --git a/.forestry/front_matter/templates/docker-security.yml b/.forestry/front_matter/templates/docker-security.yml
new file mode 100644
index 000000000..36f2d72fe
--- /dev/null
+++ b/.forestry/front_matter/templates/docker-security.yml
@@ -0,0 +1,4 @@
+---
+label: Docker Security
+hide_body: false
+fields: []
diff --git a/.forestry/settings.yml b/.forestry/settings.yml
new file mode 100644
index 000000000..c3e5eafb8
--- /dev/null
+++ b/.forestry/settings.yml
@@ -0,0 +1,27 @@
+---
+new_page_extension: md
+auto_deploy: false
+admin_path:
+webhook_url:
+sections:
+- type: jekyll-pages
+ label: Pages
+ create: documents
+- type: jekyll-posts
+ label: Posts
+ create: all
+upload_dir: uploads
+public_path: "/uploads"
+front_matter_path: ''
+use_front_matter_path: false
+file_template: ":filename:"
+build:
+ preview_env:
+ - JEKYLL_ENV=staging
+ preview_output_directory: _site
+ install_dependencies_command: bundle install --path vendor/bundle
+ preview_docker_image: forestryio/ruby:2.6
+ mount_path: "/srv"
+ working_dir: "/srv"
+ instant_preview_command: bundle exec jekyll serve --drafts --unpublished --future
+ -d _site
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
index ae1b2df18..4eec435a8 100644
--- a/.github/FUNDING.yml
+++ b/.github/FUNDING.yml
@@ -1,7 +1,6 @@
# These are supported funding model platforms
-github: [ajeetraina]
+github: [collabnix]
ko_fi: # http://ko-fi.com/K3K5AZX5
-tidelift: npm/babel
community_bridge: # collabnix
custom: # http://ko-fi.com/K3K5AZX5
diff --git a/.server_client.md.swp b/.server_client.md.swp
new file mode 100644
index 000000000..60628715d
Binary files /dev/null and b/.server_client.md.swp differ
diff --git a/Gemfile.lock b/Gemfile.lock
index 01e0eaf11..1e4f22c8c 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -8,7 +8,7 @@ PATH
GEM
remote: https://rubygems.org/
specs:
- activesupport (6.0.5)
+ activesupport (6.0.6.1)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
@@ -22,7 +22,7 @@ GEM
execjs
coffee-script-source (1.11.1)
colorator (1.1.0)
- commonmarker (0.23.4)
+ commonmarker (0.23.7)
concurrent-ruby (1.1.10)
dnsruby (1.61.9)
simpleidn (~> 0.1)
@@ -243,11 +243,15 @@ GEM
jekyll (>= 3.5, < 5.0)
jekyll-feed (~> 0.9)
jekyll-seo-tag (~> 2.1)
- minitest (5.15.0)
+ minitest (5.17.0)
multipart-post (2.1.1)
- nokogiri (1.13.6-arm64-darwin)
+ nokogiri (1.15.4-arm64-darwin)
racc (~> 1.4)
- nokogiri (1.13.6-x86_64-darwin)
+ nokogiri (1.15.4-x86_64-darwin)
+ racc (~> 1.4)
+ nokogiri (1.15.4-x86_64-linux)
+ racc (~> 1.4)
+ nokogiri (1.13.6-x86_64-linux)
racc (~> 1.4)
octokit (4.22.0)
faraday (>= 0.9)
@@ -258,7 +262,7 @@ GEM
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (4.0.7)
- racc (1.6.0)
+ racc (1.7.1)
rainbow (3.1.1)
rb-fsevent (0.11.1)
rb-inotify (0.10.1)
@@ -296,7 +300,7 @@ GEM
thread_safe (0.3.6)
typhoeus (1.4.0)
ethon (>= 0.9.0)
- tzinfo (1.2.9)
+ tzinfo (1.2.11)
thread_safe (~> 0.1)
unf (0.1.4)
unf_ext
@@ -308,10 +312,11 @@ GEM
rexml (~> 3.2)
webrick (1.7.0)
yell (2.2.2)
- zeitwerk (2.5.4)
+ zeitwerk (2.6.6)
PLATFORMS
universal-darwin-21
+ x86_64-linux
DEPENDENCIES
github-pages
diff --git a/README.md b/README.md
index 1cdca9117..13bf535e8 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,9 @@
-## 🏗️ Docker Labs - The #1 Docker Tutorials and Free Resources for all Levels
-
+# 🏗️ Getting Started with Docker

-
-
+
+

-

@@ -14,119 +12,493 @@
- Over 500+ Highly Interactive Docker Tutorials and Guides
- Well tested on Docker Desktop and can be run on Browser (no Infrastructure required)
+## ⭐ Star History
-## 🚀 Tested Platform
-
-- [Docker Desktop](https://www.docker.com/products/docker-desktop)
-- [Play with Docker Platform](https://labs.play-with-docker.com/)
+If this repo helped you in your Docker journey, please star it! ⭐
+[](https://star-history.com/#collabnix/dockerlabs&Date)
-## 📝 Getting Started in 3 Simple Steps
-- Join 6500+ DevOps Engineers today via [Community Slack](https://launchpass.com/collabnix)
+# 📝 Join our Community
+- Join 9000+ DevOps Engineers today via [Community Slack](https://launchpass.com/collabnix)
+- Join 2300+ [Discord members](https://discord.gg/QEkCXAXYSe)
- Fork, Contribute & Share via [DockerLabs GITHUB Repository](https://github.com/collabnix/dockerlabs)
-
- Click and Follow us over Twitter [](https://twitter.com/collabnix)
+# Featured Blog Posts and Articles
-## 📌 Docker Hands-on Workshop/Labs (Practical)
+- [Docker GenAI Stack on Windows using Docker Desktop](https://collabnix.com/docker-genai-stack-on-windows-using-docker-desktop/)
+- [A First Look at Docker Scout – A Software Supply Chain Security for Developers](https://collabnix.com/a-first-look-at-docker-scout-a-software-supply-chain-security-for-developers/)
+- [Getting Started with GenAI Stack powered with Docker, LangChain, Neo4j and Ollama](https://collabnix.com/getting-started-with-genai-stack-powered-with-docker-langchain-neo4j-and-ollama/)
+- [Docker Init for Go Developers](https://collabnix.com/docker-init-for-go-developers/)
+- [What is Docker Compose Include and What problem does it solve?](https://collabnix.com/what-is-docker-compose-include-and-what-problem-does-it-solve/)
+- [Leveraging Compose Profiles for Dev, Prod, Test, and Staging Environments](https://collabnix.com/leveraging-compose-profiles-for-dev-prod-test-and-staging-environments/)
+- [What is Docker Compose Watch and what problem does it solve?](https://collabnix.com/what-is-docker-compose-watch-and-what-problem-does-it-solve/)
+- [What is Resource Saver Mode in Docker Desktop and what problem does it solve?](https://collabnix.com/what-is-resource-saver-mode-in-docker-desktop-and-what-problem-does-it-solve/)
+- [🐳 Boost Your Docker Workflow: Introducing Docker Init for Python Developers 🚀](https://collabnix.com/%f0%9f%90%b3-boost-your-docker-workflow-introducing-docker-init-for-python-developers-%f0%9f%9a%80/)
+- [How to Integrate Docker Scout with GitHub Actions](https://collabnix.com/how-to-integrate-docker-scout-with-github-actions/)
-- [Getting Started: Why, What & How about Docker?](http://dockerlabs.collabnix.com/docker/Docker_VIT_Intro/Docker_VIT_Intro.html)
-- [Docker101](./workshop/docker/README.md) - (Docker Image, Container, Dockerfile, Volumes, Networking)
+# 📌 Workshop/Labs (Hands-On Practical Labs)
-- [Docker201](./intermediate/workshop/README.md) - (Docker Compose, Docker Swarm, Advanced Networking)
-- [Docker301](./advanced/workshop/README.md) - (🔒️ Docker Security, Content Trust, Image Scanning, Swarm Mode Security)
+| Title | Topics Covered | Labs |
+|:-------------|:------------------|:------|
+| [Getting Started](http://dockerlabs.collabnix.com/docker/Docker_VIT_Intro/Docker_VIT_Intro.html) | Why, What & How about Docker?(slides) | - |
+| [Docker Core Concepts](https://github.com/collabnix/dockerlabs/tree/master/beginners/README.md) | Concepts of Docker Image, Containers, Multi-container apps | - |
+| [Docker for Beginner](./workshop/docker/README.md) | Docker Image, Container, Dockerfile, Volumes, Networking | 40 |
+| [Docker for Intermediate](./intermediate/workshop/README.md) | Docker Compose, Swarm, Advanced Networking | 50 |
+| [Docker for Advanced](./advanced/workshop/README.md) | Docker Security, Content Trust, Image Scanning, Swarm Mode Security | 31 |
+| [Docker Desktop](./workshop/dockerdesktop/README.md) | Docker Dashboard, Dev Environments, Extensions | 5 |
-## 🔥 A Journey from Docker Fundamentals to Expert (Theoretical)
-- [Docker for Beginners](./beginners/README.md)
-- [Docker for Intermediate](./intermediate/README.md)
+# Latest Docker Desktop Features and Demos
-- [Docker for Advanced](./advanced/README.md)
+| Title | Topics Covered | Category | Labs |
+|:-------------|:------------------|:------|:------|
+| [Docker Scout](https://github.com/collabnix/docker-scout-community) | Scout CLI, Scout Sample Demo| Security | 2 |
+| [Docker Extensions](https://github.com/collabnix/docker-community-extensions) | Docker Extensions | Development Tools | 1 |
+| [Docker init](https://github.com/dockersamples/docker-init-demos) | Dockerfile, Compose, Python, Go, Rust, Node | Developer Tools | 5|
+| [Docker init for Python](https://github.com/dockersamples/docker-init-demos/tree/main/python) | Dockerfile, Compose, Python | Developer Tools| 1|
+| [Docker init for Go](https://github.com/dockersamples/docker-init-demos/tree/main/go) |Dockerfile, Compose, Go | Developer Tools | 1|
+| [Docker init for Rust](https://github.com/dockersamples/docker-init-demos/tree/main/rust) |Dockerfile, Compose, Rust | Developer Tools | 1|
+| [Docker init for ASP.NET](https://github.com/dockersamples/docker-init-demos/tree/main/dotnet) | Dockerfile, Compose, .NET | Developer Tools | 1|
+| [Docker init for PHP](https://github.com/dockersamples/docker-init-demos/tree/main/php/app) | Dockerfile, Compose, PHP | Developer Tools | 1|
+| [Compose Watch](https://github.com/dockersamples/docker-init-demos/tree/main/python/compose-watch)| Compose, Sync, Rebuild| Developer Tools | 1 |
+| [Compose Include](https://github.com/ajeetraina/compose-include) | Compose, Include | Developer Tools | 1 |
+| [Compose Profile](https://github.com/ajeetraina/compose-demos/blob/main/wordpress/profile/README.md) | Compose, Profile, Staging, Prod | Developer Tools | 1 |
-- [Docker Cheatsheet](./docker/cheatsheet/README.md)
-- [Docker Certificate Associate Exam Preparation](./docker/dca.md)
+## Industry Use cases
+
+| Title | Topics Covered | Labs |
+|:-------------|:------------------|:------|
+| [Docker for AI](https://www.docker.com/products/ai-ml-development/) | [Docker for Data Scientist](https://docker.devpost.com/project-gallery) | 1 |
+| [Docker for Leading IDEs](https://www.docker.com/products/ide/) | Developer IDEs | Not Started|
+| [Docker for Financial Service](https://collabnix.com/5-benefits-of-docker-for-the-finance-and-operations/) | - | Not Started|
+| [Docker for Healthcare](https://collabnix.com/5-benefits-of-docker-for-the-healthcare-industry/) | - | Not Started|
+
+## Containerd Blogs & Resources
+
+
+| Title | Topics Covered | Labs |
+|:-------------|:------------------|:------|
+| [What is Containerd and what problems does it solve](https://collabnix.com/what-is-containerd-and-what-does-it-solve/)| - | Not Started|
+| [Containerd and Kubernetes](https://collabnix.com/containerd-and-kubernetes-how-are-they-related/) | - | Not Started|
+| [How To Run Containerd On Docker Desktop](https://collabnix.com/how-to-run-containerd-in-docker-desktop/) | - | Not Started|
+| [Getting Started With Containerd 2.0](https://collabnix.com/getting-started-with-containerd-2-0/) | - | Not Started|
+| [Containerd Vs Docker: What’s the difference?](https://collabnix.com/containerd-vs-docker-whats-the-difference/) | - | Not Started|
+
+
+
+## Docker WorkShop for Beginners
+
+
+
+### Pre-requisite:
+
+- [Creating Your DockerHub Account](https://dockerlabs.collabnix.com/workshop/docker/dockerhub)
+
+### Getting Started with Docker Image
+
+
+- [Running Hello World Example](https://collabnix.github.io/dockerlabs/beginners/helloworld/)
+- [Working with Docker Image](https://collabnix.github.io/dockerlabs/beginners/workingwithdockerimage.html)
+- [Saving Images and Containers as Tar Files for Sharing](http://dockerlabs.collabnix.com/beginners/saving-images-as-tar/)
+- [Building Your First Alpine Docker Image and Push it to DockerHub](https://collabnix.github.io/dockerlabs/beginners/building-your-first-alpine-container.html)
+
+
+## Accessing & Managing Docker Container
+
+- [Accessing the Container Shell](http://dockerlabs.collabnix.com/beginners/accessing-the-container.html)
+- [Running a Command inside running Container](http://dockerlabs.collabnix.com/beginners/running-command-inside-running-container.html)
+- [Managing Docker Containers](http://dockerlabs.collabnix.com/beginners/managing-containers.html)
+
+## Getting Started with Dockerfile
+
+- [What is Dockerfile](https://dockerlabs.collabnix.com/beginners/dockerfile/Writing-dockerfile.html#what-is-a-dockerfile)
+- [Understanding Layering Concept with Dockerfile](https://dockerlabs.collabnix.com/beginners/dockerfile/Layering-Dockerfile.html)
+- Creating Docker Image with
+ - [Lab #1: Installing GIT](https://dockerlabs.collabnix.com/beginners/dockerfile/lab1_dockerfile_git.html)
+ - [Lab #2: ADD instruction](https://dockerlabs.collabnix.com/beginners/dockerfile/Lab-2-Create-an-image-with-ADD-instruction.html)
+ - [Lab #3: COPY instruction](https://dockerlabs.collabnix.com//beginners/dockerfile/lab4_dockerfile_copy.html)
+ - [Lab #4: CMD instruction](https://dockerlabs.collabnix.com//beginners/dockerfile/lab4_cmd.html)
+ - [Lab #5: ENTRYPOINT instruction](https://dockerlabs.collabnix.com/beginners/dockerfile/Dockerfile-ENTRYPOINT.html)
+ - [Lab #6: WORKDIR instruction](https://dockerlabs.collabnix.com/beginners/dockerfile/WORKDIR_instruction.html)
+ - [Lab #7: RUN instruction](https://dockerlabs.collabnix.com/beginners/dockerfile/Lab%237_RUN_instruction.html)
+ - [Lab #8: ARG instruction](https://dockerlabs.collabnix.com//beginners/dockerfile/arg.html)
+ - [Lab #9: ENV instruction](https://dockerlabs.collabnix.com/beginners/dockerfile/Lab_%239_ENV_instruction.html)
+ - [Lab #10: VOLUME instruction](https://dockerlabs.collabnix.com/beginners/dockerfile/Lab%2310_VOLUME_instruction.html)
+ - [Lab #11: EXPOSE instruction](https://dockerlabs.collabnix.com/beginners/dockerfile/Lab%2311_EXPOSE_instruction.html)
+ - [Lab #12: LABEL instruction](https://dockerlabs.collabnix.com/beginners/dockerfile/Label_instruction.html)
+ - [Lab #13: ONBUILD instruction](https://dockerlabs.collabnix.com/beginners/dockerfile/onbuild.html)
+ - [Lab #14: HEALTHCHECK instruction](https://dockerlabs.collabnix.com/beginners/dockerfile/healthcheck.html)
+ - [Lab #15: SHELL instruction](https://dockerlabs.collabnix.com/beginners/dockerfile/Lab-14-Create-an-image-with-SHELL-instruction.html)
+ - [Lab #16: Entrypoint Vs RUN](https://dockerlabs.collabnix.com/beginners/dockerfile/entrypoint-vs-run.html)
+ - [Lab #17: USER instruction](https://dockerlabs.collabnix.com/beginners/dockerfile/user.html)
+- [Writing Dockerfile with Hello Python Script Added](https://dockerlabs.collabnix.com/beginners/dockerfile/lab_dockerfile_python.html)
+
+
+## Creating Private Docker Registry
+
+- [Building a Private Docker Registry](https://dockerlabs.collabnix.com/beginners/build-private-docker-registry.html)
+- [Building a Private Docker Registry with UI](https://dockerlabs.collabnix.com/beginners/portus/)
+
+
+### Docker Volumes
+
+- [Managing volumes through Docker CLI](https://collabnix.github.io/dockerlabs/beginners/volume/managing-volumes-via-docker-cli.html)
+- [Creating Volume Mount from **docker run** command & sharing same Volume Mounts among multiple containers](https://collabnix.github.io/dockerlabs/beginners/volume/creating-volume-mount-from-dockercli.html)
+
+## Docker Networking
+
+ - [The docker network Command](http://dockerlabs.collabnix.com/beginners/using-docker-network.html)
+ - [Lab #1: Listing the Networks](http://dockerlabs.collabnix.com/networking/A1-network-basics.html#step-2-list-networks)
+ - [Lab #2: Inspecting a Network](http://dockerlabs.collabnix.com/networking/A1-network-basics.html#step-3-inspect-a-network)
+ - [Lab #3: List network driver plugins](http://dockerlabs.collabnix.com/networking/A1-network-basics.html#step-4-list-network-driver-plugins)
+ - [Lab #4: Docker Bridge Networking](http://dockerlabs.collabnix.com/networking/A2-bridge-networking.html)
+ - [Lab #5: Basics of Docker Bridge Networking](http://dockerlabs.collabnix.com/networking/A2-bridge-networking.html#step-1-the-default-bridge-network)
+ - [Lab #6: Connect a Docker container to bridge network](http://dockerlabs.collabnix.com/networking/A2-bridge-networking.html#step-2-connect-a-container)
+ - [Lab #7: Test Network Connectivity](http://dockerlabs.collabnix.com/networking/A2-bridge-networking.html#step-3-test-network-connectivity)
+ - [Lab #8: Configure NAT for external connectivity](http://dockerlabs.collabnix.com/networking/A2-bridge-networking.html#step-4-configure-nat-for-external-connectivity)
+
+
+## Docker Workshop for Intermediate Users
+
+
+### Docker Compose
+
+- [Compose101 Slides](https://www.slideshare.net/ajeetraina/introduction-to-docker-compose-docker-intermediate-workshop)
+- [Introduction to Docker Compose](http://dockerlabs.collabnix.com/intermediate/docker-compose/)
+- [Dockerfile Vs Docker compose ](http://dockerlabs.collabnix.com/intermediate/workshop/DockerCompose/Difference_between_dockerfile_and_docker_compose.html)
+- [How to Install Docker Compose? ](http://dockerlabs.collabnix.com/intermediate/workshop/DockerCompose/How_to_Install_Docker_Compose.html)
+
+ - [Lab #1: `version` Command](http://dockerlabs.collabnix.com/intermediate/workshop/DockerCompose/version_Command.html)
+ - [Lab #2: `help` Command](http://dockerlabs.collabnix.com/intermediate/workshop/DockerCompose/help_command.html)
+ - [Lab #3: `Config` Command](http://dockerlabs.collabnix.com/intermediate/workshop/DockerCompose/config_command.html)
+ - [Lab #4: `Build` Command](http://dockerlabs.collabnix.com/intermediate/workshop/DockerCompose/Lab_%231_Build_Command.html)
+ - [Lab #5: `Pull` Command](http://dockerlabs.collabnix.com/intermediate/workshop/DockerCompose/pull_command.html)
+ - [Lab #6: `Push` Command](http://dockerlabs.collabnix.com/intermediate/workshop/DockerCompose/push_command.html)
+ - [Lab #7: `up` Command](http://dockerlabs.collabnix.com/intermediate/workshop/DockerCompose/up_command.html)
+ - [Lab #8: `Images` Command](http://dockerlabs.collabnix.com/intermediate/workshop/DockerCompose/images_command.html)
+ - [Lab #9: `ps` Command](http://dockerlabs.collabnix.com/intermediate/workshop/DockerCompose/ps_command.html)
+ - [Lab #10: `Stop` Command](http://dockerlabs.collabnix.com/intermediate/workshop/DockerCompose/stop_command.html)
+ - [Lab #11: `Start` Command](http://dockerlabs.collabnix.com/intermediate/workshop/DockerCompose/start_command.html)
+ - [Lab #12: `Restart` Command](http://dockerlabs.collabnix.com/intermediate/workshop/DockerCompose/restart_command.html)
+ - [Lab #13: `pause` Command](http://dockerlabs.collabnix.com/intermediate/workshop/DockerCompose/pause_command.html)
+ - [Lab #14: `Unpause` Command](http://dockerlabs.collabnix.com/intermediate/workshop/DockerCompose/unpause_command.html)
+ - [Lab #15: `Logs` Command](http://dockerlabs.collabnix.com/intermediate/workshop/DockerCompose/logs_command.html)
+ - [Lab #16: `Port` Command](http://dockerlabs.collabnix.com/intermediate/workshop/DockerCompose/port_command.html)
+ - [Lab #17: `Run` Command](http://dockerlabs.collabnix.com/intermediate/workshop/DockerCompose/run_command.html)
+ - [Lab #18: `Scale` Command](http://dockerlabs.collabnix.com/intermediate/workshop/DockerCompose/scale_command.html)
+ - [Lab #19: `Exec` Command](http://dockerlabs.collabnix.com/intermediate/workshop/DockerCompose/Lab_%234_Exec_Command.html)
+ - [Lab #20: `Kill` Command](http://dockerlabs.collabnix.com/intermediate/workshop/DockerCompose/Lab_%237_Kill_Command.html)
+ - [Lab #21: `Rm` Command](http://dockerlabs.collabnix.com/intermediate/workshop/DockerCompose/rm_command.html)
+ - [Lab #22: `Down` Command](http://dockerlabs.collabnix.com/intermediate/workshop/DockerCompose/down_command.html)
+- [Create first docker compose file with ngnix and mysql](http://dockerlabs.collabnix.com/intermediate/workshop/DockerCompose/Create_first_docker-compose_file_with_ngnix_and_mysql.html)
+- [Use JSON instead of YAML compose file in Docker?](http://dockerlabs.collabnix.com/intermediate/workshop/DockerCompose/Lab_%2324_Use_JSON_instead_of_YAML_compose_file_in_Docker.html)
+- [A Simple Wordpress Application running on Single Node using Docker Compose](https://github.com/collabnix/dockerlabs/blob/master/intermediate/workshop/DockerCompose/single-node-wordpress.md)
+
+
+# Docker Swarm
+
+### Introduction to Docker Swarm
+
+- [What is Docker Swarm](http://dockerlabs.collabnix.com/intermediate/workshop/what-is-docker-swarm.html)
+- [Docker Swarm : Terminology](http://dockerlabs.collabnix.com/intermediate/workshop/Docker-Swarm-Terminology.html)
+
+### Docker Services | Scaling | Draining Node | Rescheduling Containers
+
+- [Creating 5-Node Docker Swarm Cluster](http://dockerlabs.collabnix.com/intermediate/workshop/getting-started-with-swarm.html)
+- [Lab #1: Creating Overlay Network](http://dockerlabs.collabnix.com/intermediate/workshop/lab1-docker-network-overlay.html)
+- [Lab #2: Deploy Services ](http://dockerlabs.collabnix.com/intermediate/workshop/lab2-deploy-services.html)
+- [Lab #3: Inspecting Docker Swarm Service States](http://dockerlabs.collabnix.com/intermediate/workshop/lab3-inspect-services.html)
+- [Lab #4: Scaling Docker Swarm Services](http://dockerlabs.collabnix.com/intermediate/workshop/lab4-scaling-services.html)
+- [Lab #5: Deploy the application components as Docker services ](http://dockerlabs.collabnix.com/intermediate/workshop/lab5-deploy-app-component-as-docker-services.html)
+- [Lab #6: Drain a node and reschedule the containers](http://dockerlabs.collabnix.com/intermediate/workshop/lab6-drain-a-node-reschedule.html)
+- [Lab #7: Cleaning Up ](http://dockerlabs.collabnix.com/intermediate/workshop/lab7-cleaning-up.html)
+
+# Docker Networking - II
+
+### Overlay Networking
+
+ - [Lab #1: Docker Overlay Networking](http://dockerlabs.collabnix.com/intermediate/workshop/networking/Lab%231:Docker_Overlay_Networking.html)
+ - [Lab #2: Create an overlay network](http://dockerlabs.collabnix.com/intermediate/workshop/networking/Lab_%232_Create_an_overlay_network.html)
+ - [Lab #3: Create a service](http://dockerlabs.collabnix.com/intermediate/workshop/networking/Lab_%233_Create_a_service.html)
+ - [Lab #4: Test Service Discovery](http://dockerlabs.collabnix.com/intermediate/workshop/networking/Lab%20%235_Test_Service_Discovery.html)
+ - [Lab #5: Test Routing Mesh](http://dockerlabs.collabnix.com/intermediate/workshop/networking/Lab%236:Test_Routing_Mesh.html)
+ - [Lab #6: Test standalone containersinOverlayNetwork](http://dockerlabs.collabnix.com/intermediate/workshop/networking/Lab%20%238_%20Test_standalone_containers_in_OverlayNetwork.html)
+
+### Implementing MacVLAN
+
+- [Lab #7: Getting Started with MacVLAN](http://dockerlabs.collabnix.com/intermediate/workshop/networking/lab7-macvlan.html)
+
+
+# Docker Workshop for Advance Users
+
+# Docker Security101
+
+## Docker Content Trust
+
+- [Lab01 - Pulling images by tag](http://dockerlabs.collabnix.com/advanced/security/trust/README.html#tag)
+- [Lab02 - Pulling images by digest](http://dockerlabs.collabnix.com/advanced/security/trust/README.html#digest)
+- [Lab03 - Docker Content Trust](http://dockerlabs.collabnix.com/advanced/security/trust/README.html#trust)
+- [Lab04 - Official Images](http://dockerlabs.collabnix.com/advanced/security/trust/README.html#official)
+- [Lab05 - Extra for experts](http://dockerlabs.collabnix.com/advanced/security/trust/README.html#extra)
+- [Lab06 - Enable Docker Content Trust](http://dockerlabs.collabnix.com/advanced/security/trust-basics/#enable_dct)
+- [Lab07 - Push & Sign an Image](http://dockerlabs.collabnix.com/advanced/security/trust-basics/#push)
+- [Lab08 - Cleaning Up](http://dockerlabs.collabnix.com/advanced/security/trust-basics/#clean)
+
+
+## Docker Secrets Management
+
+- [Lab01- Create a Secret](http://dockerlabs.collabnix.com/advanced/security/secrets/#create)
+- [Lab02 - Manage Secrets](http://dockerlabs.collabnix.com/advanced/security/secrets/#manage)
+- [Lab03 - Access the secret within an app](http://dockerlabs.collabnix.com/advanced/security/secrets/#use)
+- [Lab04 - Clean-up](http://dockerlabs.collabnix.com/advanced/security/secrets/#clean)
+
+
+## Docker Secret Management with UCP
+
+- [Lab01 - Create a Secret](http://dockerlabs.collabnix.com/advanced/security/secrets-ddc/#secret)
+- [Lab02 - Deploy an App](http://dockerlabs.collabnix.com/advanced/security/secrets-ddc/#deploy)
+- [Lab03 - Test the App](http://dockerlabs.collabnix.com/advanced/security/secrets-ddc/#test)
+- [Lab04 - View the Secret](http://dockerlabs.collabnix.com/advanced/security/secrets-ddc/#view)
+
+
+## Docker Network Security
+
+- [Lab01 - Create an encrypted overlay network](http://dockerlabs.collabnix.com/advanced/security/networking/#network_create)
+- [Lab02 - List networks](http://dockerlabs.collabnix.com/advanced/security/networking/#list_networks)
+- [Lab03 - Deploy a service](http://dockerlabs.collabnix.com/advanced/security/networking/#deploy_service)
+- [Lab04 - Clean-up](http://dockerlabs.collabnix.com/advanced/security/networking/#clean)
+
+
+## Security Scanning
+
+- [Lab01 - Create a private Hub repo](http://dockerlabs.collabnix.com/advanced/security/scanning/#repo)
+- [Lab02 - Pull an image](http://dockerlabs.collabnix.com/advanced/security/scanning/#pull)
+- [Lab03 - Tag and push an image](http://dockerlabs.collabnix.com/advanced/security/scanning/#tag_push)
+- [Lab04 - View scan results](http://dockerlabs.collabnix.com/advanced/security/scanning/#results)
+- [Lab05 - Clean-up](http://dockerlabs.collabnix.com/advanced/security/scanning/#clean)
+
+## Swarm Mode Security
+
+- [Lab01- Create a new Swarm](http://dockerlabs.collabnix.com/advanced/security/swarm/#swarm_init)
+- [Lab02 - Add a new Manager](http://dockerlabs.collabnix.com/advanced/security/swarm/#add_mgr)
+- [Lab03 - Add a new Worker](http://dockerlabs.collabnix.com/advanced/security/swarm/#add_wrkr)
+- [Lab04 - Rotate Join Keys](http://dockerlabs.collabnix.com/advanced/security/swarm/#rotate_join)
+- [Lab05 - View certificates](http://dockerlabs.collabnix.com/advanced/security/swarm/#certs)
+- [Lab06 - Rotate certificates](http://dockerlabs.collabnix.com/advanced/security/swarm/#rotate_certs)
+
+# 🔥 Concepts and Terminologies (Beginners to Advance)
+
+- [Docker for Beginners](./beginners/README.md)
+- [Docker for Intermediate](./intermediate/README.md)
+- [Docker for Advanced](./advanced/README.md)
+- [Docker Cheatsheet](./docker/cheatsheet/README.md)
+- [Docker Certificate Associate Exam Preparation](./docker/dca.md)
- [Docker Interview Questions](./docker/docker-interview-questions.md)
+# 🗃️ Sample App
+
+We recommend you to visit [Docker Awesome Compose Repository](https://github.com/docker/awesome-compose) in order to find the Compose files for running sample apps
+
+
+# Web Framework
+
+
+| Python/Django |
+|:-------------|
+| [Docker + Django + PostgreSQL](./solution/django-postgres/readme.md) |
+| [Python + Flask + Redis](https://github.com/docker/awesome-compose/tree/master/flask-redis) |
+
+
+
+| Reactjs |
+|:-------------|
+| [React + Spring + MySQL](https://github.com/docker/awesome-compose/tree/master/react-java-mysql) |
+| [React + Express + MySQL](https://github.com/docker/awesome-compose/tree/master/react-express-mysql) |
+| [React + Express + MongoDB](https://github.com/docker/awesome-compose/tree/master/react-express-mongodb) |
+| [React + Rust + PostgreSQL](https://github.com/docker/awesome-compose/tree/master/react-rust-postgres) |
+| [React + Nginx](https://github.com/docker/awesome-compose/tree/master/react-nginx) |
+
+
+
+| Golang |
+|:-------------|
+| [Go + NGINX + MySQL](https://github.com/docker/awesome-compose/tree/master/nginx-golang-mysql) |
+| [Go + NGINX + PostgreSQL](https://github.com/docker/awesome-compose/tree/master/nginx-golang-postgres) |
+| [Docker + Gomodule](./beginners/httpserver_go_module_and_docker.md) |
+
+
+
+
+| Java / Spring Boot |
+|:-------------|
+| [Spring + PostgreSQL](https://github.com/docker/awesome-compose/tree/master/spring-postgres) |
+| [Java Spark + MySQL](https://github.com/docker/awesome-compose/tree/master/sparkjava-mysql) |
-# 🗃️ Docker-Ready Stack for You (Projects)
+
+# Database
-### 🔖 Web Framework
-- [WordPress + MySQL + Docker Swarm](./solution/wordpress/README.md)
-- [Docker + Django + PostgreSQL](./solution/django-postgres/readme.md)
-- [Docker + Gomodule](./beginners/httpserver_go_module_and_docker.md)
-- [Docker + Voting App](./play-with-docker/example-voting-app/README.md)
+| PostgreSQL |
+|:-------------|
+| [Docker + Django + PostgreSQL](./solution/django-postgres/readme.md) |
-### 🧐 Monitoring
+
-- [Docker + Prometheus Stack + Docker Swarm](./play-with-docker/docker-prometheus-swarm/README.md)
-### 📝 Logging
+| MongoDB|
+|:-------------|
+| [NGINX + Flask + MongoDB](https://github.com/docker/awesome-compose/tree/master/nginx-flask-mongo) |
+| [NodeJS + MongoDB](https://github.com/collabnix/dockerlabs/tree/master/solution/node-mongo-docker) |
-- [Docker + Elasticsearch + Logstash + Kibana + Docker Swarm](./play-with-docker/ELK/README.md)
+
+| MySQL |
+|:-------------|
+| [NGINX + ASP.NET + MySQL`](https://github.com/docker/awesome-compose/tree/master/nginx-aspnet-mysql) |
-### 🧪 Testing Tools
-- [Docker + Apache Jmeter + Docker Swarm Mode](./play-with-docker/jmeter-docker/README.md)
+# Monitoring
-### 🌐 Networking
-- [Docker + MacVLAN](./play-with-docker/macvlan/README.md)
-- [Docker + Docker Compose & IPv6](./play-with-docker/ipv6/README.md)
+| Prometheus |
+|:-------------|
+| [Docker + Prometheus Stack + Docker Swarm](./play-with-docker/docker-prometheus-swarm/README.md) |
+# Logging
-### 🔐 Security
+| Elastic |
+|:-------------|
+| [Docker + Elasticsearch + Logstash + Kibana + Docker Swarm](./play-with-docker/ELK/README.md) |
+| [Elasticsearch + Logstash + Kibana](https://github.com/docker/awesome-compose/tree/master/elasticsearch-logstash-kibana) |
-- [Introduction to Docker Security]((./advanced/workshop/README.md) )
-- [Running Containers as ROOT](./security/Running-Containers-as-ROOT.md)
+# Testing Tools
-## 🔥 Popular Blogs
+| Apache JMeter |
+|:-------------|
+| [Docker + Apache Jmeter + Docker Swarm Mode](./play-with-docker/jmeter-docker/README.md) |
-### 🔖 Docker Desktop
-- [Awesome-Compose: What It is and Why You Should Really Care About It](https://collabnix.com/awesome-compose-what-it-is-and-why-you-should-really-care-about-it/)
-- [Getting Started with Argo CD on Docker Desktop](https://collabnix.com/getting-started-with-argocd-on-docker-desktop/)
-- [A First Look at Dev Environments Feature under Docker Desktop 3.5.0](https://collabnix.com/getting-started-with-docker-dev-environments/)
-- [How to setup and Run Redis in a Docker container](https://collabnix.com/how-to-setup-and-run-redis-in-a-docker-container/)
-- [How to Build a Sample Album Viewer Application using Windows containers](https://collabnix.com/how-to-build-a-sample-album-viewer-application-using-windows-containers/)
-- [How to Build and Run a Python app in a Docker container](https://collabnix.com/how-to-build-and-run-a-python-app-in-a-container/)
-- [Top 5 Docker Myths and Facts That You Should be Aware of](https://collabnix.com/top-5-docker-myths-and-facts-that-you-should-be-aware-of/)
-- [Top 6 Docker Security Scanning Practices/](https://collabnix.com/top-6-docker-security-scanning-practices/)
-- [How to build and run a Python app in a container – Docker Python Tutorial](https://collabnix.com/how-to-build-and-run-a-python-app-in-a-container/)
-- [Running Automated Tasks with a CronJob over Kubernetes running on Docker Desktop 4.1.1](https://collabnix.com/running-automated-tasks-with-a-cronjob-over-kubernetes-running-on-docker-desktop-4-1-1/)
--
+# Networking
-### 💩 Docker and IoT
+| MacVLAN |
+|:-------------|
+| [Docker + MacVLAN](./play-with-docker/macvlan/README.md) |
+| [Docker + Docker Compose & IPv6](./play-with-docker/ipv6/README.md) |
-- [Getting Started with Docker and AI workloads on NVIDIA Jetson AGX Xavier Developer Platform](https://collabnix.com/getting-started-with-docker-and-ai-on-nvidia-jetson-agx-xavier-developer-platform/)
-- [Building a Real-Time Crowd Face Mask Detection System using Docker on NVIDIA Jetson Nano](https://collabnix.com/building-a-real-time-crowd-face-mask-detection-system-on-nvidia-jetson-nano/)
-- [Visualizing Time Series Data directly over IoT Edge device using Dockerized RedisTimeSeries & Grafana](https://collabnix.com/visualizing-time-series-data-directly-over-iot-edge-device-using-dockerized-redistimeseries-grafana/)
+# Security
-## 👥 Governance
+| Docker Security |
+|:-------------|
+| [Introduction to Docker Security](./advanced/workshop/README.md)|
+| [Running Containers as ROOT](./security/Running-Containers-as-ROOT.md) |
-Dockerlabs is an independent community project founded by [Ajeet Singh Raina](https://github.com/ajeetraina),a [Docker Captain](https://www.docker.com/captains/ajeet-singh-raina) & Docker Community Leader which is now being built & shaped by a growing community of contributors across the globe.
+## Docker Scout Resources and Links
-## Core Contributors
+This is a curated list of Docker Scout related resources. It is not an official list, but a community effort to help people find the best stuff for Docker Scout in 2023 and beyond.
+
+
+### [Download Docker Scout Cheatsheet Now!!](https://www.docker.com/resources/scout-cheat-sheet/) 
+
+
+# Scout Blogs
+
+- [Skout - Docker Scout for Your Kubernetes](https://collabnix.com/docker-scout-for-your-kubernetes-cluster/)
+- [Enhancing Your GitHub Workflow with Docker Scout](https://www.felipecruz.es/enhancing-your-github-workflow-with-docker-scout/) 
+- [Achieve Security and Compliance Goals with Policy Guardrails in Docker Scout](https://www.docker.com/blog/achieve-security-and-compliance-goals-with-policy-guardrails-in-docker-scout/) 
+- [A First Look at Docker Scout – A Software Supply Chain Security for Developers](https://collabnix.com/a-first-look-at-docker-scout-a-software-supply-chain-security-for-developers/)
+- [Docker Scout vs Scan](https://itnext.io/docker-scout-vs-scan-90ce6d6fd04c)
+- [How to scan container images with Docker Scout](https://www.techrepublic.com/article/how-to-scan-container-images-docker-scout/)
+- [Mastering Docker Scout through Docker Desktop GUI and CLI](https://www.heyvaldemar.com/mastering-docker-scout-through-docker-desktop-gui-and-cli/)
+- [Vulnerability and Dependency Scanning with Docker Scout](https://www.c-sharpcorner.com/article/vulnerability-and-dependency-scanning-with-docker-scout/)
+- [Docker 4.18 Extends Scout, Adds Container File Explorer, Docker Init, and More](https://www.infoq.com/news/2023/04/docker-4-18-released/)
+- [Using Docker Scout to Scan Container Images](https://www.fosslife.org/using-docker-scout-scan-container-images)
+- [Understanding Docker: part 42 – Docker Scout](https://dev.to/aurelievache/understanding-docker-part-42-docker-scout-o2a)
+- [How to Integrate Docker Scout with GitHub Actions](https://collabnix.com/how-to-integrate-docker-scout-with-github-actions/)
+- [Scan Container Images for Vulnerabilities with Docker Scout](https://thenewstack.io/scan-container-images-for-vulnerabilities-with-docker-scout/)
+- [Docker Scout by Fsegredo](https://link.medium.com/U7exfMopKCb) 
+- [How to Integrate Docker Scout with GitLab](https://collabnix.com/how-to-integrate-docker-scout-with-gitlab/) 
+- [Docker Scout Unveils Advanced Features to Bolster Software Supply Chain Integrity](https://opensourcewatch.beehiiv.com/p/docker-scout-unveils-advanced-features-bolster-software-supply-chain-integrity) 
+- [How to integrate Docker Scout with Azure Container Registry](https://hugs4bugs.me/how-to-integrate-docker-scout-with-azure-container-registry/) 
+- [CI pipeline with Docker Scout and SAST scanning for an OWASP-based Python app](https://github.com/nadyinky/devsecops-docker-flow)
+
+
+
+# Scout Tutorials
+
+- [Docker Scout quickstart](https://docs.docker.com/scout/quickstart/)
+- [Docker Scout Advanced image analysis](https://docs.docker.com/scout/advanced-image-analysis/)
+- [Integrate Docker Scout with GitHub Actions](https://docs.docker.com/scout/integrations/ci/gha/)
+- [Integrate Docker Scout with GitLab CI](https://docs.docker.com/scout/integrations/ci/gitlab/)
+- [Integrate Docker Scout with Microsoft Azure DevOps Pipelines](https://docs.docker.com/scout/integrations/ci/azure/)
+- [Integrate Docker Scout with Circle CI](https://docs.docker.com/scout/integrations/ci/circle-ci/)
+- [Integrate Docker Scout with Jenkins](https://docs.docker.com/scout/integrations/ci/jenkins/) 
+- [Advisory Database sources and matching service](https://docs.docker.com/scout/advisory-db-sources/) 
+- [Docker Scout Integration with SonarQube](https://docs.docker.com/scout/integrations/code-quality/sonarqube/) 
+
+
+## GitHub Sample projects for Scout
+
+- [Scout Action](https://github.com/docker/scout-action) 
+- [Scout CLI](https://github.com/docker/scout-cli)
+
+
+## Scout Case Studies
+
+- [How JW Player Secured 300 Repos in an Hour with Docker Scout](https://www.docker.com/blog/how-jw-player-secured-300-repos-in-an-hour-with-docker-scout/) 
+- [Sysdig and Docker Forge Alliance to Accelerate Cloud-Native Security](https://medium.com/@seifeddinerajhi/sysdig-and-docker-forge-alliance-to-accelerate-cloud-native-security-16f6fec74327)
+
+
+# Scout Featured Videos
+
+| Docker Scout: Securing The Complete Software Supply Chain (DockerCon 2023) | Cut Through Vulnerability Noise with Runtime Insights (DockerCon 2023) |
+| ------------------------------------------------ | ---------------------------------------------------- |
+| [](https://www.youtube.com/watch?v=4iJ7yw-Oe4I) | [](https://www.youtube.com/watch?v=pb7ydpJq-D8) |
+
+| Docker Scout: Live Demo, Insights, and Q&A | Vulnerability Scanning and Reporting |
+| ------------------------------------------------ | -------------------------------------------- |
+| [](https://www.youtube.com/watch?v=Ibt6o8M2IHw) | [](https://www.youtube.com/watch?v=2sY7z2yv_5Y&t=39s) |
+
+| Find Vulnerabilities Fast! New Docker CLI Command| Adding the docker scout feature to the Docker CLI |
+| ------------------------------------------------ | ---------------------------------------------------- |
+| [](https://www.youtube.com/watch?v=0Wc4-_DownU) | [](https://www.youtube.com/watch?v=pb7ydpJq-D8) |
+
+
+| How to scan Container image using Docker Scout | Docker Scout Tutorial: Docker scanning |
+| ---------------------------------------------- | -------------------------------------------------- |
+| [](https://www.youtube.com/watch?v=SlUqxSUvv3o&t=5s) | [](https://www.youtube.com/watch?v=pb7ydpJq-D8) |
+
+
+| TECHarlas #3 - Supply chain, Docker Scout y seguridad en contenedores con Felipe Cruz de @DockerIo |
+| ---------------------------------------------- |
+| [](https://www.youtube.com/watch?v=csNytM7XFz4) |
+
+
+# 👥 Governance
+
+Dockerlabs is an independent community project founded by [Ajeet Singh Raina](https://github.com/ajeetraina), a [Docker Captain from India](https://www.docker.com/captains/ajeet-singh-raina) & Docker Community Leader which is now being built & shaped by a growing community of contributors across the globe.
+
+# Core Contributors
| [
Ajeet Singh Raina](https://github.com/ajeetraina)
| [
Sangam Biradar](https://github.com/sangam14)
| [
Savio Mathew](https://github.com/saviovettoor)
| [
Saiyam Pathak](https://github.com/saiyam1814)
| [
Apurva Bhandari](https://github.com/apurvabhandari)
| [
Sarkar Tathagata](https://github.com/amitatha82)
| [
Prashansa K](https://github.com/Prashansa-K)
|
| :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| [
Wikitops](https://github.com/wikitops)
| [
Akshit Grover](https://github.com/akshitgrover)
| [
Ameya Agashe](https://github.com/ameyaagashe)
| [
Bala](https://github.com/balasu)
|
-### 🚀 How to Contribute
+
+# 🚀 How to Contribute
Thank you so much for showing your interest in contributing to [Dockerlabs](https://github.com/collabnix/dockerlabs) tutorials.
@@ -135,7 +507,7 @@ Thank you so much for showing your interest in contributing to [Dockerlabs](http
-## License
+# License
[Apache License 2.0](./LICENSE.md)
diff --git a/Tutorials/Dockerfile b/Tutorials/Dockerfile
new file mode 100644
index 000000000..af0d44c45
--- /dev/null
+++ b/Tutorials/Dockerfile
@@ -0,0 +1,27 @@
+# Python base image
+
+FROM python:3.9-slim
+
+
+
+# Set the working directory inside the container
+
+WORKDIR /app
+
+
+
+# Copy the Python script into the container
+
+COPY code_1.py .
+
+
+
+# Install any necessary dependencies
+
+RUN pip install pandas matplotlib scikit-learn
+
+
+
+# Command to run the Python script when the container starts
+
+CMD ["python", "code_1.py"]
diff --git a/Tutorials/intro_1.py b/Tutorials/intro_1.py
new file mode 100644
index 000000000..045e6809e
--- /dev/null
+++ b/Tutorials/intro_1.py
@@ -0,0 +1,65 @@
+import pandas as pd
+
+import matplotlib.pyplot as plt
+
+from sklearn.datasets import load_iris
+
+from sklearn.model_selection import train_test_split
+
+from sklearn.ensemble import RandomForestClassifier
+
+from sklearn.metrics import accuracy_score
+
+
+
+# Load the Iris dataset
+
+iris = load_iris()
+
+data = pd.DataFrame(data=iris.data, columns=iris.feature_names)
+
+target = pd.Series(data=iris.target)
+
+
+
+# Data Exploration
+
+print("Dataset Description:")
+
+print(data.describe())
+
+
+
+# Data Visualization
+
+data.plot(kind='box', subplots=True, layout=(2, 2), sharex=False, sharey=False)
+
+plt.show()
+
+
+
+# Train-test split
+
+X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)
+
+
+
+# Train a Random Forest Classifier
+
+rf_classifier = RandomForestClassifier(n_estimators=100, random_state=42)
+
+rf_classifier.fit(X_train, y_train)
+
+
+
+# Make predictions
+
+y_pred = rf_classifier.predict(X_test)
+
+
+
+# Calculate accuracy
+
+accuracy = accuracy_score(y_test, y_pred)
+
+print("Accuracy:", accuracy)
diff --git a/Tutorials/step3tostep7.txt b/Tutorials/step3tostep7.txt
new file mode 100644
index 000000000..1c1721e8a
--- /dev/null
+++ b/Tutorials/step3tostep7.txt
@@ -0,0 +1,10 @@
+docker build -t data_science_image .
+docker run -it data_science_image
+docker build -t myimage:1.0
+python script_1.py
+docker exec -it python /path/to/code_1.py
+docker login
+docker tag data_science_image collabnix12/data_science_image:v1.0
+docker push collabnix12/data_science_image:v1.0
+docker pull collabnix12/data_science_image:v1.0
+docker run -it collabnix12/data_science_image:v1.0
diff --git a/_layouts/default.html b/_layouts/default.html
index 15fedd0ef..f19d828f6 100644
--- a/_layouts/default.html
+++ b/_layouts/default.html
@@ -38,13 +38,16 @@ {{ page.description | default: site.description | de
View on GitHub
{% endif %}
{% if site.show_downloads %}
- Join Slack
+ Join Slack
{% endif %}
{% if site.show_downloads %}
Docker Cheatsheet
{% endif %}
{% if site.show_downloads %}
Docker Compose Cheatsheet
+ {% endif %}
+ {% if site.show_downloads %}
+ Follow us on Twitter
{% endif %}
@@ -55,13 +58,17 @@ {{ page.description | default: site.description | de