docker公司在2015年收购fig项目,而在早期fig项目是非常热度的,这比kubermetes要早,fig之所以收到欢迎就是因为,fig提出了容器编排,并且在一定范围解决了"容器编排"

fig被收购后改名为compose,随即成为docker公司最受欢迎的第二大受欢迎的项目,直到今天仍然被很多人使用。

docker-compose.yml通过使用updown命令启动和停止,并且可以使用docker-compose定义应用程序且可以控制多容器应用程序。

Compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,你可以使用Compose文件来配置应用程序的服务。然后,使用单个命令,你可以从配置中创建并启动所有服务。-  docker在Github上地址

与docker命令的相似之处#

docker-compose CLI命令是类似于于docker的命令,除了一些与多个容器和image的指令相关的附加内容。特别是,如果你将它们与docker一起使用的时候,以下命令是需要熟悉的:

在我发布的十大Docker命令中了解更多关于这些的信息。

docker-compose up and down#

  --rmi type  
  ```
  > 删除images。 类型必须是以下之一:
  > 'all':删除任何服务使用的所有images。
  > 'local':仅删除没有`image`字段设置的自定义标记的images。
  ```
  -v, --volumes  

删除在Compose文件的volumes部分中声明的命名卷和附加到容器的匿名卷,匿名卷发生在dockerfile中,我们可以在之外,覆盖匿名卷

--remove-orphans   

删除未在Compose文件中定义的服务的容器

创建一个Dockerfile#

就像运行docker一样,你需要一个Dockerfile来指定如何为程序创建镜像和容器。Ruby on Rails应用程序的Dockerfile示例可以是:

  FROM ruby:2.3.3
  RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
  RUN mkdir /myapp
  WORKDIR /myapp
  COPY Gemfile /myapp/Gemfile
  COPY Gemfile.lock /myapp/Gemfile.lock
  RUN bundle install
  volumes /datalinuxea
  COPY . /myapp

docker-compose:入门指南让你一步一步的指示,创建Dockerfile并将其集成到你的docker-compose.yml。

如上: volumes /datalinuxea就是匿名卷

docker-compose.yml:的结构和组件#

要定义多容器应用程序,请在项目的根目录中使用docker-compose.yml文件。该docker-compose文档提供详细的解释和指导,了解此文档更好的掌握。以下是一些主要功能的快速入门指南:

在顶部包括版本: version: "3"

在docker-compose版本中,是有一定的差异,这需要使用者查探问题,如早期的v3弃用volumes_from

然后 services:

在此之后,列出要创建的容器,例如每个容器都有配置选项。

  image: ruby:alpine

倘若此刻,运行一个LNMP,那么我们首先应该让mariadb 先启动,而后是php,再nginx,depends_on则对这些启动的依赖顺序起到关键的作用。如下所示中,web是以来db和redis,只有db和redis 成功up起来后才会启动web

  version: '3'
  services:
    web:
      build: .
      depends_on:
        - db
        - redis
    redis:
      image: redis
    db:
      image: postgres
  environment:
    RACK_ENV: development
    SHOW: 'true'
    SESSION_SECRET:
  environment:
    - RACK_ENV=development
    - SHOW=true
    - SESSION_SECRET
  version: "3.2"
  services:
    web:
      image: nginx:alpine
      volumes:
        - type: volume
          source: mydata
          target: /data
          volume:
            nocopy: true
        - type: bind
          source: ./static
          target: /opt/app/static
    db:
      image: postgres:latest
      volumes:
        - "/var/run/postgres/postgres.sock:/var/run/postgres/postgres.sock"
        - "dbdata:/var/lib/postgresql/data"
  ports:
   - "3000"
   - "3000-3005"
   - "8000:8000"
   - "9090-9091:8080-8081"
   - "49100:22"
   - "127.0.0.1:8001:8001"
   - "127.0.0.1:5000-5010:5000-5010"
   - "6060:6060/udp" 

有关端口的更多信息,请查看linuxea:简单解释docker的端口和端口暴露(EXPOSE)

了解更多#

Docker Compose是运行多容器应用程序的强大工具。有许多方法可以配置你的应用程序docker-compose.yml以及其他Docker Compose CLI命令来学习。查看Docker文档和我的其他帖子了解更多信息。

阅读更多docker文章#

学习更多#

学习如何使用Docker CLI命令,Dockerfile命令,使用Bash命令可以帮助你更有效地使用Docker应用程序。查看Docker文档和我的其他帖子以了解更多信息。