欢迎光临
我们一直在努力

【开发工具】Docker常用操作

Docker常用操作

目录

文章目录

  • Docker常用操作
    • 目录
    • Docker容器管理
      • 创建并启动容器
      • 查看运行中的容器
      • 停止容器
      • 错误示例
    • Docker镜像管理
      • 拉取镜像
      • 查看本地镜像
      • 删除镜像
      • 错误示例
    • Docker网络与数据管理
      • 创建自定义网络
      • 启动容器并连接到网络
      • 使用数据卷存储数据
      • 错误示例
    • Docker Compose操作
      • 创建 `docker-compose.yml` 文件
      • 启动服务
      • 停止服务
      • 错误示例
    • 高级使用技巧与调试
      • 优化镜像大小
      • 使用 Docker 容器日志进行调试
      • 错误示例
    • 实际项目案例
      • 示例项目:搭建一个 Flask + MySQL 应用
    • AI创作声明

Docker容器管理

Docker 容器是 Docker 的核心,它将应用及其所有依赖包打包到一个标准化的单元中,能够在任何地方快速运行。在本节中,我们将介绍如何管理容器。

创建并启动容器

  • 使用 docker run 命令启动一个新的容器,并指定镜像。这里我们以启动一个 Ubuntu 容器为例:

    docker run -it ubuntu bash

  • 这会拉取 Ubuntu 镜像并启动一个容器,进入到容器内的 bash 命令行环境。

    查看运行中的容器

    要查看当前运行的容器,可以使用:

    docker ps

    该命令会列出所有正在运行的容器及其相关信息,如容器ID、镜像名称、运行时间等。

    停止容器

    停止运行中的容器,使用:

    docker stop <容器ID或容器名称>

    错误示例

    如果尝试启动一个不存在的镜像,会出现如下错误:

    docker run -it nonexistent_image bash

    错误提示:Unable to find image 'nonexistent_image' locally。

    调试技巧:在启动之前,使用 docker images 命令查看是否存在该镜像,或者使用 docker pull <镜像名> 拉取镜像。

    Docker镜像管理

    镜像是容器的基础,Docker 镜像包含了操作系统、软件包、应用程序等必要的文件和配置。

    拉取镜像

    使用 docker pull 命令从 Docker Hub 下载镜像:

    docker pull nginx

    查看本地镜像

    列出本地所有的 Docker 镜像:

    docker images

    删除镜像

    如果不再需要某个镜像,可以使用 docker rmi 删除:

    docker rmi <镜像ID或镜像名称>

    错误示例

    如果删除正在使用的镜像,Docker 会报错:

    docker rmi nginx

    错误提示:Error response from daemon: conflict: unable to delete…。

    调试技巧:使用 docker ps -a 查看是否有正在使用该镜像的容器,停止或删除容器后再删除镜像。

    Docker网络与数据管理

    Docker 提供了多种方式来配置容器的网络和数据存储。你可以使用不同类型的网络和挂载数据卷来提升容器之间的通信和数据持久化。

    创建自定义网络

    使用以下命令创建一个自定义的 Docker 网络:

    docker network create my_network

    启动容器并连接到网络

    将容器连接到自定义网络:

    docker run –network my_network -it ubuntu bash

    使用数据卷存储数据

    Docker 数据卷(Volumes)用于持久化容器的数据。创建并挂载一个数据卷:

    docker volume create my_volume
    docker run -it -v my_volume:/data ubuntu

    错误示例

    尝试将容器连接到不存在的网络时,会报错:

    docker run –network nonexistent_network -it ubuntu bash

    错误提示:network nonexistent_network not found。

    调试技巧:使用 docker network ls 查看当前 Docker 环境中的网络,确保网络名称正确。

    Docker Compose操作

    Docker Compose 是一种用于定义和运行多容器 Docker 应用的工具。它允许用户通过配置文件管理多个容器的生命周期。

    创建 docker-compose.yml 文件

    在项目根目录下创建一个 docker-compose.yml 文件,定义多个服务:

    version: '3'
    services:
    web:
    image: nginx
    ports:
    "8080:80"
    db:
    image: mysql
    environment:
    MYSQL_ROOT_PASSWORD: example

    启动服务

    使用以下命令启动 Compose 定义的所有服务:

    docker-compose up

    停止服务

    使用以下命令停止所有运行中的服务:

    docker-compose down

    错误示例

    如果 docker-compose.yml 文件存在格式错误,启动时会报错:

    docker-compose up

    错误提示:ERROR: yaml.parser.ParserError: while parsing a block collection。

    调试技巧:检查 docker-compose.yml 文件的格式,使用在线 YAML 校验工具检查是否有语法错误。

    高级使用技巧与调试

    优化镜像大小

    构建镜像时,可以使用多阶段构建(multi-stage build)来优化镜像的体积。例如,先在一个临时的镜像中安装构建工具,然后将最终应用复制到一个轻量级镜像中:

    # 第一阶段:构建阶段
    FROM node:14 AS builder
    WORKDIR /app
    COPY . .
    RUN npm install

    # 第二阶段:运行阶段
    FROM node:14-slim
    WORKDIR /app
    COPY –from=builder /app .
    CMD ["node", "app.js"]

    使用 Docker 容器日志进行调试

    查看容器的标准输出和错误信息:

    docker logs <容器ID或容器名称>

    错误示例

    如果容器因为某个原因退出,可以使用以下命令查看容器的日志信息:

    docker logs <退出容器ID>

    错误提示:No such container。

    调试技巧:确保容器ID正确,或者使用 docker ps -a 查看所有容器的状态。

    实际项目案例

    示例项目:搭建一个 Flask + MySQL 应用

  • 创建项目目录结构:

    my_flask_app/
    ├── app.py
    ├── Dockerfile
    ├── requirements.txt
    └── docker-compose.yml

  • 编写 app.py:

    from flask import Flask
    import mysql.connector

    app = Flask(__name__)

    @app.route('/')
    def hello_world():
    db = mysql.connector.connect(host="mysql", user="root", password="example", database="test")
    cursor = db.cursor()
    cursor.execute("SELECT * FROM users")
    result = cursor.fetchall()
    return f"Users: {result}"

    if __name__ == '__main__':
    app.run(host='0.0.0.0')

  • 编写 Dockerfile:

    FROM python:3.8-slim
    COPY requirements.txt /app/
    WORKDIR /app
    RUN pip install -r requirements.txt
    COPY . /app
    CMD ["python", "app.py"]

  • 编写 docker-compose.yml:

    version: '3'
    services:
    web:
    build: .
    ports:
    "5000:5000"
    mysql:
    image: mysql
    environment:
    MYSQL_ROOT_PASSWORD: example
    MYSQL_DATABASE: test

  • 启动服务:

    docker-compose up –build

  • 访问应用:在浏览器中访问 http://localhost:5000。

  • AI创作声明

    本文部分内容由 AI 辅助生成,并经人工整理与验证,仅供参考学习,欢迎指出错误与不足之处。

    赞(0)
    未经允许不得转载:171主机测评 » 【开发工具】Docker常用操作
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址