Django & Docker

Django & Docker

How to be happy with Django & Docker @djangovillage2014

8cafbb6a1b892de6f03ec6db012fb39f?s=128

barrachri

June 13, 2014
Tweet

Transcript

  1. 3.

    Quick survey • How many people have heard about docker

    ? • How many people have tried docker ? • How many people are using docker ?
  2. 10.

    Definition Docker is an open-source platform for developing, shipping, and

    running applications. Is fast, lightweight and portable and you can separate your applications from your infrastructure. Docker combining a lightweight container virtualization platform with workflows and tooling that help you manage and deploy your applications.
  3. 12.

    The little story • Dotcloud inc. (PaaS) -> Docker inc.

    • Initially written in python -> now in GO • 1.0 is out ! • Initially based on LinuX Container (LXC) now it uses libcontainer
  4. 13.

    How it works 3 main components: ! • Docker server

    daemon • Docker API/client (CLI - command line interface) • Docker registry (official, private and public) ! The Docker API/client and Docker server communicate via sockets or through a RESTful API.
  5. 15.

    Well…. Docker is: • Lightweight • Minimal resources -> Minimal

    overhead • Fast • Portable • Open Source • Easy
  6. 17.

    Requirements • 64bit • LXC (not anymore with libcontainer) •

    AUFS • Linux 3.8 or above ! Available for : Linux, Mac OS X (with boot2docker), soon for other Unix OS.
  7. 18.

    $ sudo apt-get update $ sudo apt-get install linux-image- extra-`uname

    -r` --------------------- $ curl -s https://get.docker.io/ ubuntu/ | sudo sh ! ! ! Other OS at: http://docs.docker.com/
  8. 20.

    Docker server • The Docker daemon runs on a host

    machine. • It can be LOCAL or REMOTE • He managed CONTAINERS and IMAGE • The user does not directly interact with the daemon, but instead through the Docker API/client.
  9. 21.

    Docker API/client • Is the primary user interface to Docker

    • It accepts commands from the user and communicates back and forth with a Docker daemon.
  10. 22.

    Docker registry It’s simple the Docker images repository ! It

    can be: • Official: hub.docker.com (private and public) • Others (private and public) ! ! docker-registry repository https://github.com/dotcloud/docker-registry
  11. 24.

    Docker image A Docker image is a read-only “template”. !

    For example, an image could contain an Ubuntu operating system with Apache, NGINX or your database. ! Images are used to create Docker containers. ! You can: • build new images • update existing images • download Docker images already created.
  12. 25.

    Docker container 1/2 Docker containers are similar to a directory.

    ! A Docker container holds everything that is needed for an application to run and can be run, started, stopped, moved, and deleted. ! Each container is an isolated and secure application platform. ! A container consists of an operating system, user-added files, and meta-data.
  13. 26.

    Docker container 2/2 An image tells Docker what the container

    holds, what process to run when the container is launched, and a variety of other configuration data. ! When Docker runs a container from an image, it adds a read-write layer on top of the image (using a union file system) in which your application can then run.
  14. 27.

    Docker flow 1.Build/Download your Docker images 2.Create (alias run) your

    container from those images 3.Share/Save your images on Docker Hub or your own repository
  15. 28.
  16. 31.

    Some commands docker run # run a container docker stop

    # stop a container docker rm # remove a container docker rmi # remove an image docker inspect # information about container docker commit # create a new image from the container docker logs # container’s logs docker build # build a container from a dockerfile docker ps # lists the container docker pull # pull an image from a registry
  17. 32.
  18. 34.

    docker run ubuntu echo “ciao” run a container based on

    ubuntu image with command echo “ciao” ! root@test:~# docker run ubuntu echo "ciao" Unable to find image 'ubuntu' locally # looks for ubuntu image locally Pulling repository ubuntu # pull ubuntu image from hub.docker.com a7cf8ae4e998: Download complete …………………………………………………… 4d26dd3ebc1c: Download complete d4010efcfd86: Download complete ciao # output of our COMMAND
  19. 35.

    Some run options -d # Detached mode (alias background) -e

    # Set environment variables -h # Container host name -p # Publish a container's port to the host -v, --volume=[] #Bind mount a volume --link #Add link to another container (name:alias) --volumes-from=[] #Mount volumes from the specified container(s) -m, --memory=”” #Memory limit -c #CPU shares (relative weight)
  20. 37.

    docker run -v /var/log -p 80:80 --name nginx_c ubuntu touch

    /var/log/text -v /var/log # mount dir outside container -p 80:80 # redirect 80 port of host machine to 80 port of container --name nginx_c # name this container nginx_c touch /var/log/text # our COMMAND with [ARG]
  21. 44.

    This is a Dockerfile FROM ubuntu:12.04 # sets the base

    image RUN apt-get update # run a command RUN apt-get install -y build-essential git python / python-dev python-setuptools python-pip ADD ./ /app # copy files from host machine to images RUN pip install -r /app/requirements.txt VOLUME /app # In this way you can see this dir from your host machine EXPOSE 8080 # Port to expose CMD ["/usr/local/bin/uwsgi" ,"--ini" ,"/app/conf/uwsgi.ini"] # default command that will run when container starts
  22. 45.

    But remember…. Every RUN is a commit that save the

    state of the container into an image ! RUN cd /var/log RUN rm mylogs ! is different from ! RUN cd /var/log && rm mylogs
  23. 46.

    Dockerfile cache Every line in your Dockerfile is chached, if

    you change one line Docker will build your image from that line.
  24. 49.
  25. 50.

    Interesting projects • Dokku - Heroku with Docker • Orchard

    - PaaS provider for Docker • CoreOS - OS for Docker cloud server • Maestro - Orchestration system for Docker • Apache Mesos - From the name it seems awesome • Flynn.io - PaaS provider for Docker • Deis.io - PaaS provider for Docker • Other - A lot of other interesting stuff
  26. 51.

    Resources to start Learn Docker in 10 min http://www.docker.com/tryit/ !

    How is Docker.io different from a normal VM ? http://stackoverflow.com/questions/16047306/how-is-docker-io- different-from-a-normal-virtual-machine ! Can you explain Docker with a practical example/case ? http://stackoverflow.com/questions/20618828/can-you-explain-docker- with-a-practical-example-case ! Docker Explained: How To Containerize Python Web Applications https://www.digitalocean.com/community/tutorials/docker-explained-how- to-containerize-python-web-applications ! !
  27. 52.

    Community ! official web site: www.docker.com irc: #docker on freenode

    google groups: docker-user italian meetup: (?)