# Docker ## πŸ“˜ Resources - [Docker GitHub](https://github.com/docker) - [Collabnix/dockerlabs](https://github.com/Collabnix/dockerlabs) ⭐ - Docker - Beginners | Intermediate | Advanced - [bobbyiliev/introduction-to-docker-ebook](https://github.com/bobbyiliev/introduction-to-docker-ebook) ⭐ - Free Introduction to Docker eBook - [wsargent/docker-cheat-sheet](https://github.com/wsargent/docker-cheat-sheet) ⭐ - Docker Cheat Sheet - [prakhar1989/docker-curriculum](https://docker-curriculum.com) - 🐬 A comprehensive tutorial on getting started with Docker! - docker-curriculum.com - [veggiemonk/awesome-docker](https://github.com/veggiemonk/awesome-docker) - 🐳 A curated list of Docker resources and projects - [docker/awesome-compose](https://github.com/docker/awesome-compose) - Awesome Docker Compose samples ## πŸ“ Articles - [Get to Know Docker's Ecosystem](https://nickjanetakis.com/blog/get-to-know-dockers-ecosystem#docker-daemon) - [Understanding How the Docker Daemon and Docker CLI Work Together](https://nickjanetakis.com/blog/understanding-how-the-docker-daemon-and-docker-cli-work-together) - [How to build and push Docker image with GitHub actions?](https://event-driven.io/en/how_to_buid_and_push_docker_image_with_github_actions/) - [Docker Tip #73: Connecting to a Remote Docker Daemon](https://nickjanetakis.com/blog/docker-tip-73-connecting-to-a-remote-docker-daemon) - [How to build an optimal Docker image for your application?](https://event-driven.io/en/how_to_buid_an_optimal_docker_image_for_your_application/) ⭐ - [Optimising ASP.NET Core apps in Docker - avoiding manually copying csproj files](https://andrewlock.net/optimising-asp-net-core-apps-in-docker-avoiding-manually-copying-csproj-files/) ⭐ - [Exploring the .NET Core Docker files: dotnet vs aspnetcore vs aspnetcore-build](https://andrewlock.net/exploring-the-net-core-docker-files-dotnet-vs-aspnetcore-vs-aspnetcore-build/) ⭐ - [Exploring the .NET Core 2.1 Docker files (updated): dotnet:runtime vs aspnetcore-runtime vs sdk](https://andrewlock.net/exploring-the-net-core-2-1-docker-files-dotnet-runtime-vs-aspnetcore-runtime-vs-sdk/) ⭐ - [Building ASP.NET Core apps using Cake in Docker](https://andrewlock.net/building-asp-net-core-apps-using-cake-in-docker/) - [Using Docker Hub to automatically build a Docker image for ASP.NET Core apps](https://andrewlock.net/using-docker-hub-to-automatically-build-a-docker-image-for-asp-net-core-apps/) - [DOCKER FOR .NET DEVELOPERS (PART 1)](https://www.stevejgordon.co.uk/docker-dotnet-developers-part-1) - [Dockerizing ASP.NET Core Application With Dockerfiles](https://code-maze.com/aspnetcore-app-dockerfiles/) - [Get Started Building Microservices with ASP.NET Core and Docker in Visual Studio Code](https://fullstackmark.com/post/12/get-started-building-microservices-with-asp.net-core-and-docker-in-visual-studio-code) - [Optimising .NET Core Docker images](https://benfoster.io/blog/optimising-dotnet-docker-images/) - [Defining your multi-container application with docker-compose.yml](https://docs.microsoft.com/en-us/dotnet/architecture/microservices/multi-container-microservice-net-applications/multi-container-applications-docker-compose) - [Some useful Docker commands make your life easier](https://dev.to/moesmp/some-useful-docker-command-4ehi) - [Deploy a Docker based ASP.NET Core app to Azure](https://www.yogihosting.com/docker-aspnet-core-azure/) - [Create first ASP.NET Core App in a Docker Container](https://www.yogihosting.com/docker-aspnet-core-app/) - [Multi-Container ASP.NET Core App with Docker Compose](https://www.yogihosting.com/docker-compose-aspnet-core/) - [How Visual Studio builds containerized apps](https://docs.microsoft.com/en-us/visualstudio/containers/container-build?view=vs-2019) - [Creating Docker multi-arch images for ARM64 from Windows](https://andrewlock.net/creating-multi-arch-docker-images-for-arm64-from-windows/) - [6 Things To Know When Dockerizing Microsoft .NET Apps in Production](https://levelup.gitconnected.com/6-things-to-know-when-dockerizing-microsoft-net-apps-in-production-45b8c27a41b0) - [Beginning Docker](https://sookocheff.com/post/docker/beginning-docker/) - [Docker Series](https://code-maze.com/docker-series/) - [Dockerize an ASP .NET Core Microservice and RabbitMQ](https://www.programmingwithwolfgang.com/dockerize-an-asp-net-core-microservice-and-rabbitmq) - [ASP .NET Core with HTTPS in Docker](https://www.programmingwithwolfgang.com/asp-net-core-with-https-in-docker) - [Set up Docker-Compose for ASP .NET Core 3.1 Microservices](https://www.programmingwithwolfgang.com/set-up-docker-compose-for-asp-net-core-3-1-microservices) - [Hosting ASP.NET Core images with Docker over HTTPS](https://docs.microsoft.com/en-us/aspnet/core/security/docker-https) - [ASP.NET Core APP with HTTPS in Docker](https://www.yogihosting.com/docker-https-aspnet-core/) - [How to Pass Environment Variables to Docker Containers](https://www.cloudsavvyit.com/14081/how-to-pass-environment-variables-to-docker-containers/) - [Step by step guide on utilising Docker Compose with Asp.Net Core, SQL Server](https://dev.to/moe23/step-by-step-guide-on-utilising-docker-compose-with-asp-net-core-sql-server-2e54) - [CRUD Operations in ASP.NET Core and SQL Server with Docker](https://www.yogihosting.com/docker-aspnet-core-sql-server-crud/) - [Docker SQL bind: An attempt was made to access a socket in a way forbidden by its access permissions](https://stackoverflow.com/questions/57316744/docker-sql-bind-an-attempt-was-made-to-access-a-socket-in-a-way-forbidden-by-it) - [ASP.NET Docker Gotchas and Workarounds](https://khalidabuhakmeh.com/aspnet-docker-gotchas-and-workarounds) - [The Microsoft author signing certificate will be updated as soon as November 1st, 2020](https://devblogs.microsoft.com/nuget/microsoft-author-signing-certificate-update/) - [5 ways to change time in Docker container](https://bobcares.com/blog/change-time-in-docker-container/) - [Change TimeZone in Docker and OCI compliant Containers](https://mohitgoyal.co/2021/03/02/change-timezone-in-docker-and-oci-compliant-containers/) - [Attach to a running container](https://code.visualstudio.com/docs/remote/attach-container) - [Create a development container](https://code.visualstudio.com/docs/remote/create-dev-container) - [Debugging ASP.NET Core apps in a local Docker container `Rider`](https://blog.jetbrains.com/dotnet/2018/07/18/debugging-asp-net-core-apps-local-docker-container/) - [Ports are not available: listen tcp 0.0.0.0/50070: bind: An attempt was made to access a socket in a way forbidden by its access permissions](https://stackoverflow.com/questions/65272764/ports-are-not-available-listen-tcp-0-0-0-0-50070-bind-an-attempt-was-made-to) - [Optimising ASP.NET Core apps in Docker - avoiding manually copying csproj files](https://andrewlock.net/optimising-asp-net-core-apps-in-docker-avoiding-manually-copying-csproj-files/) - [Optimising ASP.NET Core apps in Docker - avoiding manually copying csproj files (Part 2)](https://andrewlock.net/optimising-asp-net-core-apps-in-docker-avoiding-manually-copying-csproj-files-part-2/) - [Setting Up Docker for Windows and WSL to Work Flawlessly](https://nickjanetakis.com/blog/setting-up-docker-for-windows-and-wsl-to-work-flawlessly) - [Announcing built-in container support for the .NET SDK](https://devblogs.microsoft.com/dotnet/announcing-builtin-container-support-for-the-dotnet-sdk/) - [Linting a .NET 6 app Dockerfile using Hadolint, dockerfile_lint and Azure Pipelines](https://www.mytechramblings.com/posts/linting-a-dotnet-app-dockerfile-using-hadolint-dockerfile-lint-and-azure-pipelines/) - [Docker build caching for .NET applications done right with dotnet-subset](https://blog.nimbleways.com/docker-build-caching-for-dotnet-applications-done-right-with-dotnet-subset/) - [Developing ASP.NET Core apps in Docker - Live Recompilation](https://tymisko.hashnode.dev/developing-aspnet-core-apps-in-docker-live-recompilation) - [.NET 6 is now in Ubuntu 22.04](https://devblogs.microsoft.com/dotnet/dotnet-6-is-now-in-ubuntu-2204/) - [Announcing built-in container support for the .NET SDK](https://devblogs.microsoft.com/dotnet/announcing-builtin-container-support-for-the-dotnet-sdk/) - [Tutorial: Containerize a .NET app](https://learn.microsoft.com/en-us/dotnet/core/docker/build-container?tabs=windows) - [Containerize a .NET app with dotnet publish](https://learn.microsoft.com/en-us/dotnet/core/docker/publish-as-container) - [.NET 7 SDK built-in container support and Ubuntu Chiseled](https://laurentkempe.com/2022/11/14/dotnet-7-sdk-built-in-container-support-and-ubuntu-chiseled/) - [Experimenting with .NET 7, WASM, and WASI on Docker](https://laurentkempe.com/2022/10/31/experimenting-with-dotnet-7-wasm-and-wasi-on-docker/) - [Trying out the built-in container support for the .NET SDK](https://www.mytechramblings.com/posts/trying-out-the-built-in-container-support-for-the-dotnet-7-sdk/) - [Docker import/export vs. load/save](https://pspdfkit.com/blog/2019/docker-import-export-vs-load-save/) - [Publishing Images With GitHub Actions](https://www.kenmuse.com/blog/publishing-images-with-github-actions/) - [Creating a generalised Docker image for building ASP.NET Core apps using ONBUILD](https://andrewlock.net/creating-a-generalised-docker-image-for-building-asp-net-core-apps-using-onbuild/) ⭐ - [Optimizing your .NET Core Docker image size with multi-stage builds](https://medium.com/@chrislewisdev/optimizing-your-net-core-docker-image-size-with-multi-stage-builds-778c577121d) ⭐⭐ - [Multi-stage builds](https://docs.docker.com/build/building/multi-stage/) ⭐⭐ - [Docker Tutorial – Introduction & Getting Started With Docker](https://spacelift.io/blog/docker-tutorial) - [Docker Build Process for .NET Applications](https://marcroussy.com/2020/05/01/docker-build-process-for-dotnet/) ⭐ - [Understanding the Docker Build Context (Why You Should Use Dockerignore)](https://www.howtogeek.com/devops/understanding-the-docker-build-context-why-you-should-use-dockerignore/) - [How to Debug Dockerized .NET Core Apps in VS Code](https://www.freecodecamp.org/news/how-to-debug-dockerized-net-core-apps-in-vs-code/) ⭐ - [Demystifying Docker: .NET 6 on Docker + Docker Debugging](https://amelspahic.com/net-6-on-docker-with-debugging) ⭐ - [docker `network create`](https://docs.docker.com/engine/reference/commandline/network_create/) ⭐ - [DEBUGGING YOUR .NET CORE IN DOCKER APPLICATIONS WITH VS CODE](https://www.aaron-powell.com/posts/2019-04-04-debugging-dotnet-in-docker-with-vscode/) ⭐ - [Attaching to remote processes](https://github.com/OmniSharp/omnisharp-vscode/wiki/Attaching-to-remote-processes) - [How to debug a .NET Core app in Docker with VSCode](https://www.richard-banks.org/2018/07/debugging-core-in-docker.html) ⭐⭐ - [Get started with Docker remote containers on WSL 2](https://learn.microsoft.com/en-us/windows/wsl/tutorials/wsl-containers) ⭐ - [Docker Desktop WSL 2 backend on Windows](https://docs.docker.com/desktop/windows/wsl/) ⭐ - [How to configure Docker Desktop to work with the WSL](https://tutorials.releaseworksacademy.com/learn/how-to-configure-docker-desktop-to-work-with-the-wsl.html) - [Setting Up Docker for Windows and WSL to Work Flawlessly](https://nickjanetakis.com/blog/setting-up-docker-for-windows-and-wsl-to-work-flawlessly) ⭐ - [How to properly override the ENTRYPOINT using docker run](https://oprea.rocks/blog/how-to-properly-override-the-entrypoint-using-docker-run) - [Docker RUN vs CMD vs ENTRYPOINT](https://codewithyury.com/docker-run-vs-cmd-vs-entrypoint/) ⭐ - [Running a Docker container as a non-root user](https://medium.com/redbubble/running-a-docker-container-as-a-non-root-user-7d2e00f8ee15) - [Using Docker Buildkit --mount=type=cache for caching Nuget packages for .NET 5 dockerfile](https://stackoverflow.com/questions/69464184/using-docker-buildkit-mount-type-cache-for-caching-nuget-packages-for-net-5-d) - [Optimizing builds with cache management](https://docs.docker.com/build/cache/) ⭐ - [Best practices for writing Dockerfiles](https://docs.docker.com/develop/develop-images/dockerfile_best-practices) ⭐ - [Speed up pip downloads in Docker with BuildKit’s new caching](https://pythonspeed.com/articles/docker-cache-pip-downloads/) ⭐ - [How to Keep Docker Container Running for Debugging](https://devopscube.com/keep-docker-container-running/) - [Running Docker Containers Indefinitely](https://www.baeldung.com/ops/running-docker-containers-indefinitely) - [Removing unused intermediate docker images automatically](https://medium.com/@cikupin/removing-unused-intermediate-docker-images-automatically-25e453c514ea) - [Enforce HTTPS in ASP.NET Core](https://learn.microsoft.com/en-us/aspnet/core/security/enforcing-ssl) - [Hosting ASP.NET Core images with Docker over HTTPS](https://learn.microsoft.com/en-us/aspnet/core/security/docker-https) - [Using Docker Secrets during Development](https://blog.mikesir87.io/2017/05/using-docker-secrets-during-development/) - [How to Keep Docker Secrets When Working with Sensitive Data?](https://www.cherryservers.com/blog/how-to-keep-docker-secrets-when-working-with-sensitive-data) - [Docker and .Net β€” Environment variables and appsettings.json](https://levelup.gitconnected.com/docker-environment-variables-appsettings-json-net-bdac052bf3db) - [Hot-Reload .NET Configuration in Kubernetes with ConfigMaps](https://www.thorsten-hans.com/hot-reload-net-configuration-in-kubernetes-with-configmaps/) ⭐ - [Secure your .NET cloud apps with rootless Linux Containers](https://devblogs.microsoft.com/dotnet/securing-containers-with-rootless/) - [Testing Chiseled Ubuntu container images with .NET](https://www.mytechramblings.com/posts/testing-chiseled-ubuntu-containers-with-dotnet/) - [Creating a Private Local Docker Registry in 5 Minutes](https://dev.to/docker/creating-a-private-local-docker-registry-in-5-minutes-2dnl) - [4 Easy Steps to Set Up a Private Docker Registry on Ubuntu](https://gcore.com/learning/4-easy-steps-to-set-up-a-private-docker-registry-on-ubuntu/) - [Running Artifactory 7 and Postgres using Docker Compose V2](https://wangler.io/running-artifactory-7-using-docker-compose-v2/) - [Deploying JFrog Container Registry within a Dockerized infrastructure](https://medium.com/@tomer.klein/deploying-jfrog-container-registry-within-a-dockerized-infrastructure-a3f67328bd27) - [Create a Private Docker Registry with Nexus](https://www.ivankrizsan.se/2016/06/09/create-a-private-docker-registry/) - [Streamline your container build and publish with .NET 8](https://devblogs.microsoft.com/dotnet/streamline-container-build-dotnet-8/) - [How To Run Docker in Docker Container [3 Easy Methods]](https://devopscube.com/run-docker-in-docker/) ## πŸ“Ή Videos - [Complete Docker Course - From BEGINNER to PRO! (Learn Containers)](https://www.youtube.com/watch?v=RqTEHSBrYFw) - [Docker Crash Course for Absolute Beginners ](https://www.youtube.com/watch?v=pg19Z8LL06w) - [Deploy a .NET Core API with Docker (Step-by-Step)](https://www.youtube.com/watch?v=f0lMGPB10bM) - [Docker Tutorial for Beginners [FULL COURSE in 3 Hours](https://www.youtube.com/watch?v=3c-iBn73dDE) - [Docker Tutorial for Beginners - A Full DevOps Course on How to Run Applications in Containers](https://www.youtube.com/watch?v=fqMOX6JJhGo) - [How to push a container image to a Docker Repo | Azure Tips and Tricks](https://www.youtube.com/watch?v=r_tGl4zF1ZQ) - [Dockerize .NET 6 in 10 Minutes](https://www.youtube.com/watch?v=3s-RfwvijpY) - [Docker networking is CRAZY!! (you NEED to learn it)](https://www.youtube.com/watch?v=bKFMS5C4CG0) - [Why you no longer need a Dockerfile in .NET 7](https://www.youtube.com/watch?v=BV_f2XnqlRE) - [Debugging .NET Core in Docker with VSCode](https://www.youtube.com/watch?v=ds2bud0ZYTY) ⭐ ## πŸ“¦ Libraries - [`wagoodman/dive`](https://github.com/wagoodman/dive) - A tool for exploring each layer in a docker image - [`hadolint/hadolint`](https://github.com/hadolint/hadolint) - Dockerfile linter, validate inline bash, written in Haskell - [`projectatomic/dockerfile_lint`](https://github.com/projectatomic/dockerfile_lint) - [`nicolaka/netshoot`](https://github.com/nicolaka/netshoot) - a Docker + Kubernetes network trouble-shooting swiss-army container - [`mariotoffia/FluentDocker`](https://github.com/mariotoffia/FluentDocker) - Commands, Services and Fluent API for docker, docker-compose & docker-machine, for win/mac/linux and native docker in c# - [`docker-slim/docker-slim`](https://github.com/docker-slim/docker-slim) - DockerSlim (docker-slim): Don't change anything in your Docker container image and minify it by up to 30x (and for compiled languages even more) making it secure too! (free and open source) - [`mariotoffia/FluentDocker`](https://github.com/mariotoffia/FluentDocker) - Use docker, docker-compose local and remote in tests and your .NET core/full framework apps via a FluentAPI - [`jesseduffield/lazydocker`](https://github.com/jesseduffield/lazydocker) - The lazier way to manage everything docker - [`worstcase/blockade`](https://github.com/worstcase/blockade) - Docker-based utility for testing network failures and partitions in distributed applications - [`hadolint/hadolint`](https://github.com/hadolint/hadolint) - Dockerfile linter, validate inline bash, written in Haskell - [`tmds/build-image`](https://github.com/tmds/build-image) - Containerize .NET apps without writing Dockerfiles. - [`Wowu/docker-rollout`](https://github.com/Wowu/docker-rollout) - Zero Downtime Deployment for Docker Compose - [`kubernetes/kompose`](https://github.com/kubernetes/kompose) - Convert Compose to Kubernetes - [`dokku/dokku`](https://github.com/dokku/dokku) - A docker-powered PaaS that helps you build and manage the lifecycle of applications ## πŸš€ Samples - [jbw/TooBigToFailBurgerShop](https://github.com/jbw/TooBigToFailBurgerShop/tree/develop/src/services/Ordering/Ordering.API) - .NET Microservice Reference Application. It's also an over-engineered burger shop! - [VasilisGaitanidis/master-containerized-microservices](https://github.com/VasilisGaitanidis/master-containerized-microservices) - This repo contains a sample application based on a fictional eCommerce. The primary goal of this sample is to demonstrate several software-architecture concepts like: Clean Architecture, Microservices, CQRS, Event Sourcing, Publish-Subscribe Architecture, Domain Driven Design (DDD). Currently this is a work in progress. - [MesutAtasoy/Joker](https://github.com/MesutAtasoy/Joker) - An example of microservices container based application which implemented different approaches within each microservice (DDD, CQRS, Simple CRUD) - [vany0114/microservices-dotnetcore-docker-sf-k8s](https://github.com/vany0114/microservices-dotnetcore-docker-sf-k8s) - Shows an approach to work with a microservices based architecture using .Net Core, Docker, and Azure Service Fabric/Kubernetes, applying Domain Driven Design (DDD) and Comand and Query Responsibility Segregation (CQRS) and other patterns. - [mmacneil/ASPNETCoreDockerMicroservices](https://github.com/mmacneil/ASPNETCoreDockerMicroservices) - Sample project for getting off the ground with ASP.NET Core, Docker and Microservices based on the tutorial: https://fullstackmark.com/post/12/get-started-building-microservices-with-asp.net-core-and-docker-in-visual-studio-code - [WolfgangOfner/MicroserviceDemo](https://github.com/WolfgangOfner/MicroserviceDemo) - This is a demo with two ASP .NET 5 microservices using RabbitMQ and Docker - [twzhangyang/RestAirline](https://github.com/twzhangyang/RestAirline) - DDD+CQRS+EventSourcing+Hypermedia API+ASP.NET Core 3.1+Masstransit+terraform+docker+k8s - [madslundt/NetCoreMicroservicesSample](https://github.com/madslundt/NetCoreMicroservicesSample/tree/master/Compose) - Sample using micro services in .NET Core 3.1 Focusing on clean code - [baotoq/micro-commerce](https://github.com/baotoq/micro-commerce/blob/master/src/Services/Catalog/MicroCommerce.Catalog.API/Dockerfile) - React, Nextjs, ASP.NET Core 5.0, IdentityServer, Dapr, Azure pipeline, K8S, SonarQube - [oskardudycz/EventSourcing.NetCore/Dockerfile](https://github.com/oskardudycz/EventSourcing.NetCore/blob/main/Dockerfile) - [vietnam-devs/coolstore-microservices/deploys/dockers](https://github.com/vietnam-devs/coolstore-microservices/tree/main/deploys/dockers) - [vietnam-devs/coolstore-microservices/Dockerfile](https://github.com/vietnam-devs/coolstore-microservices/blob/main/src/Services/ProductCatalog/ProductCatalogService.Api/Dockerfile) - [thangchung/clean-architecture-dotnet/Dockerfile](https://github.com/thangchung/clean-architecture-dotnet/blob/main/samples/Product/ProductService.Api/Dockerfile) - [laurentkempe/ChiseledDocker](https://github.com/laurentkempe/ChiseledDocker) - [richlander/container-workshop](https://github.com/richlander/container-workshop) - Documents fundamental .NET Container workflows ## Registries - [distribution/distribution](https://github.com/distribution/distribution) - The toolkit to pack, ship, store, and deliver container content - [Quay.io](https://quay.io/) - [GitHub Container Registry](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry) - [Docker Container Registry](https://hub.docker.com/) - [JFrog Docker Registry](https://jfrog.com/help/r/jfrog-artifactory-documentation/set-up-jfrog-container-registry-self-hosted-version) - [sonatype-nexus-oss](https://www.sonatype.com/products/sonatype-nexus-oss)