首页 > 其他分享 >容器之docker compose

容器之docker compose

时间:2024-07-09 16:30:16浏览次数:18  
标签:容器 Compose 服务 compose services docker Docker

Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。通过一个 YAML 文件,您可以配置应用程序需要的所有服务,并使用单个命令来创建和启动这些服务。以下是对 Docker Compose 的详细介绍:

核心概念

服务(Services)

服务是一个运行容器的抽象。每个服务都运行一个镜像,并且可以包含对容器的配置选项,如端口映射、环境变量、卷挂载等。

网络(Networks)

Compose 中的服务默认会连接到一个默认网络,但您可以自定义网络配置,以便控制不同服务之间的通信方式。

卷(Volumes)

卷用于持久化服务生成的数据。它们允许您在容器重新启动时保留数据,并在多个容器之间共享数据。

安装 Docker Compose

在 Linux 系统上,可以通过以下命令安装 Docker Compose:

sudo curl -L "https://github.com/docker/compose/releases/download/v2.0.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

在 macOS 和 Windows 上,Docker Desktop 包含了 Docker Compose,无需单独安装。

基本用法

1. 创建 docker-compose.yml 文件

以下是一个简单的 docker-compose.yml 文件示例:

version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
  database:
    image: postgres:latest
    environment:
      POSTGRES_PASSWORD: example

2. 启动服务

在包含 docker-compose.yml 文件的目录中运行以下命令:

docker-compose up

这将启动定义的所有服务。使用 -d 选项可以在后台运行:

docker-compose up -d

3. 停止和删除服务

停止服务:

docker-compose stop

删除服务:

docker-compose down

4. 检查服务状态

查看正在运行的服务:

docker-compose ps

5. 重新启动服务

docker-compose restart

常用配置选项

build

指定 Dockerfile 所在的目录,允许在启动容器时构建镜像。

services:
  web:
    build: .

volumes

挂载卷到容器中,允许数据持久化或共享数据。

services:
  web:
    volumes:
      - ./data:/var/www/html

environment

设置环境变量。

services:
  web:
    environment:
      - DEBUG=true

depends_on

定义服务之间的依赖关系,确保某些服务在其他服务之前启动。

services:
  web:
    depends_on:
      - database

高级用法

多个 Compose 文件

您可以使用多个 Compose 文件来覆盖或扩展默认配置。例如:

docker-compose -f docker-compose.yml -f docker-compose.override.yml up

环境变量文件

使用 .env 文件来定义环境变量,Compose 会自动加载这些变量。

DB_PASSWORD=supersecret

docker-compose.yml 文件中使用:

services:
  database:
    environment:
      - POSTGRES_PASSWORD=${DB_PASSWORD}

扩展和覆盖

Compose 文件可以通过继承和扩展其他文件来实现复杂的配置管理。

version: '3.8'
services:
  web:
    extends:
      file: common.yml
      service: webapp

实战示例

以下是一个实际应用中的 Docker Compose 配置示例,包含一个 Web 应用和一个数据库服务:

version: '3.8'

services:
  app:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/app
    environment:
      - NODE_ENV=development

  database:
    image: postgres:latest
    ports:
      - "5432:5432"
    environment:
      POSTGRES_DB: mydb
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
    volumes:
      - db_data:/var/lib/postgresql/data

volumes:
  db_data:

以上配置启动了一个 Node.js 应用和一个 PostgreSQL 数据库,并使用卷来持久化数据库数据。

通过 Docker Compose,您可以方便地定义和管理多容器应用程序,简化了开发、测试和部署的流程。

标签:容器,Compose,服务,compose,services,docker,Docker
From: https://blog.csdn.net/youziguo/article/details/140187774

相关文章

  • Docker logs命令详解
    一、常用命令可以查看命令用法dockerlogs--help2.查看日志更多详情dockerlogs--detailsredis跟踪日志输出(–follow,-f)dockerlogs--followredisdockerlogs-fredis显示自时间戳以来的日志(–since)日期格式需要看下dockerlogs--help给出的样式d......
  • docker-compose创建haproxy教程
    本文主要讲解通过docker-compose创建haproxy并进行代理一、haproxy简介HAProxy是一款基于事件驱动、单进程模型设计的四层与七层负载均衡器,它能够在TCP/UDP层面以及HTTP(S)等应用层协议上实现高效的流量分发。HAProxy不仅适用于Web服务器负载均衡,还能应用于数据库、邮件服务器......
  • docker 设置日志大小限制
    docker设置日志大小限制防止docker运行时使用df-h时候查看占用会将固态硬盘占用满overlay占用比较高检查overlay占用高的方法:每次创建一个容器时,都会有一些文件和目录被创建,例如:/var/lib/docker/containers/ID目录,如果容器使用了默认的日志模式,他的所有日志都会以JSON形......
  • K8S学习教程(三):在PetaExpress KubeSphere 容器部署 Wiki 系统 wiki.js 并启用中文全
      背景wiki.js是非常优秀的开源Wiki系统,尽管在与xwiki功能相比,还不算完善,但也在不断进步。常用的功能还是比较实用的,如:Wiki写作、分享、权限管理功能还是非常实用的,UI设计非常的漂亮,精美的界面和直观的操作体验,能够满足小团队的基本知识管理需求。认真阅读......
  • nvidia docker Cannot load libnvcuvid.so.1
    问题使用docker对runtime进行封装,程序需要用到GPU且在host正常运行,在容器内则报错:Cannotloadlibnvcuvid.so.1[hevc_cuvid@0x559da3fbd80]Failedloadingnvcuvid.terminatecalledafterthrowinganinstanceof'std::runtime_error'what():failedtoopenavcod......
  • Docker日志批量清理
    转发:原文:https://blog.csdn.net/u013737132/article/details/134639909Docker容器日志查看查看所有容器数据大小并按倒序排列:du-d1-h/var/lib/docker/containers|sort-rhdu:用于估算文件或目录空间使用量。-d1:仅显示深度为1的目录,即只显示直接子目录的信息。......
  • docker安装mysql8.0.23
    拉取镜像dockerpullmysql:8.0.23创建挂载文件mkdir-p/home/docker/mysql/confmkdir-p/home/docker/mysql/datamkdir-p/home/docker/mysql/logcd/home/docker/mysql/conftouchmy.cnf编辑my.cnfvimy.cnf内容如下:default-character-set=utf8[mysql]defa......
  • Ubuntu安装docker
    1、首先查看内核以及架构详细信息命令uname-aPS:安装的是较新版本的ubuntu22.04.2的可以省略(我安装的就是这个版本) 2、安装软件之前的尽可能下意识执行的三个命令sudoapt-getupdatesudoapt-getupgradesudoapt-getfull-upgrade 3、添加Docker库1)安装必要的证书......
  • CSS3伸缩盒模型之伸缩容器和伸缩项目、主轴、侧轴
    一、伸缩容器和伸缩项目 伸缩容器:设置了display:flex的元素,就是伸缩容器。  1.给元素设置:display:flex或display:inline-flex,该元素就变为了伸缩容器。  2.display:inline-flex很少使用,因为可以给多个伸缩容器的父容器,也设置为伸缩容器。  3.一个元......
  • docker基础
    Docker原理和概念镜像:类似于c++中的类,创建出一种具有独特属性的类容器:类似于c++中的实例化的对象仓库:储存镜像的地方,可以订阅别人创好的镜像,也可以上传自己的对象使用Client-Server架构模式,DockerClient和DockerDaemon之间,通过Socket或者RESTfulAPI进行通信安装配置......