Docker小记-Docker Compose

命令

  • Compose描述完整的环境以及服务组件的交互。一个Compose文件可能会描述四到五个单独的服务,它们都是相互关联的,但应保持隔离和独立伸伸缩。
  • 启动:进入创建docker-compose.yml文件的目录并运行以下的命令:
docker-compose up
  • 查看日志(想只看到一个或多个服务,就给出那些服务的命名)
docker-compose logs
  • 列出当前目录下yml文件定义的所有容器
docker-compose ps
  • 清理环境
docker-compose stop 
docker-compose rm -vf

会删除所有的服务或者一个由环境定义的特定服务。一个小的区别是,-f 选项并不强迫删除正在运行的容器,相反,它会关闭用户确认阶段。-v选项清理卷

  • 重新构建环境:当你执行这个命令后,它将停止当前并删除运行的容器,接着创建新的容器,并重新附着前代环境挂载的数据卷,
docker-compose up -d
  • 重建一个或所有服务(想只重建一个或多个服务,就给出那些服务的命名)
docker-compose build
  • 拉取环境中不存在的镜像
docker-compose pull

构建、启动和重新构建服务

  • 当Compose启动任何特定的服务时,它将启动所有其依赖的服务。
  • 当你使用一个未经限定的 docker-compose up 命令时,Compose 将创建或重新创建环境中的每一个服务并启动所有的服务,如果Compose检测到有任何还没构建或者使用了缺失镜像的服务,它会触发一个构建或获取合适的镜像(就像docker run命令)。
  • 如果知道一个运行正确的某个特定服务的依赖关系,你可以不需要依赖关系就可以启动或重新启动一个服务。为此,需要引入flag–no-dep。
docker-compose up --no-dep -d proxy

服务伸缩和删除

  • Compose 能够支持服务的纵向伸缩,当这么做时,Compose 创建了提供该服务的容器的多个副本。这些副本将在你缩小规模时会自动清理
    使用以下的命令扩展api服务:
docker-compose scale api=5
  • 端口号0为主机的临时端口,当你绑定到端口0时,操作系统将在一个预定义范围内选择一个可用的端口

迭代和持久化状态

  • 当服务重新构建时,附加的管理卷不会被删除。相反,它们重新附加到了那个服务更换后的容器上。这意味着可以自由地迭代而不用担心丢失数据
  • docker-compose rm命令和flag-v删除时,管理卷最后也会被清理了。
  • 如果你在 docker-compose.yml 文件中重命名或删除一个服务定义,那么你就失去了使用Compose管理这个服务的能力。重新构建并重启后,新的服务将会工作,而旧服务被孤立。
  • 解决方法是直接使用docker命令清理环境或者回到docker-compose.yml文件中添加孤立的服务定义,用Compose清理。

网络和连接问题

  • Docker构建的镜像是通过创建防火墙规则和注入服务发现信息到所依赖的容器的环境变量和/etc/hosts文件中来建立连接关系
  • 在高度迭代的环境中,用户可能只要重启特定的服务,如果另外一个服务依赖于它的话,这可能会导致一些问题。举例来说,如果启动了Coffee API环境,然后选择性地重启coffee服务,proxy服务将不再能够追溯到它的上游依赖。当容器重新创建或者重新启动后,它们返回的是不同的IP地址。这一变化使得注入proxy服务的信息失效了。
  • 在没有动态服务发现机制的环境中处理这个问题最好的方法是重启整个环境

示例

data:
  image: gliderlabs/alpine
  command: echo Data Container
  user: 999:999
  labels:
    com.dockerinaction.chapter: "11"
    com.dockerinaction.example: "Coffee API"
    com.dockerinaction.role: "Volume Container"

dbstate:
  extends:
    file: docker-compose.yml
    service: data
  volumes:
    - /var/lib/postgresql/data/pgdata

# the postgres image uses gosu to change to the postgres user
db:
  image: postgres
  volumes_from:
    - dbstate
  environment:
    - PGDATA=/var/lib/postgresql/data/pgdata
    - POSTGRES_PASSWORD=development
  labels:
    com.dockerinaction.chapter: "11"
    com.dockerinaction.example: "Coffee API"
    com.dockerinaction.role: "Database"

# the nginx image uses user de-escalation to change to the nginx user
proxy:
  image: nginx
  restart: always
  volumes:
    - ./proxy/app.conf:/etc/nginx/conf.d/app.conf
  ports:
    - "8080:8080"
  links:
    - coffee
  labels:
    com.dockerinaction.chapter: "11"
    com.dockerinaction.example: "Coffee API"
    com.dockerinaction.role: "Load Balancer"

coffee:
  build: ./coffee
  user: 777:777
  restart: always
  expose:
    - 3000
  ports:
    - "0:3000"
  links:
    - db:db
  environment:
    - COFFEEFINDER_DB_URI=postgresql://postgres:development@db:5432/postgres
    - COFFEEFINDER_CONFIG=development
    - SERVICE_NAME=coffee
  labels:
    com.dockerinaction.chapter: "11"
    com.dockerinaction.example: "Coffee API"
    com.dockerinaction.role: "Application Logic"
  • build键的值是用于构建的Dockerfile文件所在位置的目录,你可以使用从YAML文件位置开始的相对路径
  • dockerfile键来提供一个备选的Dockerfile文件的名称。
  • environment键可以为一个服务设置环境变量
  • 容器元数据可以设置为以 labels 为键,
  • expose键接受容器端口的一个列表,这些端口应该根据防火墙规则公开。
  • ports键按照与docker run命令中-p选项一样的格式接受描述了端口映射关系的字符串列表。
  • links命令按照与docker run命令中flag --link一样的格式接受和定义了链接的列表。
  • proxy服务使用一个卷来绑定挂载一个本地的配置文件到Nginx的动态配置位置,这是一个简单的注入配置而不用构建一个完整的新镜像。
  • db服务使用volumes from键来列出那些定义了必需卷的服务,
  • 服务扩展:必须指定文件和被扩展的服务名称,相关的键是extends以及内嵌的file和service。服务扩展工作类似于 Dockerfile 构建的方式。首先构建原型容器,然后提交。子容器是一个由新生成的层构建的新容器。就像Dockerfile构建,这些子容器继承了父容器所有的属性,包括元数据。

相关链接

### 回答1: Active Directory服务是种由微软公司开发的网络服务,它提供了种集中管理和控制网络资源的方式。它可以在中集中管理用户、计算机、应用程序和其他网络资源,从而提高了网络的安全性和可管理性。Active Directory服务还提供了些高级功能,如单点登录、组策略管理和名系统(DNS)集成等,使得网络管理员可以更加轻松地管理和维护网络。 ### 回答2: Active Directory服务(Active Directory Domain Services,简称AD DS)是微软公司的项用于管理和组织网络资源的目录服务。它是种基于LDAP(轻量级目录访问协议)的目录服务,可以让用户和管理员方便地管理和访问网络中的资源。 AD DS的主要功能包括用户身份认证、访问控制、组管理和资源管理等。通过AD DS,管理员可以集中管理和配置用户和计算机的访问权限,确保系统安全。同时,AD DS还提供了的集中管理功能,管理员可以通过控制器管理中的所有对象,并在中实施策略。 AD DS还支持单点登录功能,用户只需在登录到之后,即可自动访问到所属中的资源,而无需再次输入用户名和密码。这大大提高了用户的工作效率。 此外,AD DS还支持多架构,可以通过建立信任关系实现跨资源的访问和管理。管理员可以维护多个之间的信任关系,实现用户和资源的统管理。 总而言之,AD DS是种强大的目录服务,可以实现用户和资源的集中管理和访问控制,提高网络系统的稳定性和安全性。它是企业网络管理的重要组成部分,为企业提供了高效的身份认证和资源管理功能,增强了企业的生产力和安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值