当前位置: 首页 > article >正文

最质量实践Docker

Docker 的核心概念

- 镜像(Image):一个只读模板只包含运行应用程序所需的代码、库和依赖。

- 容器(Container):镜像的运行实例,是一个独立的、轻量级的执行环境。

- Dockerfile:用于定义镜像构建过程的文本文件。

- Docker Hub:Docker 官方的镜像仓库,可以存储和分享镜像。

- Docker Compose:用于定义和运行多容器应用的工具。

 1.Docker 的基本操作

镜像操作

- 拉取镜像:

  ```bash

  docker pull ubuntu:latest

  ```

- 查看本地镜像:

  ```bash

  docker images

  ```

- 删除镜像:

  ```bash

  docker rmi <image_id>

  ```

 

容器操作

- 运行容器:

  ```bash

  docker run -it ubuntu /bin/bash

  ```

  - `-i`:交互模式。

  - `-t`:分配伪终端。

- **查看运行中的容器**:

  ```bash

  docker ps

  ```

- 查看所有容器:

  ```bash

  docker ps -a

  ```

- 停止容器:

  ```bash

  docker stop <container_id>

  ```

- 启动已停止的容器:

  ```bash

  docker start <container_id>

  ```

- 删除容器:

  ```bash

  docker rm <container_id>

  ```

 

2. Dockerfile 实践

Dockerfile 是用于构建 Docker 镜像的脚本文件。以下是一个简单的 Dockerfile 示例:

```Dockerfile

# 使用基础镜像

FROM python:3.9-slim

 

# 设置工作目录

WORKDIR /app

 

# 复制当前目录下的文件到容器中

COPY . /app

 

# 安装依赖

RUN pip install --no-cache-dir -r requirements.txt

 

# 暴露端口

EXPOSE 80

 

# 设置启动命令

CMD ["python", "app.py"]

```

 

#### **构建镜像**

```bash

docker build -t my-python-app .

```

 

#### **运行容器**

```bash

docker run -p 4000:80 my-python-app

```

 

---

3. Docker Compose 实践

Docker Compose 用于定义和运行多容器应用。以下是一个简单的 `docker-compose.yml` 示例:

```yaml

version: '3'

services:

  web:

    image: my-python-app

    ports:

      - "4000:80"

  redis:

    image: redis:latest

 

Docker *的实际应用场景*

开发环境一致性

- 使用 Docker 镜像确保开发、测试和生产环境的一致性,避免“在我机器上可以运行”的问题。

 

持续集成与持续部署(CI/CD)

- 在 CI/CD 流水线中使用 Docker 构建和测试应用,确保每次提交都能快速部署。

 

微服务架构

- 将每个微服务打包为一个独立的容器,使用 Kubernetes 或 Docker Compose 进行编排。

 

快速搭建测试环境

- 使用 Docker 快速启动数据库、消息队列等依赖服务,方便测试。

 

无状态应用部署

- 将无状态应用(如 Web 服务器)容器化,实现弹性扩展和高可用性。

 

---4.Docker 的最佳实践

- 使用轻量级基础镜像:如 `alpine`,减少镜像大小。

- 多阶段构建:在构建过程中减少最终镜像的大小。

- 避免使用 `latest` 标签:明确指定镜像版本,避免意外更新。

- 限制容器资源:使用 `--memory` 和 `--cpus` 参数限制容器的资源使用。

- 日志管理:将容器日志输出到标准输出或文件,方便集中管理。

- 安全性:定期更新镜像,避免使用 root 用户运行容器。

 

原文地址:https://blog.csdn.net/2501_90888019/article/details/146340840
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/595811.html

相关文章:

  • Github 2025-03-21Java开源项目日报Top9
  • 【Linux 维测专栏 2 -- Deadlock detection介绍】
  • 解决 C 盘空间不足,免费软件高效清理
  • 初级:控制流程面试题精讲
  • 《实战指南:基于Linux环境部署与应用Milvus向量数据库》
  • (四)---四元数的基础知识-(定义)-(乘法)-(逆)-(退化到二维复平面)
  • C++学习之QT中HTTP正则表达式
  • 从OSI七层网络模型角度了解CAN通信协议
  • Android HAL服务注册与获取服务
  • php 批量把数组中的日期时间转为时间戳
  • OpenGL ES ->乒乓缓冲,计算只用两个帧缓冲对象(Frame Buffer Object)+叠加多个滤镜作用后的Bitmap
  • 算法2--两数相加
  • 系统思考—啤酒游戏经营决策沙盘模拟
  • selenium在实际的项目测试过程中的运用
  • Linux信号:一场内核与用户空间的暗战
  • PyCharm 使用指南:从安装到高效开发
  • EtherCAT转profinet网关集成汽车变速箱制造生产线自动化升级
  • HTTP代理IP技术详解及在Web开发中的应用
  • Excel(函数进阶篇):FILTER函数全解读、XLOOKUP函数全解读、UNIQUE函数、数组与数组公式
  • 【区块链】跨链技术详解