---
# System prepended metadata

title: Develope .NET using Docker

---

# Develope .NET using Docker

## What is Docker?

### Terminology
- Docker
- Container
- Image
- Container Registry
- Kubernetes
- Virtualization
- scale up/down vs scale out/in
- Windows container
- Microservices vs Monolithic
- Docker Compose
- Docker Swarm vs Kubernetes
- Docker volume
- Docker Network
- Dockerfile
- Multi-stage build
- File System
    - file path / vs \

## Why Docker?

## Check Points

- Docker multi-stage build feature
    - dotnet/sdk
    - dotnet/aspnet

## Issues ?

- Docker in Production Environment
    - How to build smaller image ?
- Docker Security ?
    - Docker Desktop for linux ?
    https://docs.docker.com/desktop/faqs/linuxfaqs/#why-does-docker-desktop-for-linux-run-a-vm
- Docker Hareware requirement ?
    - memory? disk? cpu? network?

### Docker CLI Cheat Sheat

#### Image

Build an image

`docker build -t <image name> <folder has Dockerfile>`

`docker build -t <image name> -f <docker file>`

#### Container

List all running container
`docker container ls`

List all containers (even if it's not running)
`docker container ls --all(-a)`

`docker exec -it <container name> bash`



-- old version

#### Build

Build an image from the Dockerfile in the current directory and tag the image
`docker build -t <image>`

List all iamges that are locally stored with the Docker Engine
`docker image ls`

Delete image from the local image store
`docker image rm <image>`

#### Share

Pull an image from a registry
`docker pull <image>`

Retag a local image with a new image name and tag
`docker tag <image> <repo/iamge>`

Push an image to a registry
`docker push <repo/image>`

#### Run

Run a container
`docker container run --name web -p 5000:80 alpine:3.9`

Stop a running container through SIGTERM
`docker container stop web`

Stop a running container through SIGKILL
`docker container kill web`

List the networks
`docker network ls`

List the running containers(add --all to include stopped container)
`docker container ls`

Delete all running and stopped containers
`docker container rm -f $(docker ps -aq)`

Print the last 100 lines of a container's logs
`docker container logs --tail 100 web`

### 需要搞懂弄熟的東西

#### 與 Docker 無關

`dotnet` cli 的使用

1. restore
    - nuget source (private/public)
    - platform
3. build
    - sdk version
    - platform
5. publish
    - 最佳化程度
    - self-contained