【docker compose入门指南】安装与常用命令参数全解析,助你入门compose!

在现代应用开发和部署中,Docker已经成为不可或缺的工具。而 Docker Compose 作为Docker生态系统中的重要组成部分,能够帮助我们轻松管理和运行多容器应用程序。本文将详细介绍 Docker Compose 的安装方法、常用命令及其参数,帮助你快速上手并高效使用Docker Compose。

1. Docker Compose 简介

Docker Compose 主要是用于定义和运行多容器 Docker 应用程序。通过一个 docker-compose.yml 文件,你可以配置应用程序的服务、网络以及数据卷等,并使用一条命令启动所有服务。无论是开发、测试还是生产环境,Docker Compose 都能显著简化多容器应用的管理。

2. Docker Compose 离线安装

2.1 下载安装包

GitHub 下载地址:https://github.com/docker/compose/tags

如果下载缓慢,可以复制链接地址到迅雷进行下载,这样会快很多。

链接地址:https://github.com/docker/compose/releases/download/v2.33.1/docker-compose-linux-x86_64

2.2 移动文件并赋予执行权限

mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
chmod a+x /usr/local/bin/docker-compose

示例:

[root@node3 tool]# mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
[root@node3 tool]# chmod a+x /usr/local/bin/docker-compose
[root@node3 tool]#

2.3 验证安装

docker-compose -v

示例:

[root@node3 tool]# docker-compose -v
Docker Compose version v2.33.1
[root@node3 tool]#

3. Docker Compose 常用命令

3.1 docker-compose up

作用:启动服务

命令格式

docker-compose up [选项]

常用参数

  • -d:后台运行
  • --build:启动前重新构建镜像
  • --force-recreate:强制重新创建容器

示例

docker-compose up -d

3.2 docker-compose down

作用:停止并删除服务

命令格式

docker-compose down [选项]

常用参数

  • -v:删除数据卷
  • --rmi all:删除所有镜像

示例

  1. 停止并移除容器、网络
docker-compose down
  1. 停止并移除容器、网络、卷以及镜像
docker-compose down -v --rmi all
  1. 移除构建的本地镜像
docker-compose down --rmi local

3.3 docker-compose restart

作用:重启服务

示例

docker-compose restart

3.4 docker-compose ps

作用:查看服务状态

示例:

docker-compose ps

3.5 docker-compose logs

作用:查看服务日志

命令格式

docker-compose logs [选项]

常用参数

  • -f:实时查看日志
  • --tail n:查看最后 n 行日志

示例

  1. 查看服务日志
docker-compose logs
  1. 查看特定服务日志
docker-compose logs web
  1. 查看特定服务最后50行日志
docker-compose logs --tail 50 web

3.6 docker-compose build

作用:构建镜像

命令格式

docker-compose build [选项]

常用参数

  • --no-cache:不使用缓存构建镜像

示例

docker-compose build

3.7 docker-compose exec

作用:在运行的容器中执行命令

示例

docker-compose exec web bash

3.8 docker-compose pull

作用:拉取服务所需的镜像

示例:

docker-compose pull

3.9 docker-compose config

作用:验证 docker-compose.yml 文件的语法

示例

docker-compose config

3.10 docker-compose rm

作用:删除已停止的 Compose 应用

命令格式

docker-compose rm [选项] [服务]

常用参数

  • -f:指定使用的 Compose 配置文件,默认配置文件 docker-compose.yml
  • -v:删除容器同时删除由 docker-compose.yml 文件定义的数据卷
  • -a:删除所有服务容器
  • --rmi type:删除镜像,删除构建镜像时产生的中间镜像和构建缓存(type 包括 all(删除所有镜像)、local(只删除本地镜像)、built(只删除通过 docker-compose 构建的镜像))

示例

  1. 删除所有停止的容器
docker-compose rm
  1. 删除所有容器
docker-compose rm -a
  1. 删除容器和卷
docker-compose rm -v
  1. 使用指定的 Compose 配置文件
docker-compose -f test-compose.yml rm
  1. 删除镜像
docker-compose rm --rmi local

4. docker-compose.yml 配置详解

docker-compose.yml 文件是 Docker Compose 的核心配置文件,用于定义和运行多容器应用程序。通过这个文件,可以配置服务、网络、卷等资源。

4.1 基本结构

docker-compose.yml 文件采用 YAML 格式,通常包含:

version: '3'  # 指定 Docker Compose 文件版本
services:     # 定义服务
  service1:   # 服务名称
    # 服务配置
  service2:
    # 服务配置
    ...
networks:     # 定义网络
  network1:
    # 网络配置
    ...
volumes:      # 定义卷
  volume1:
    # 卷配置
    ...

4.2 服务配置

4.2.1 image

作用:指定服务使用的镜像

示例

web:
  image: nginx:latest
4.2.2 build

作用:指定构建镜像的 Dockerfile 路径

示例:

web:
  build: ./app
4.2.3 ports

作用:映射容器端口到主机端口

示例:

web:
  ports:
    - "80:80"
    - "3306:3306"
4.2.4 volumes

作用:挂载主机目录或卷到容器

示例:

web:
  volumes:
    - ./html:/usr/share/nginx/html
    - db_data:/usr/local/mysql
4.2.5 environment

作用:设置环境变量

示例:

db:
  environment:
    MYSQL_ROOT_PASSWORD: root
    MYSQL_DATABASE: mysqldb
4.2.6 networks

作用:指定服务使用的网络

示例:

web:
  networks:
    - frontend
db:
  networks:
    - backend
4.2.7 healthcheck

作用:定义健康检查

示例:

web:
  healthcheck:
    test: ["CMD", "curl", "-f", "http://localhost"]
    interval: 10s
    timeout: 10s
    retries: 5
4.2.8 restart

作用:设置容器重启策略

可选值

  • no:不重启(默认)
  • always:总是重启
  • on-failure:失败时重启
  • unless-stopped:除非手动停止,否则总是重启

示例:

web:
  restart: always

4.3 网络配置

4.3.1 自定义网络

作用:定义自定义网络

示例

networks:
  frontend:
    driver: bridge
  backend:
    driver: bridge
4.3.2 使用外部网络

作用:使用已存在的外部网络

示例

networks:
  default:
    external:
      name: localnetwork

4.4 卷配置

4.4.1 自定义卷

作用:定义自定义卷

示例

volumes:
  db_data:
    driver: local
4.4.2 使用外部卷

作用:使用已存在的外部卷

示例

volumes:
  db_data:
    external: true
    name: localvolume

4.5 示例

version: '3'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
    networks:
      - frontend
    depends_on:
      - db
    restart: always
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost"]
      interval: 10s
      timeout: 10s
      retries: 5

  db:
    image: mysql:5.7.43
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: mysqldb
    volumes:
      - db_data:/usr/local/mysql
    networks:
      - backend

networks:
  frontend:
    driver: bridge
  backend:
    driver: bridge

volumes:
  db_data:
    driver: local

5. 总结

Docker Compose 是一个强大的工具,可以轻松管理多容器应用程序。通过掌握其基本用法,可以高效地管理和部署多容器应用程序!

你可能感兴趣的:(#,容器技术深度解析与实践,docker,compose,容器)