docker-compose
Docker-Compose简介
Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排, 并且提供了 scale (服务扩容) 的功能。
成都创新互联公司主要从事成都网站制作、网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务岷县,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
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 推送服务镜像
新闻名称:docker-compose
分享网址:http://hbruida.cn/article/ieoede.html