Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
technical:docker-intro [2026/09/11 18:47] – systemtechnical:docker-intro [2026/09/13 20:12] (current) – [3 types you'll see:] system
Line 108: Line 108:
   - **Bind mount** ./mycode:/app - you link your local folder to container. Great for development, edit code locally, container sees it instantly.   - **Bind mount** ./mycode:/app - you link your local folder to container. Great for development, edit code locally, container sees it instantly.
   - **Anonymous volume** - Docker creates random name, don't use it.   - **Anonymous volume** - Docker creates random name, don't use it.
 +
 +<WRAP center round tip 100%>
 +  * The left side is on the host side
 +  * The right side is on the container side.
 +</WRAP>
 +
  
 ===== Short Recap ===== ===== Short Recap =====
Line 118: Line 124:
   * Container = house built from blueprint + a whiteboard inside (writable layer)   * Container = house built from blueprint + a whiteboard inside (writable layer)
   * Volume = external garage where you store stuff so it doesn't get lost when you demolish the house.   * Volume = external garage where you store stuff so it doesn't get lost when you demolish the house.
 +
 +===== Dockerfile and docker-compose.yml =====
 +<WRAP center round tip 100%>
 +  * Dockerfile = how to BUILD one image
 +  * docker-compose.yml = how to RUN many containers together
 +</WRAP>
 +==== Dockerfile ====
 +  * Recipe to create an image. One file = one image.
 +<code bash>
 +FROM python:3.11
 +WORKDIR /app
 +COPY requirements.txt .
 +RUN pip install -r requirements.txt
 +COPY . .
 +CMD ["python", "app.py"]
 +</code>
 +  * You build it:
 +<code bash>
 +docker build -t my-app .
 +</code>
 +  * Result: an image called my-app.
 +  * It knows nothing about ports, volumes, networks, other containers, environment.
 +  * It only cares about what's inside that one container.
 +
 +==== docker-compose.yml ====
 +  * Blueprint for your whole stack. How containers connect and run together.
 +<code yaml>
 +services:
 +  web:
 +    build: .              # <- uses your Dockerfile to build
 +    ports:
 +      - "5000:5000"
 +    volumes:
 +      - .:/app
 +    depends_on:
 +      - db
 +    networks:
 +      - app-net
 +
 +  db:
 +    image: postgres:15    # <- uses existing image from Docker Hub
 +    environment:
 +      POSTGRES_PASSWORD: secret
 +    volumes:
 +      - pgdata:/var/lib/postgresql/data
 +    networks:
 +      - app-net
 +
 +networks:
 +  app-net:
 +
 +volumes:
 +  pgdata:
 +</code>
 +  * You run it:
 +<code bash>
 +docker compose up
 +</code>
 +  * Result: 2 containers running, connected on same network, with volume.
 +  * It doesn't build anything new (unless you tell it build: .). It just orchestrates.
 +
 +==== Analogy: ====
 +  * You're building a house.
 +  * **Dockerfile** = instructions for how to build one brick type — what clay, how hot, how long in oven.
 +  * **docker-compose.yml** = architectural plan — where bricks go, where plumbing and electrical go, how 3 houses connect into a neighborhood.
 +
 +==== When to use what: ====
 +  * You write a Dockerfile once per app/service you create.
 +  * You write a docker-compose.yml once per project to run all your services together locally.
 +
 +You can use Dockerfile without compose:
 +  * docker build + docker run
 +You cannot use compose without images — either you build them via Dockerfile, or pull them from Hub.
 +  * In short:
 +      * **Dockerfile** -> //docker build// -> Image
 +      * **docker-compose.yml** -> //docker compose up// -> Running containers (built from Dockerfiles or Hub images)
 +
 +
 +===== Networking with Docker =====
 +  * Because networking is usually hands-on, we will cover the Docker networking in the pages which will do hands on exercises. 
 +<WRAP center round tip 100%>
 +  * Network can be specified when you issue the //docker run// command
 +  * Alternatively it can be specified in the docker-compose.yml file and then you issue the //docker compose up// command.
 +</WRAP>
  
  • technical/docker-intro.1789145223.txt.gz
  • Last modified: 2026/09/11 18:47
  • by system