7 reasons to start using Docker
-
Upload
taras-lyapun -
Category
Software
-
view
2.244 -
download
2
Transcript of 7 reasons to start using Docker
6
VIRTUAL MACHINE CONTAINER
ISOLATION COMPLETE ALMOST COMPLETE
DENSITY x1 x3
OVERHEAD HIGH LOW
STARTUP SPEED 30 - 60 sec ~1 second
DOCKERFILE
8
FROM ubuntu RUN apt-get install -y python ADD ./app /app RUN pip install -r /app/requirements.txt WORKDIR /app EXPOSE 8000 VOLUME /app/logs CMD /app/gunicorn.sh
COMMAND LINE INTERFACE
9
~ docker build -t test-image .
~ docker run -d -p 8000:8000 \ -v /var/logs/docker:/app/logs \ —restart=always \ test-image
~ docker push your-repo/test-image
FIG
13
web: build: . command: python app.py links: - db ports: - "8000:8000" db: image: postgres
~ fig up
http://www.fig.sh/
BEFORE DOCKER• ---
• # INSTALL ELASTICSEARCH
• # INSTALL APT KEY
• - APT_KEY: URL=HTTP://PACKAGES.ELASTICSEARCH.ORG/GPG-KEY-ELASTICSEARCH STATE=PRESENT
• # SET DEDICATED REPOSITORY
• - APT_REPOSITORY: REPO='DEB HTTP://PACKAGES.ELASTICSEARCH.ORG/ELASTICSEARCH/{{ES_VERSION}}/DEBIAN STABLE MAIN' STATE=PRESENT
• # INSTALL ELASTICSEARCH WITH DEPENDANCIES
• - NAME: INSTALL ELASTICSEARCH
• APT: NAME={{ ITEM }} STATE=LATEST FORCE=YES
• TAGS: ELASTICSEARCH
• WITH_ITEMS:
• - ELASTICSEARCH
• - OPENJDK-7-JRE-HEADLESS
• - OPENNTPD
• NOTIFY: INIT ELASTICSEARCH
• # SET LIMITS.CONF
• - NAME: LIMITS.CONF TUNING
• LINEINFILE: DEST=/ETC/SECURITY/LIMITS.CONF LINE="{{ ITEM }}"
• TAGS: ELASTICSEARCH
• WITH_ITEMS:
• - 'ELASTICSEARCH SOFT NOFILE 32000'
• - 'ELASTICSEARCH HARD NOFILE 32000'
• # ENSURE SERVICE STARTED
• - SERVICE: NAME=ELASTICSEARCH STATE=STARTED
• # INSTALL PLUGINS
• - INCLUDE: PLUGINS.YML
18
AFTER DOCKER
~ DOCKER PULL DOCKERFILE/ELASTICSEARCH
~ DOCKER RUN -D -P 9200:9200 -V /VAR/DATA:/DATA \
DOCKERFILE/ELASTICSEARCH
19
• ---
• # INSTALL ELASTICSEARCH
• # INSTALL APT KEY
• - APT_KEY: URL HTTPSTATE=PRESENT
• # SET DEDICATED REPOSITORY
• - APT_REPOSITORYELASTICSEARCH/{{ES
• # INSTALL ELASTICSEARCH
• - NAME: INSTALL ELASTICSEARCH
• APT: NAME={{ ITEM
• TAGS: ELASTICSEARCH
• WITH_ITEMS:
• - ELASTICSEARCH
• - OPENJDK-7-JRE
• - OPENNTPD
• NOTIFY
• # SET LIMITS
• - NAME LIMITS
• LINEINFILE
• TAGS: ELASTICSEARCH
• WITH_ITEMS
• - 'ELASTICSEARCH
• - 'ELASTICSEARCH
• # ENSURE
• - SERVICE
• # INSTALL
• - INCLUDE
DOCKERFILE
20
FROM ubuntu RUN apt-get install -y python ADD ./app /app RUN pip install -r /app/requirements.txt WORKDIR /app EXPOSE 8000 VOLUME /app/logs CMD /app/gunicorn.sh
WHY MAY YOU NEED PAAS?
• A LOT OF PROJECTS
• SERVICE-ORIENTED ARCHITECTURE
• A LOT OF TESTING ENVIRONMENTS
• CONTINUOUS DEPLOYMENT
• SCALABILITY
24
THE TWELVE-FACTOR APP
• DECLARATIVE FORMAT FOR SETUP AUTOMATION
• CLEAN CONTRACT WITH UNDERLYING OS
• SUITABLE FOR DEPLOYMENT ON MODERN CLOUD PLATFORMS
• MINIMIZE DIVERGENCE BETWEEN DEV AND PROD
• CAN SCALE UP WITHOUT SIGNIFICANT CHANGES TO TOOLING
OR ARCHITECTURE
27http://12factor.net
3. CONFIG
30
Store config in the environment
• SETTINGS_LOCAL.PY
• ~ DOCKER RUN -D -E SMTP_SERVER_PASSWORD=12345 \ PROJECT/APP
4. BACKING SERVICES
31
Treat backing services as attached resources
• DOCKER RUN -D —NAME=DB POSTGRES
• DOCKER RUN -D —LINK DB:DB PROJECT/APP
• MULTIHOST: HTTP://STACKOVERFLOW.COM/QUESTIONS/18285212/HOW-TO-SCALE-DOCKER-CONTAINERS-IN-PRODUCTION
5. BUILD, CONFIG, RELEASE
32
Strictly separate build and run stages
BUILD: DOCKER BUILD .
CONFIG: DOCKER CREATE
RELEASE: DOCKER START
6. PROCESSES
33
Execute the app as one or more stateless processes
DOCKER CONTAINER STATELESS BY DEFAULT
9. DISPOSABILITY
36
Maximize robustness with fast startup and graceful shutdown
~ DOCKER STOP CONTAINER_NAME ~ DOCKER START CONTAINER_NAME
12. ADMIN PROCESSES
39
Run admin/management tasks as one-off processes
~ DOCKER RUN PROJECT/APP /BIN/RUN_GUNICORN.SH
~ DOCKER RUN PROJECT/APP /BIN/RUN_CELERY.SH
~ DOCKER RUN PROJECT/APP PYTHON MANAGE.PY MIGRATE
~ DOCKER EXEC CONTAINER_NAME PYTHON MANAGE.PY ANYTHING
CRIU
•FREEZE A RUNNING APPLICATION
•CHECKPOINT IT TO A HARD DRIVE
•RESTORE AND RUN THE APPLICATION
42
CORE OS
• NEW RE-ARCHITECTED LINIX DISTRIBUTION
• MINIMAL RAM USAGE
• APPLICATIONS RUN AS DOCKER CONTAINERS
• DESIGNED FOR SCALE
43