Docker Tutorial - What is Docker & Docker Containers, Images, etc?

  • Published on Apr 14, 2015
  • Docker tutorial for beginners - part 1:
    Free Digital Ocean Credit!
    Docker is amazing, and it doesn't have to be difficult to understand. In these tutorials, I'll be breaking down exactly what a Docker container is and how to use it. I've found a lot of Docker container tutorials on the web, but I still hear from developers that it's hard to grasp exactly what Docker is and how to work with Docker images & containers.
    In this video, I'll compare Docker to Vagrant and explain the differences, then in the next video, we'll do our first miniature deployment with Docker by creating a Digital Ocean machine with Docker installed and then running a Docker web server container on the machine. Later on, we'll get into docker machine, docker compose (fig) and a whole mess of other fun tooling.
    Next up: how to run your first Docker web server -
    High-Availability Docker #1:
    - Cluster computing - CoreOS is our solution here. CoreOS allows us to make an expandable cluster of computers so we can add more computers should our application need more power to scale. CoreOS also allows us to run services on any machine in the cluster and they can all communicate with each other.
    High-Availability Docker #2:
    - Scheduling: we shouldn't manually choose which app runs on which machine - this idea doesn't work at scale. Fleet will be our scheduler that decides where our apps/services run. If a CoreOS machine goes down, fleet will reschedule any services that it was running onto a new machine.
    High-Availability Docker #3:
    - Service Registration
    Since we never know what ip address or port a service will be running on, we need to register that service so other services can find it and communicate with it. We'll use Etcd and Flannel for this
    High-Availability Docker #4:
    - Service Discovery:
    Now that services have registered, we can discover them and load balance between them with a generic docker nginx container
    High-Availability Docker #5:
    - Public DNS: Once the app is working, we need a fixed way for the outside world to access it. We'll use Nginx and Confd for this. Confd will watch Etcd for service registration and when services come/go, it will build a new configuration file for Nginx and reload Nginx.
    Also watch: "Responsive Design Tutorial - Tips for making web sites look great on any device"
  • Howto & StyleHowto & Style

Comments • 386

  • D B
    D B 9 days ago

    I have mac and want to install SQL server can I use Docker for that?

  • Farkhod Sadykov
    Farkhod Sadykov 10 days ago

    Very clear explanation. Puppy us the Data Tog monitoring service. I have one question what did you use for this draw all this diagrams 3:24?

  • Volvox
    Volvox 12 days ago

    the puppy dog is just for the "Awwww"s

  • Young Grizzly
    Young Grizzly 22 days ago

    Everytime I hear docker I think OpenVZ with a seed file.

  • Richard Z
    Richard Z 29 days ago

    Makes perfect sense!

  • FckGoogle GoogleFck
    FckGoogle GoogleFck 29 days ago

    The OS and The Environment that Your Code runs on are complexly and intimately entwined. Docker provides containers in which you control all aspects and can keep them all together, Your Code, the OS it runs on, and the Environment. This entire video, and many, many others, can be summarized in that single sentence. One sad effect of TVclip has been to encourage idiotic blabber and bloat.

  • Abu Musa
    Abu Musa Month ago

    after all this hard work, i found this very relaxing

  • Daniel Miller
    Daniel Miller Month ago

    "I have no idea what this puppy dog is about." Lol. #Datadog

  • Huzaifa Ali
    Huzaifa Ali Month ago

    Really appreciate the conciseness and completeness of this video covering all the basic knowledge.

  • Celebrity Tales
    Celebrity Tales Month ago

    learn more

  • Philip M. Turner
    Philip M. Turner Month ago

    Thank you! 7:05 Once an docker image is built is it possible to view the contents of it like a directory? It would be nice to see the contents of each (like the container, the image, etc) so it’s understood what we’re achieving with each step of the process.

  • Carl Bonsu
    Carl Bonsu Month ago +1

    Thank you. I finally understand what docker is and how it works. You explain very well :)

  • jsaenzMusic
    jsaenzMusic 2 months ago

    Thank you! You've been the first vid to really explain docker and containers in a way I can understand!

  • hasanvizrt
    hasanvizrt 2 months ago

    What about local and production ip without any type of load balancer?

  • thatguy13378
    thatguy13378 2 months ago

    What was the software used for the visualisation?

  • zolongOne
    zolongOne 2 months ago

    Very good explanation. Thank you!

  • Daniel Nascimento
    Daniel Nascimento 2 months ago

    best video about docker ever. Honestly.

  • DrMerciless
    DrMerciless 3 months ago

    sooooooooooooooo. What is docker?

  • Nhân Hoàng Trọng
    Nhân Hoàng Trọng 3 months ago +1

    Thanks. With VMs, we build project into an environment, with docker, we actually build environment.

  • Patrick Nelson
    Patrick Nelson 3 months ago +2

    5:34 That puppy dog is DataDog! 😊 Great service, btw.

  • G Ray Loveless
    G Ray Loveless 3 months ago +1

    Thank you very much for making and sharing this.

  • Michael Sollazzo
    Michael Sollazzo 3 months ago

    so what is docker? lol

  • F W
    F W 4 months ago I have collect some docker commands for you guys to use

  • Criss Cross Applesauce
    Criss Cross Applesauce 4 months ago

    I always see the like to dislike ratio on the videos and feel sad inside when i realise 90+% of people understood and took on board the information in the video whilst i was thinking about sheep jumping over a fence or some other daydreaming bs

  • leBichonMasque
    leBichonMasque 4 months ago

    the puppy is the "datadog" logo...

  • xman40100
    xman40100 4 months ago

    Thank you! This is a great explanation of how Docker works!
    Obviously I have to spend a little more time looking at how it works more, but this is a good introduction!

  • Talha Ch
    Talha Ch 4 months ago

    not for beginner

  • KriyenK P
    KriyenK P 5 months ago +1

    it's pronounced "oooh-boon-too"

  • Mihhail Samusev
    Mihhail Samusev 5 months ago

    Thanks a lot!

  • Thomas
    Thomas 5 months ago +1

    Really great explanation. Thank you!

  • Izo
    Izo 5 months ago

    Thanks so much !

  • seravi
    seravi 5 months ago

    Y You started using terminologies before defining them. Was I able to figure it out? Yes. But no thanks to you

  • Yoni Yoni
    Yoni Yoni 5 months ago


  • terrancejackson3
    terrancejackson3 5 months ago

    How does running multiple containers affect the backend load? Lets say I have 6 containers running a website and they are all hitting the database (read/writes)constantly. You can't have multiple instances of the same database as you can with multiple instances of a website so how is load being handled especially with table locks and things like that?

  • dillon4321
    dillon4321 5 months ago

    Awesome tutorial my dude

  • Kevin Ye
    Kevin Ye 5 months ago +1

    You explain it really well. thanks for the video

  • Etelred Etelred
    Etelred Etelred 6 months ago

    vagrant? what is vagrant? you assume ppl watching this video know what is vagrant? so wtf shouldnt they know what is docker?

  • Rahul Raj
    Rahul Raj 6 months ago +2

    Wow! what a nice explanation for docker functionality. Thank you

  • Andrés Torres
    Andrés Torres 6 months ago

    Awesome video!!

  • Farhanking7864
    Farhanking7864 6 months ago

    the puppy dog for those who are interested is datadog, it's used with containers in order to monitor the hardware and resource specs. It is also used with kubernetes clusters

  • Nick C
    Nick C 6 months ago +4

    Pronunciation guide for Ubuntu: "o͝oˈbo͝onto͞o"
    You're saying it all wrong.
    But thanks for the video.

    • J
      J 5 months ago +4


  • Shyam :
    Shyam : 6 months ago +1

    A great explanation for me.
    Mind blown by the concept of docker ! Thanks a lot for the explanation !

  • Veselin Nikolov
    Veselin Nikolov 6 months ago

    The dog is DataDog, similar to Grafana and Kebana

  • Adnan Boota
    Adnan Boota 6 months ago +2

    So easily and well explained. In short, in my own words:
    Docker container acts like a small virtual-machine, with all dependencies/environments, and there can be multiple containers on one machine, with different environments...

    • Adnan Boota
      Adnan Boota 6 months ago

      @Bryce Brogan Absolutely Right

    • Bryce Brogan
      Bryce Brogan 6 months ago +1

      That's exactly what I was thinking, that docker is like a small virtual machine, although perhaps dependent on its host for more things than would be the case for a full virtual machine.

  • Vahid Mohammadnia
    Vahid Mohammadnia 7 months ago

    does the serving and production servers need virtual operating system like the local machine to run the images?

  • bckzilla
    bckzilla 7 months ago

    You can skip the first 2:58, where he only talks about something called Vagrant. That is not Docker, so you don't need to hear it, if you want to know about docker.

  • Imad YI
    Imad YI 7 months ago

    Wait a minute, I am a complete neophyte in docker and still confused about what a container is. At 03:30 'A Docker image is a complete application wrapped up in an image' , then at 03:43 'From that image I can run as many containers as I want until I run out of processing power and ram...' fine so I'm thinking a docker image can handle 1 to several containers and a container is one of the blocks my app needs to run (e.g. SQL Server is in container A, python installation is in container B, and the docker image runs container A & B). Then right after you say 'Then I have this docker image on my machine and it runs as a container...' So? A docker image IS a container that can run containers? Also, I'm not sure what you mean by 'Project code' is it, for example, a python app source code? so what does it mean when you say 'This image IS my project code'? I thought the image contained not only the source code but all the other dependencies...

  • Walter Jovel
    Walter Jovel 7 months ago

    Can you run the quickbooks database on docker?

  • Blogzer
    Blogzer 7 months ago

    Thanks for the video explanation.

    Coming new to Docker (heard it for the first time at a recent job fair), is it, in essence, similar to Java in that the actual idealized project is written once, in a platform independent language (i.e. Java), and then releasable to any platform for which a platform-specific JavaVM has been written?
    Is Docker aimed, primarily, at web server and cloud hardware which, presumably, has a wide variety of vendors, architectures, massively-scaled DIY (Google, Facebook, Amazon, etc.) and is continuously changing? Also, there is the whole scalability thing which this presenter mentioned, briefly, about 2/3 the way through whereby one can add more resources then load up those resources with more containers to share an increased demand.
    Is Docker useful, and used, in both development and released in-the-wild?

  • Sabrish Gopalakrishnan
    Sabrish Gopalakrishnan 7 months ago

    is this limited to webapps?

  • Milan Dugovič
    Milan Dugovič 7 months ago

    in what software did you make those nice illustrations?

  • Sir Darcy
    Sir Darcy 7 months ago


  • Tantai Janpong
    Tantai Janpong 7 months ago

    Your tutorials are amazing i'm a big fan of you.

  • llorulez
    llorulez 7 months ago

    NIce stuff

  • moglimogify
    moglimogify 8 months ago

    Clear and concise, thank you.

  • mohammad moghadas
    mohammad moghadas 8 months ago


  • 謝宗佑
    謝宗佑 8 months ago

    A simple question: if 4 containers all need nodejs installed on top of one machine (ex. one Mac computer), then do the nodejs installment need to be run four time and using ram and all the computing sources four times ?

  • pepe6666
    pepe6666 9 months ago

    does the underlying operating system have to be the same if i deploy out a docker container? for example i build node.js and stuff on my windows machine, create a dockor image, and then plonk it on a linux machine running docker. would that work? or no

  • Iacovenco Vlad
    Iacovenco Vlad 9 months ago

    Those auto-captions made my day with the "will our stern" :D

  • Schuka ProAllied
    Schuka ProAllied 9 months ago

    nicely explained