【教程】Docker入门完全指南:从安装到部署第一个应用

阿里云推广

Docker入门完全指南

Docker让应用部署变得简单。本文通过手把手教程,带你从零开始掌握Docker。

第1步:安装Docker

# Ubuntu/Debian
sudo apt update
sudo apt install docker.io

# 或者使用官方仓库(推荐,版本更新)
curl -fsSL https://get.docker.com | sh

# 将当前用户加入docker组(免sudo)
sudo usermod -aG docker $USER
# 重新登录生效

# 验证安装
docker --version
docker run hello-world

第2步:理解核心概念

【镜像 vs 容器】
镜像(Image) = 类(Class)
容器(Container) = 对象(Instance)

一个镜像可以运行多个容器实例

第3步:运行第一个容器

# 运行Nginx容器
# -d 后台运行
# -p 端口映射(主机80映射到容器80)
# --name 指定容器名
# nginx:alpine 使用alpine版本的镜像(体积小)

docker run -d -p 80:80 --name my-nginx nginx:alpine

# 查看运行中的容器
docker ps

# 访问测试
curl http://localhost

# 停止容器
docker stop my-nginx

# 删除容器
docker rm my-nginx

第4步:常用命令速查

# 镜像管理
docker pull nginx:latest      # 拉取镜像
docker images                 # 查看本地镜像
docker rmi nginx:alpine       # 删除镜像

# 容器生命周期
docker run -d --name app nginx    # 运行
docker start app                  # 启动
docker stop app                   # 停止
docker restart app                # 重启
docker rm app                     # 删除
docker rm -f app                  # 强制删除(运行中也能删)

# 查看容器信息
docker ps -a                  # 查看所有容器(包括停止的)
docker logs app               # 查看日志
docker logs -f app            # 实时跟踪日志
docker exec -it app sh        # 进入容器内部

# 资源管理
docker stats                  # 查看容器资源使用
docker system df              # 查看Docker磁盘使用
docker system prune           # 清理未使用的资源

第5步:数据持久化

# 方式1:Bind Mount(挂载主机目录)
# 适合开发环境,代码实时同步
docker run -d   -v /host/data:/container/data   --name myapp nginx

# 方式2:Volume(Docker管理)
# 适合生产环境,数据独立管理

# 创建卷
docker volume create mydata

# 使用卷
docker run -d   -v mydata:/container/data   --name myapp nginx

# 查看卷
docker volume ls
docker volume inspect mydata

第6步:网络配置

# 查看网络
docker network ls

# 创建自定义网络
docker network create mynet

# 运行容器并加入网络
docker run -d --name db --network mynet mysql:8
docker run -d --name app --network mynet nginx

# 在同一网络的容器可以通过容器名互相访问
# app容器内:ping db 可以通

第7步:编写Dockerfile

# Dockerfile - 定义如何构建镜像
FROM python:3.11-slim

# 设置工作目录
WORKDIR /app

# 复制依赖文件并安装
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 复制应用代码
COPY . .

# 暴露端口
EXPOSE 8000

# 启动命令
CMD ["python", "app.py"]
# 构建镜像
docker build -t myapp:1.0 .

# 运行
docker run -d -p 8000:8000 myapp:1.0

第8步:Docker Compose多容器编排

# docker-compose.yml
version: '3.8'

services:
  web:
    build: .
    ports:
      - "8000:8000"
    depends_on:
      - db
    environment:
      - DB_HOST=db
      
  db:
    image: mysql:8
    environment:
      MYSQL_ROOT_PASSWORD: secret
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:
# 启动所有服务
docker-compose up -d

# 查看日志
docker-compose logs -f

# 停止
docker-compose down

总结

Docker核心记住三点:镜像构建环境、容器运行应用、数据用Volume持久化。掌握这些,就能应对大部分场景。

发表评论