Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Django & Docker

Django & Docker

How to be happy with Django & Docker @djangovillage2014

barrachri

June 13, 2014
Tweet

More Decks by barrachri

Other Decks in Programming

Transcript

  1. Quick survey • How many people have heard about docker

    ? • How many people have tried docker ? • How many people are using docker ?
  2. 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. 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. 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. Well…. Docker is: • Lightweight • Minimal resources -> Minimal

    overhead • Fast • Portable • Open Source • Easy
  6. 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. $ 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. 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. 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. 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. 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. 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. 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. 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. 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
  16. 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
  17. 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)
  18. 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]
  19. 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
  20. 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
  21. Dockerfile cache Every line in your Dockerfile is chached, if

    you change one line Docker will build your image from that line.
  22. 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
  23. 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 ! !
  24. Community ! official web site: www.docker.com irc: #docker on freenode

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