docker for .net developers
TRANSCRIPT
Docker for .NET DevelopersTASWAR BHATTI (MVP) SYSTEM ARCHITECT@TASWARBHATTI GEMALTOHTTP: / /TASWAR.ZEYT INSOFT.COM
Agenda What is Docker?
Images and ContainersDocker vs VMTooling around Docker
Dockerfile
Docker linking with other containers
Docker compose
Summary
History of Software Deployment
DevOps on your software
What is Docker? - Lightweight, open, secure platform
- Simplify building, shipping, running apps
- Shipping container system for code
- Runs natively on Linux or Windows Server
- Runs on Windows or Mac Development machines (with a virtual machine or Hyper-V)
- Relies on "images" and "containers“
- Great for microservices system architecture design and deploy
Docker Leading open-source containerization platform
Supported natively in Azure
Docker containers wrap up a piece of software in a complete filesystem that contains everything it needs to run: code, runtime, system tools, system libraries – anything you can install on a server. This guarantees that it will always run the same, regardless of the environment it is running in
Containers Lightweight alternative to virtual machines
Smaller, less expensive, faster to start up, and self-contained
Host Operating System
Hypervisor
Guest OS
Libraries
App
Guest OS
Libraries
App
Guest OS
Libraries
App
Operating System
Container Engine
Libraries
App
Libraries
App
Libraries
App
Virtual Machines
Containers
Images and Containers
Docker Image - Ubuntu, DotNet Core, Node etc
- An image is an inert, immutable, file essentially a snapshot of a container
- A read-only template composed of layered filesystems used to share common files
- Create Docker container instances
- Created by docker build command
- Stored in Docker registry (Docker Hub)
Docker Container - Container is an instance of your image but running
- Using the docker run command
- An isolated and secured shipping container
- created from an image that can be run, started, stopped, moved and deleted
Docker Architecture
Docker CLI Command-line interface for Docker, available for Linux, OS X, and Windows (available separately or as part of Docker Toolbox)
Running a Containerdocker run -i -t ubuntu /bin/bash
Docker CLI command
Run container with interactive terminal Pull "ubuntu"
image from Docker Hub or local registry
Command to execute in the container
Common Docker CLI Commandsdocker run - Use an image to run a container
docker pull - Pull an image from a registry
docker build - Build a Docker image
docker exec - Execute a command in a container
docker stop - Stop a running container
docker images - List available Docker images
docker ps - List running Docker containers
Is Docker only for Linux? - Can I run my windows app Docker?
- Is Docker supported in Visual Studio?
Azure Container Service Provides robust, ready-to-use Docker hosting environment
Uses open-source orchestration tools (DC/OS and Swarm)
Tools for Docker - Install docker from https://docs.docker.com/
Docker tools for windows - For windows 10 or windows 2016
◦ Contains Linux running under Hyper-V by default (MobyLinuxVM)◦ Can be switched to use windows containers (nanoserver, windows 2016)
Kitematic A GUI component for Docker
- Allows one to control the container (start, stop, remove, etc)
Demo of Kitematic
Dockerfile - A dockerfile is a simple text file that contains the commands a user could call to assemble an image.
Dockerfile (Sample) FROM microsoft/dotnet:latest
COPY . /app
WORKDIR /app
RUN ["dotnet", "restore"]
RUN ["dotnet", "build"]
EXPOSE 5000/tcp
ENV ASPNETCORE_URLS http://*:5000
ENTRYPOINT ["dotnet", "run"]
Dockerfile Best Practices Use .dockerignore
Avoid unnecessary installed packages
Run one process per container
Minimize the number of layers
A container can be stopped and destroyed and a new one built and put in place with an absolute minimum of set-up and configuration
Linking Docker Container Demo
Docker Compose
Docker compose Define and running multiple container applications
One can define it in one or multiple fileDocker-compose.yml (default file)Docker-compose.dev.ymlDocker-compose.prod.ymlUse –f option to provide multiple files
Docker-compose.yml version: ‘2’
services:
db:
image: mysql
volume:
- ./:/var/lib/mysql
ports:
- “3306:3306”
environment:
MYSQL_ROOT_PASSWORD: 123456
Demo VSCode and VS Docker Tool
Additional Resources Self Paced Training by Docker - https://training.docker.com/category/self-paced-online
Julien Corioland, TE France: HOL to get started with Docker containers on Windows: https://github.com/jcorioland/WindowsContainersHOL
Docker created content in partnership with Microsoft: Curated list of resources on Docker and Windows Containers - coming directly from docker: https://github.com/docker/community/blob/master/Docker-Meetup-Content/+Windows.md