目录搜索
ComposeAbout versions and upgrading (Compose)ASP.NET Core + SQL Server on Linux (Compose)CLI environment variables (Compose)Command-line completion (Compose)Compose(组成)Compose command-line reference(组合命令行参考)Control startup order (Compose)Django and PostgreSQL (Compose)Docker stacks and distributed application bundles (Compose)docker-compose build(docker-compose构建)docker-compose bundledocker-compose configdocker-compose createdocker-compose downdocker-compose eventsdocker-compose execdocker-compose helpdocker-compose imagesdocker-compose killdocker-compose logsdocker-compose pausedocker-compose portdocker-compose psdocker-compose pulldocker-compose pushdocker-compose restartdocker-compose rmdocker-compose rundocker-compose scaledocker-compose startdocker-compose stopdocker-compose topdocker-compose unpausedocker-compose upEnvironment file (Compose)Environment variables in ComposeExtend services in ComposeFrequently asked questions (Compose)Getting started (Compose)Install ComposeLink environment variables (deprecated) (Compose)Networking in ComposeOverview of Docker ComposeOverview of docker-compose CLIQuickstart: Compose and WordPressRails and PostgreSQL (Compose)Sample apps with ComposeUsing Compose in productionUsing Compose with SwarmEngine.NET Core application (Engine)About images, containers, and storage drivers (Engine)Add nodes to the swarm (Engine)Apply custom metadata (Engine)Apply rolling updates (Engine)apt-cacher-ngBest practices for writing Dockerfiles (Engine)Binaries (Engine)Bind container ports to the host (Engine)Breaking changes (Engine)Build your own bridge (Engine)Configure container DNS (Engine)Configure container DNS in user-defined networks (Engine)CouchDB (Engine)Create a base image (Engine)Create a swarm (Engine)Customize the docker0 bridge (Engine)Debian (Engine)Default bridge networkDelete the service (Engine)Deploy a service (Engine)Deploy services to a swarm (Engine)Deprecated Engine featuresDocker container networking (Engine)Docker overview (Engine)Docker run reference (Engine)Dockerfile reference (Engine)Dockerize an applicationDrain a node (Engine)EngineFAQ (Engine)Fedora (Engine)Get started (Engine)Get started with macvlan network driver (Engine)Get started with multi-host networking (Engine)How nodes work (Engine)How services work (Engine)Image management (Engine)Inspect the service (Engine)Install Docker (Engine)IPv6 with Docker (Engine)Join nodes to a swarm (Engine)Legacy container links (Engine)Lock your swarm (Engine)Manage nodes in a swarm (Engine)Manage sensitive data with Docker secrets (Engine)Manage swarm security with PKI (Engine)Manage swarm service networks (Engine)Migrate to Engine 1.10Optional Linux post-installation steps (Engine)Overview (Engine)PostgreSQL (Engine)Raft consensus in swarm mode (Engine)Riak (Engine)Run Docker Engine in swarm modeScale the service (Engine)SDKs (Engine)Select a storage driver (Engine)Set up for the tutorial (Engine)SSHd (Engine)Storage driver overview (Engine)Store service configuration data (Engine)Swarm administration guide (Engine)Swarm mode key concepts (Engine)Swarm mode overlay network security model (Engine)Swarm mode overview (Engine)Understand container communication (Engine)Use multi-stage builds (Engine)Use swarm mode routing mesh (Engine)Use the AUFS storage driver (Engine)Use the Btrfs storage driver (Engine)Use the Device mapper storage driver (Engine)Use the OverlayFS storage driver (Engine)Use the VFS storage driver (Engine)Use the ZFS storage driver (Engine)Engine: Admin GuideAmazon CloudWatch logs logging driver (Engine)Bind mounts (Engine)Collect Docker metrics with Prometheus (Engine)Configuring and running Docker (Engine)Configuring logging drivers (Engine)Control and configure Docker with systemd (Engine)ETW logging driver (Engine)Fluentd logging driver (Engine)Format command and log output (Engine)Google Cloud logging driver (Engine)Graylog Extended Format (GELF) logging driver (Engine)Journald logging driver (Engine)JSON File logging driver (Engine)Keep containers alive during daemon downtime (Engine)Limit a container's resources (Engine)Link via an ambassador container (Engine)Log tags for logging driver (Engine)Logentries logging driver (Engine)PowerShell DSC usage (Engine)Prune unused Docker objects (Engine)Run multiple services in a container (Engine)Runtime metrics (Engine)Splunk logging driver (Engine)Start containers automatically (Engine)Storage overview (Engine)Syslog logging driver (Engine)tmpfs mountsTroubleshoot volume problems (Engine)Use a logging driver plugin (Engine)Using Ansible (Engine)Using Chef (Engine)Using Puppet (Engine)View a container's logs (Engine)Volumes (Engine)Engine: CLIDaemon CLI reference (dockerd) (Engine)dockerdocker attachdocker builddocker checkpointdocker checkpoint createdocker checkpoint lsdocker checkpoint rmdocker commitdocker configdocker config createdocker config inspectdocker config lsdocker config rmdocker containerdocker container attachdocker container commitdocker container cpdocker container createdocker container diffdocker container execdocker container exportdocker container inspectdocker container killdocker container logsdocker container lsdocker container pausedocker container portdocker container prunedocker container renamedocker container restartdocker container rmdocker container rundocker container startdocker container statsdocker container stopdocker container topdocker container unpausedocker container updatedocker container waitdocker cpdocker createdocker deploydocker diffdocker eventsdocker execdocker exportdocker historydocker imagedocker image builddocker image historydocker image importdocker image inspectdocker image loaddocker image lsdocker image prunedocker image pulldocker image pushdocker image rmdocker image savedocker image tagdocker imagesdocker importdocker infodocker inspectdocker killdocker loaddocker logindocker logoutdocker logsdocker networkdocker network connectdocker network createdocker network disconnectdocker network inspectdocker network lsdocker network prunedocker network rmdocker nodedocker node demotedocker node inspectdocker node lsdocker node promotedocker node psdocker node rmdocker node updatedocker pausedocker plugindocker plugin createdocker plugin disabledocker plugin enabledocker plugin inspectdocker plugin installdocker plugin lsdocker plugin pushdocker plugin rmdocker plugin setdocker plugin upgradedocker portdocker psdocker pulldocker pushdocker renamedocker restartdocker rmdocker rmidocker rundocker savedocker searchdocker secretdocker secret createdocker secret inspectdocker secret lsdocker secret rmdocker servicedocker service createdocker service inspectdocker service logsdocker service lsdocker service psdocker service rmdocker service scaledocker service updatedocker stackdocker stack deploydocker stack lsdocker stack psdocker stack rmdocker stack servicesdocker startdocker statsdocker stopdocker swarmdocker swarm cadocker swarm initdocker swarm joindocker swarm join-tokendocker swarm leavedocker swarm unlockdocker swarm unlock-keydocker swarm updatedocker systemdocker system dfdocker system eventsdocker system infodocker system prunedocker tagdocker topdocker unpausedocker updatedocker versiondocker volumedocker volume createdocker volume inspectdocker volume lsdocker volume prunedocker volume rmdocker waitUse the Docker command line (Engine)Engine: ExtendAccess authorization plugin (Engine)Docker log driver pluginsDocker network driver plugins (Engine)Extending Engine with pluginsManaged plugin system (Engine)Plugin configuration (Engine)Plugins API (Engine)Volume plugins (Engine)Engine: SecurityAppArmor security profiles for Docker (Engine)Automation with content trust (Engine)Content trust in Docker (Engine)Delegations for content trust (Engine)Deploying Notary (Engine)Docker security (Engine)Docker security non-events (Engine)Isolate containers with a user namespace (Engine)Manage keys for content trust (Engine)Play in a content trust sandbox (Engine)Protect the Docker daemon socket (Engine)Seccomp security profiles for Docker (Engine)Secure EngineUse trusted imagesUsing certificates for repository client verification (Engine)Engine: TutorialsEngine tutorialsNetwork containers (Engine)Get StartedPart 1: OrientationPart 2: ContainersPart 3: ServicesPart 4: SwarmsPart 5: StacksPart 6: Deploy your appMachineAmazon Web Services (Machine)Digital Ocean (Machine)docker-machine activedocker-machine configdocker-machine createdocker-machine envdocker-machine helpdocker-machine inspectdocker-machine ipdocker-machine killdocker-machine lsdocker-machine provisiondocker-machine regenerate-certsdocker-machine restartdocker-machine rmdocker-machine scpdocker-machine sshdocker-machine startdocker-machine statusdocker-machine stopdocker-machine upgradedocker-machine urlDriver options and operating system defaults (Machine)Drivers overview (Machine)Exoscale (Machine)Generic (Machine)Get started with a local VM (Machine)Google Compute Engine (Machine)IBM Softlayer (Machine)Install MachineMachineMachine CLI overviewMachine command-line completionMachine concepts and helpMachine overviewMicrosoft Azure (Machine)Microsoft Hyper-V (Machine)Migrate from Boot2Docker to MachineOpenStack (Machine)Oracle VirtualBox (Machine)Provision AWS EC2 instances (Machine)Provision Digital Ocean Droplets (Machine)Provision hosts in the cloud (Machine)Rackspace (Machine)VMware Fusion (Machine)VMware vCloud Air (Machine)VMware vSphere (Machine)NotaryClient configuration (Notary)Common Server and signer configurations (Notary)Getting started with NotaryNotary changelogNotary configuration filesRunning a Notary serviceServer configuration (Notary)Signer configuration (Notary)Understand the service architecture (Notary)Use the Notary client
文字

Looking for Compose file reference? Find the latest version here.

Compose是定义和运行多容器Docker应用程序的工具。使用Compose,您可以使用Compose文件来配置应用程序的服务。然后,使用单个命令创建并启动配置中的所有服务。要详细了解Compose的所有功能,请参阅功能列表。

Compose非常适合开发,测试和分段环境以及CI工作流程。您可以了解有关常见使用案例中每个案例的更多信息。

使用Compose基本上是一个三步过程。

  1. 用一个定义你的应用程序的环境,Dockerfile这样它就可以在任何地方再现。

  2. 定义组成您的应用程序的服务,docker-compose.yml以便它们可以在隔离的环境中一起运行。

  3. 最后,运行docker-compose up和撰写将开始并运行您的整个应用程序。

docker-compose.yml看起来像这样:

version: '3'services:
  web:
    build: .
    ports:    - "5000:5000"
    volumes:    - .:/code    - logvolume01:/var/log
    links:    - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

有关撰写文件的更多信息,请参阅撰写文件参考。

Compose具有管理应用程序整个生命周期的命令:

  • 开始,停止并重建服务

  • 查看正在运行的服务的状态

  • 流式传输运行服务的日志输出

  • 在服务上运行一次性命令

撰写文件

  • 安装Compose

  • 入门

  • 开始使用Django

  • 开始使用Rails

  • 开始使用WordPress

  • 经常问的问题

  • 命令行参考

  • 撰写文件参考

特征

使其有效的Compose功能包括:

  • 单个主机上有多个独立的环境

  • 创建容器时保留卷数据

  • 只重新创建已更改的容器

  • 变量并在环境之间移动合成

单个主机上有多个独立的环境

撰写使用项目名称来隔离彼此的环境。您可以在多个不同的环境中使用此项目名称:

  • 在开发主机上创建单个环境的多个副本(例如,您希望为项目的每个功能分支运行稳定副本)

  • 在CI服务器上,为了避免构建互相干扰,可以将项目名称设置为唯一的内部版本号

  • 在共享主机或开发主机上,以防止可能使用相同服务名称的不同项目相互干扰

默认项目名称是项目目录的基本名称。您可以使用-p命令行选项或COMPOSE_PROJECT_NAME环境变量设置自定义项目名称。

创建容器时保留卷数据

撰写会保留您的服务使用的所有卷。当docker-compose up运行时,如果发现任何集装箱从之前的运行,它会将从旧容器到新容器的体积。此过程可确保您在卷中创建的任何数据都不会丢失。

如果您docker-compose在Windows机器上使用,请参阅环境变量并根据您的特定需求调整必要的环境变量。

只重新创建已更改的容器

组合缓存用于创建容器的配置。当您重新启动未更改的服务时,Compose将重新使用现有的容器。重复使用容器意味着您可以快速更改环境。

变量并在环境之间移动合成

Compose支持Compose文件中的变量。您可以使用这些变量为不同的环境或不同的用户自定义组合。有关更多详情,请参阅变量替换

您可以使用该extends字段或通过创建多个撰写文件来扩展撰写文件。请参阅延伸了解更多细节。

常见用例

撰写可用于许多不同的方式。下面概述了一些常见用例。

开发环境

在开发软件时,在孤立环境中运行应用程序并与其交互的能力至关重要。Compose命令行工具可用于创建环境并与之交互。

Compose文件提供了一种方式来记录和配置所有应用程序的服务依赖关系(数据库,队列,缓存,Web服务API等)。使用Compose命令行工具,您可以使用单个命令(docker-compose up)为每个依赖项创建和启动一个或多个容器。

总之,这些功能为开发人员开始项目提供了一种便捷方式。撰写可以减少多页“开发人员入门指南”到一个机器可读的Compose文件和一些命令。

自动化测试环境

任何持续部署或持续集成过程的一个重要部分是自动化测试套件。自动化的端到端测试需要一个运行测试的环境。Compose提供了一种创建和销毁测试套件的独立测试环境的便捷方式。通过在Compose文件中定义完整的环境,您可以通过几条命令创建和销毁这些环境:

$ docker-compose up -d
$ ./run_tests
$ docker-compose down

单个主机部署

撰写传统上一直专注于开发和测试工作流程,但每次发布我们都在更多面向生产的功能方面取得进展。您可以使用Compose部署到远程Docker引擎。Docker引擎可以是配备Docker Machine或整个Docker Swarm集群的单个实例。

有关使用面向生产功能的详细信息,请参阅本文档中的制作。

发行说明

要查看过去和当前版本的Docker Compose变更的详细列表,请参阅CHANGELOG。

获得帮助

Docker Compose正在积极开发中。如果您需要帮助,想要贡献,或者只是想与志趣相投的人讨论这个项目,我们有许多开放的沟通渠道。

  • 要报告错误或文件功能请求:请使用Github上的问题跟踪器。

  • 与人们实时交流项目:请加入#docker-composefreenode IRC频道。

  • 要提供代码或文档更改:请在Github上提交请求。

上一篇:下一篇: