Docker基础知识
文章目录
- Docker基础知识
-
- 什么是Doker
- Docker安装与配置
- Docker容器基本操作
- Docker镜像管理
- Docker网络与存储
- [Docker Compose使用](#Docker Compose使用)
- 高级技巧与调试
- 实际项目案例
-
- [示例项目:搭建一个 Flask + Redis 服务](#示例项目:搭建一个 Flask + Redis 服务)
- AI创作声明
什么是Doker
Docker 是一个开源的容器化平台,它能够将应用及其依赖包打包到一个标准化的容器中,然后在任何地方快速且一致地运行。容器与虚拟机的不同在于,它不需要一个完整的操作系统,而是直接在宿主机上运行,从而减少了资源消耗并提高了效率。
正面示例:
bash
# 查看docker版本
docker --version
# 输出示例:
# Docker version 20.10.7, build f0df350
错误示例:
bash
# 错误的命令,使用了不支持的参数
docker --wrongflag
调试技巧:使用docker --help查看所有支持的命令与选项。
背后原理:
Docker 容器是基于 Linux 内核的 cgroups 和 namespaces 技术构建的。它通过这些技术实现了对资源的隔离和限制,从而让应用能够在不同的环境中无差异地运行。
Docker安装与配置
Docker 的安装过程简单,支持 Linux、Windows 和 Mac 操作系统。在本节中,我们将以 Linux 为例进行演示。
安装步骤:
-
更新系统:
bashsudo apt-get update -
安装依赖包:
bashsudo apt-get install apt-transport-https ca-certificates curl software-properties-common -
安装 Docker 官方 GPG 密钥:
bashcurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - -
添加 Docker 官方仓库:
bashsudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" -
安装 Docker:
bashsudo apt-get update sudo apt-get install docker-ce
错误示例:
安装过程中可能遇到以下错误:
bash
E: Unable to locate package docker-ce
调试技巧:确认操作系统是否支持 Docker,或者是否添加了正确的 Docker 仓库。
Docker容器基本操作
Docker 的核心概念之一就是容器,它允许用户将应用及其所有依赖打包到一个独立的环境中。
创建并启动容器:
bash
# 创建并启动一个 Ubuntu 容器
docker run -it ubuntu bash
查看运行中的容器:
bash
docker ps
停止容器:
bash
docker stop <容器ID>
错误示例:
bash
docker run -it non_existent_image bash
调试技巧:如果遇到镜像不存在错误,使用docker pull <镜像名>下载镜像。
Docker镜像管理
Docker 镜像是一个只读的模板,用于创建容器。镜像可以是从 Docker Hub 上下载的官方镜像,也可以是自己构建的自定义镜像。
查看本地镜像:
bash
docker images
拉取镜像:
bash
docker pull ubuntu
构建自定义镜像:
-
创建一个
Dockerfile文件,内容如下:dockerfileFROM ubuntu RUN apt-get update && apt-get install -y python3 CMD ["python3", "--version"] -
使用以下命令构建镜像:
bashdocker build -t my_python_image .
错误示例:
bash
docker build -t my_python_image .
如果Dockerfile 文件路径错误,或缺少必要的文件,会遇到构建失败的错误。
Docker网络与存储
Docker 提供了丰富的网络和存储选项,帮助用户灵活管理容器之间的通信以及持久化数据存储。
创建自定义网络:
bash
docker network create my_network
将容器连接到自定义网络:
bash
docker run --network my_network -it ubuntu bash
使用数据卷存储数据:
bash
# 创建并挂载一个数据卷
docker volume create my_volume
docker run -it -v my_volume:/data ubuntu
错误示例:
bash
docker network create
没有提供网络名称时,命令会报错。调试技巧:检查命令参数是否正确。
Docker Compose使用
Docker Compose 是一个用于定义和管理多个 Docker 容器应用的工具,适用于多容器应用的开发、测试和生产环境。
创建docker-compose.yml文件:
yaml
version: '3'
services:
web:
image: nginx
ports:
- "8080:80"
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
启动服务:
bash
docker-compose up
错误示例:
bash
docker-compose up
如果docker-compose.yml文件格式错误,可能导致启动失败。
高级技巧与调试
- 优化镜像构建 :通过
docker build --no-cache命令避免缓存,提高构建镜像的效率。 - Dockerfile多阶段构建:通过多阶段构建优化镜像体积和构建时间。
- 容器日志调试 :使用
docker logs <容器ID>查看容器的标准输出和错误信息。
实际项目案例
示例项目:搭建一个 Flask + Redis 服务
-
创建项目目录结构:
plaintextmy_flask_app/ ├── app.py └── Dockerfile -
编写
app.py文件:pythonfrom flask import Flask import redis app = Flask(__name__) r = redis.Redis(host='redis', port=6379) @app.route('/') def hello_world(): r.incr('counter') return f'Hello, World! Count: {r.get("counter").decode("utf-8")}' if __name__ == '__main__': app.run(host='0.0.0.0') -
编写
Dockerfile:dockerfileFROM python:3.8-slim WORKDIR /app COPY requirements.txt /app/ RUN pip install -r requirements.txt COPY . /app CMD ["python", "app.py"] -
创建
docker-compose.yml文件:yamlversion: '3' services: web: build: . ports: - "5000:5000" redis: image: redis -
构建并启动项目:
bashdocker-compose up --build -
访问 Flask 应用 :在浏览器中访问
http://localhost:5000。
AI创作声明
本文部分内容由 AI 辅助生成,并经人工整理与验证,仅供参考学习,欢迎指出错误与不足之处。