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持久化。掌握这些,就能应对大部分场景。
