首页 > 网络 > 其他 >

docker-compose-jinguanhua-51CTO博客

2019-12-07

Docker-Compose简介Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排, 并且提供了 scale (服务扩容) 的功能。Docker-Compose将所管理的容器分为三层,分别是工程(project),

Docker-Compose简介

    Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排, 并且提供了 scale (服务扩容) 的功能。

    Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像,参数,依赖。一个服务当中可包括多个容器实例,Docker-Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡。

    Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。

    使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。在工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个Web项目,除了Web服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。

    Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

    Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API,就可以在其上利用Compose来进行编排管理。

    假如,你有一个java镜像,一个mysql镜像,一个nginx镜像。如果没有docker-compose,那么每次启动的时候,你需要敲各个容器的启动参数,环境变量,容器命名,指定不同容器的链接参数等等一系列的操作,相当繁琐。而用了docker-composer之后,你就可以把这些命令一次性写在docker-composer.yml文件中,以后每次启动这一整个环境(含3个容器)的时候,你只要敲一个docker-composer up命令就ok了。

    先简单理解 docker 的使用过程,它分为镜像构建与容器启动。

      镜像构建:即创建一个镜像,它包含安装运行所需的环境、程序代码等。这个创建过程就是使用 dockerfile 来完成的。

      容器启动:容器最终运行起来是通过拉取构建好的镜像,通过一系列运行指令(如端口映射、外部数据挂载、环境变量等)来启动服务的。针对单个容器,这可以通过 docker run 来运行。

      而如果涉及多个容器的运行(如服务编排)就可以通过docker-compose来实现,它可以轻松的将多个容器作为 service 来运行(当然也可仅运行其中的某个),并且提供了 scale (服务扩容) 的功能。

      简单总结:

      dockerfile: 构建镜像;

      docker run: 启动容器;

      docker-compose: 启动服务;

      安装

      推荐官方安装

      curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

      chmod +x /usr/local/bin/docker-compose

      [root@rancher ~]# docker-compose -v

      docker-compose version 1.24.1, build 4667896b

      卸载

      如果是二进制包方式安装的,删除二进制文件即可:

      sudo rm /usr/local/bin/docker-compose

      如果通过Python pip工具安装的,则执行如下命令删除:

      sudo pip uninstall docker-compose

      常用命令

      -f,–file FILE指定Compose模板文件,默认为docker-compose.yml,可以多次指定。

      -p, 指定docker-compose的项目目录,也就是docker-compose.yml文件的存储目录

      -v,–version打印版本并退出

      docker-compose ps? ? ? 显示所有容器

      docker-compose up?-d nginx? ?构建并在后台启动nginx容器,不加nginx,启动所有服务,下面的等同。

      docker-compose run? ? 允许为你的应用程序运行一次性命令

      docker-compose start?nginx? ?启动nginx容器

      docker-compose restart?nginx? ?重启nginx容器 (注意是编排文件中的service)

      docker-compose stop? nginx? 停止nginx容器

      docker-compose pause nginx? ? 暂停nginx容器

      docker-compose unpause nginx? ? 恢复nginx容器

      docker-compose kill nginx? ? 强制停止nginx容器

      docker-compose rm nginx? ? 删除nginx容器(删除前必须关闭容器)

      docker-compose exec nginx bash????????????登录到nginx容器中

      docker-compose down -v? ?停止并删除容器、网络、映像和卷,-v(--volumes)删除容器的数据卷

      docker-compose logs -f? --tail 50 nginx? ? 查看nginx的实时日志,只看最后50行。

      docker-compose events --json nginx? ? ? 以json的形式输出nginx的docker日志

      docker-compose config??-q? ? 验证(docker-compose.yml)文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息。

      docker-compose build nginx? ? ? ? 构建镜像

      docker-compose build --no-cache nginx???不带缓存的构建。

      docker-compose scale??? ?设置服务的容器数量

      docker-compose pull?? ? 拉取服务镜像

      docker-compose push? ? 推送服务镜像

相关文章
最新文章
热点推荐