Linux 容器技术

学习 Docker 和容器化技术,掌握现代应用部署和管理方法

容器技术概述

容器技术是现代软件开发和部署的核心技术,它提供了轻量级、可移植的应用程序打包和运行环境。 Docker 是最流行的容器平台,让应用程序能够在任何环境中一致运行。

Docker 基础

镜像、容器和仓库管理

容器编排

Docker Compose 和 Kubernetes

微服务架构

容器化微服务部署

Docker 基础操作

Docker 安装

# Ubuntu/Debian
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
# CentOS/RHEL
sudo yum install -y docker
sudo systemctl start docker
sudo systemctl enable docker

基本命令

# 查看版本
docker --version
docker info
# 镜像操作
docker images
docker pull nginx
docker rmi nginx
# 容器操作
docker ps
docker ps -a
docker run -d --name web nginx
docker stop web
docker rm web

Dockerfile 编写

基础 Dockerfile

# 使用官方 Node.js 镜像
FROM node:16-alpine
# 设置工作目录
WORKDIR /app
# 复制依赖文件
COPY package*.json ./
# 安装依赖
RUN npm ci --only=production
# 复制应用代码
COPY . .
# 暴露端口
EXPOSE 3000
# 启动应用
CMD ["npm", "start"]

构建和运行

# 构建镜像
docker build -t myapp:latest .
# 运行容器
docker run -d -p 3000:3000 --name myapp myapp:latest
# 查看日志
docker logs myapp
docker logs -f myapp
# 进入容器
docker exec -it myapp /bin/sh

Docker Compose

多容器应用

# docker-compose.yml
version: '3.8'
services:
web:
build: .
ports:
- "3000:3000"
depends_on:
- db
environment:
- DATABASE_URL=postgresql://user:pass@db:5432/mydb
db:
image: postgres:13
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=pass
- POSTGRES_DB=mydb
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:

Compose 命令

# 启动服务
docker-compose up -d
# 查看状态
docker-compose ps
docker-compose logs
# 停止服务
docker-compose down
# 重建服务
docker-compose up --build

容器管理和监控

资源限制

# 限制内存和CPU
docker run -d --name web \
--memory=512m \
--cpus=0.5 \
nginx
# 查看资源使用
docker stats
docker stats web

数据卷管理

# 创建数据卷
docker volume create mydata
# 使用数据卷
docker run -d --name db \
-v mydata:/var/lib/mysql \
mysql:8.0
# 绑定挂载
docker run -d --name web \
-v /host/path:/container/path \
nginx

网络配置

# 创建网络
docker network create mynetwork
# 连接到网络
docker run -d --name web \
--network mynetwork \
nginx
# 查看网络
docker network ls
docker network inspect mynetwork

最佳实践

推荐做法

  • 使用多阶段构建减小镜像大小
  • 使用 .dockerignore 排除不必要文件
  • 设置合适的资源限制
  • 使用健康检查确保容器状态
  • 定期更新基础镜像

避免的问题

  • 在容器中运行多个进程
  • 在镜像中存储敏感数据
  • 使用 latest 标签部署生产环境
  • 忽略容器安全扫描
  • 不设置资源限制

继续学习

掌握了容器技术后,继续学习更多高级主题