This document discusses deployment automation using Docker. It begins by introducing Docker terminology like images, containers, and registries. It then covers installing Docker, building images from Dockerfiles, tagging and pushing images to private registries, and running containers. The document also discusses mounting host directories in containers, cluster operations, and next steps around orchestration, monitoring, and continuous delivery.
9. Linux Containers (LXC)
OS Kernel
...
Container
Container
Container
Docker
daemon
Multi CPU/core box
cgroups
Resource isolation
● CPU
● memory
● disk I/O
Namespace isolation
● process tree
● network
● user ids
● mounted file systems
OS Kernel
Docker
...
Container
Container
Container
There is no virtualization involved when
software runs within containers.
(2007)
10. Docker Registry
Docker
Registry
Docker
Image
dev / test / staging / production
*1
Storage backend
Local volume, S3, etc.TCP-based API
REST API
REST API
Docker
Daemon
Jenkins/CD/
automation
software
Containers
Containers
Containers
16. Walkthrough
docker build -t IMAGE_NAME .
docker tag IMAGE_ID REGISTRY_URL:PORT/IMAGE_NAME:TAG
docker push REGISTRY_URL:PORT/IMAGE_NAME:TAG
docker pull REGISTRY_URL:PORT/IMAGE_NAME:TAG
docker run --restart=always -d -p HOST_PORT:CONTAINER_PORT IMAGE_NAME:TAG
Build image from source
Tag image appropriately
Push image to the registry
Pull image from the registry
Run container based on the image
Dev box
Jenkins
CD
Prod
Staging
Test
17. Container Configuration
Docker Instance
Container
Container portHost port
/src/dir
Host FS
Container FS
/opt/dir
Configure port mapping
docker run ... -p HOST_PORT:CONTAINER_PORT
docker run ... -v HOST_DIR:CONTAINER_DIR
Mount a host directory as a data volume
18. Instance
En Route Deployment Demo
Admin Console
web app
Backend App
api servers
LB
Instance
App
LB
Instance
Instance
...
DB