Docker使用教程
·
一、Docker简介
Docker是一种容器化平台,可将应用程序及其依赖项打包在轻量级容器中运行。核心优势:
- 环境一致性:解决"在我机器上能跑"的问题
- 资源高效:共享操作系统内核,无需完整虚拟机
- 快速部署:秒级启动容器
二、环境准备(Ubuntu示例)
# 1. 卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
# 2. 安装依赖
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
# 3. 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 4. 设置稳定版仓库
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 5. 安装Docker引擎
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
# 6. 验证安装
sudo docker run hello-world
看到Hello from Docker!表示安装成功
三、核心概念
-
镜像(Image):只读模板,包含运行环境
docker pull nginx:latest # 下载官方Nginx镜像 -
容器(Container):镜像的运行实例
docker run -d -p 8080:80 --name my_nginx nginx-d:后台运行-p 8080:80:主机8080端口映射容器80端口
-
仓库(Registry):镜像存储中心,默认Docker Hub
四、日常操作命令
# 查看运行中的容器
docker ps
# 查看所有容器(含已停止)
docker ps -a
# 停止/启动容器
docker stop my_nginx
docker start my_nginx
# 进入容器终端
docker exec -it my_nginx /bin/bash
# 查看日志
docker logs my_nginx
# 删除容器
docker rm my_nginx
# 删除镜像
docker rmi nginx:latest
五、实战:部署Python应用
-
创建项目目录
mkdir myapp && cd myapp -
创建
app.pyfrom flask import Flask app = Flask(__name__) @app.route('/') def hello(): return "Hello Docker World!" if __name__ == "__main__": app.run(host='0.0.0.0', port=5000) -
创建
Dockerfile# 使用官方Python基础镜像 FROM python:3.9-slim # 设置工作目录 WORKDIR /app # 复制依赖文件 COPY requirements.txt . # 安装依赖 RUN pip install --no-cache-dir -r requirements.txt # 复制应用代码 COPY . . # 暴露端口 EXPOSE 5000 # 启动命令 CMD ["python", "app.py"] -
创建
requirements.txtflask==2.0.2 -
构建镜像
docker build -t my-python-app . -
运行容器
docker run -d -p 5000:5000 --name myapp my-python-app
访问 http://localhost:5000 查看结果
六、数据持久化
# 创建数据卷
docker volume create mydata
# 挂载到容器
docker run -d -v mydata:/app/data --name db_container mysql
# 主机目录挂载
docker run -d -v /host/path:/container/path nginx
七、网络配置
# 创建自定义网络
docker network create my_network
# 容器加入网络
docker run -d --network=my_network --name web nginx
docker run -d --network=my_network --name db mongo
# 容器间通过名称通信
# 在web容器中: ping db
八、Docker Compose多容器管理
-
安装Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose -
创建
docker-compose.ymlversion: '3' services: web: image: nginx:latest ports: - "8080:80" db: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: example -
启动服务
docker-compose up -d
九、最佳实践
- 使用
.dockerignore文件排除无关文件 - 多阶段构建减小镜像体积
- 定期清理无用资源
docker system prune -a -f - 避免使用
latest标签生产环境 - 设置容器资源限制
docker run -d --memory=512m --cpus=1.5 nginx
通过本教程,您已掌握Docker核心操作。建议:
- 在Docker Playground在线练习
- 查阅官方文档
- 尝试容器化自己的项目
更多推荐


所有评论(0)