面试 · 2024年6月7日 0

Docker和Docker Compose基础

Docker 基础概念

1. 什么是Docker?

Docker是一个开源的平台,用于开发、运输和运行应用程序。它通过使用容器来打包应用程序及其依赖环境,使应用程序能够在任何平台上以一致的方式运行。

2. Docker的核心组件

  • Docker Engine:Docker的核心,包括守护进程(daemon)、REST API和CLI(命令行界面)。
  • 镜像(Image):一个只读的模板,包含创建容器的指令。
  • 容器(Container):镜像的一个可运行实例。容器是独立的运行环境,包含应用程序及其依赖。
  • Dockerfile:定义镜像的构建过程的文件,包含一系列指令。
  • Docker Hub:Docker的公共注册表,用于存储和分发镜像。

3. Docker的基本命令

  • docker run:运行一个新容器。
  • docker ps:列出当前正在运行的容器。
  • docker build:从Dockerfile构建镜像。
  • docker pull:从注册表中拉取镜像。
  • docker push:将镜像推送到注册表。
  • docker stop:停止一个运行中的容器。
  • docker rm:删除一个容器。
  • docker rmi:删除一个镜像。

Docker Compose 基础概念

1. 什么是Docker Compose?

Docker Compose是一个用于定义和运行多容器Docker应用的工具。通过使用YAML文件来配置应用中的服务,并用一个命令来启动和停止这些服务。

2. Docker Compose的核心组件

  • docker-compose.yml:Docker Compose的配置文件,定义了应用的服务、网络和卷。
  • 服务(Services):应用中的独立组件,每个服务通常对应一个容器。
  • 网络(Networks):定义服务之间的网络通信。
  • 卷(Volumes):用于持久化数据。

3. Docker Compose的基本命令

  • docker-compose up:启动配置文件中定义的所有服务。
  • docker-compose down:停止并移除所有服务。
  • docker-compose build:构建或重新构建服务。
  • docker-compose ps:列出所有服务的状态。
  • docker-compose logs:查看服务的日志。
  • docker-compose exec:在运行的容器中执行命令。

实践示例

Docker 示例

  • 创建一个简单的Dockerfile
# 使用官方的Python基础镜像
FROM python:3.8-slim

# 设置工作目录
WORKDIR /app

# 复制当前目录内容到工作目录
COPY . /app

# 安装依赖
RUN pip install -r requirements.txt

# 运行应用程序
CMD ["python", "app.py"]

  • 构建镜像docker build -t my-python-app .
  • 运行容器docker run -d -p 5000:5000 my-python-app

Docker Compose 示例

  • 创建docker-compose.yml
version: '3.7'

services:
  web:
    image: my-python-app
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"
  • 启动服务docker-compose up
  • 停止服务docker-compose down