Manuál
Kompletní průvodce Docker
Docker změnil způsob, jak buildíme a deployujeme software. Tady je kompletní průvodce.
Co je Docker
Docker balí aplikaci + všechny závislosti do kontejneru. „Works on my machine" → „Works everywhere."
Základní příkazy
docker run -d -p 8080:80 nginx
docker ps
docker stop
docker rm
docker images
docker pull postgres:16
docker ps
docker stop
docker rm
docker images
docker pull postgres:16
Dockerfile
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --production
COPY . .
EXPOSE 3000
CMD ["node", "index.js"]
WORKDIR /app
COPY package*.json ./
RUN npm ci --production
COPY . .
EXPOSE 3000
CMD ["node", "index.js"]
Docker Compose
services:
app:
build: .
ports: ["3000:3000"]
depends_on: [db]
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: secret
volumes: ["pgdata:/var/lib/postgresql/data"]
volumes:
pgdata:
app:
build: .
ports: ["3000:3000"]
depends_on: [db]
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: secret
volumes: ["pgdata:/var/lib/postgresql/data"]
volumes:
pgdata:
Networking
docker network create mynet
docker run --network mynet --name app myapp
docker run --network mynet --name db postgres
docker run --network mynet --name app myapp
docker run --network mynet --name db postgres
Volumes
docker volume create mydata
docker run -v mydata:/data myapp
docker run -v $(pwd):/app myapp # bind mount
docker run -v mydata:/data myapp
docker run -v $(pwd):/app myapp # bind mount
Multi-stage builds
FROM node:20 AS build
RUN npm run build
FROM node:20-alpine
COPY --from=build /app/dist ./dist
RUN npm run build
FROM node:20-alpine
COPY --from=build /app/dist ./dist
Best practices
- Alpine images
- Multi-stage builds
- Non-root user
- .dockerignore
- Health checks
- Pinované verze
Další krok
Naučte se Docker Compose pro multi-container apps, pak Kubernetes pro orchestraci.