使用Docker Compose管理多个容器
使用Docker Compose管理多个容器
Docker Compose是一个用来定义和运行复杂应用的Docker工具。使用Compose,你可以在一个文件中定义一个多容器应用,然后使用一条命令来启动你的应用,完成一切准备工作。
- github.com/docker/compose
一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose,不再需要使用shell脚本来启动容器。在配置文件中,所有的容器通过services
来定义,然后使用docker-compose
脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器。完整的命令列表如下:
build
构建或重建服务
help
命令帮助
kill
杀掉容器
logs
显示容器的输出内容
port
打印绑定的开放端口
ps
显示容器
pull
拉取服务镜像
restart
重启服务
rm
删除停止的容器
run
运行一个一次性命令
scale
设置服务的容器数目
start
开启服务
stop
停止服务
up
创建并启动容器
参考 https://docs.docker.com/compose/install/ 。你能运行Compose在OSX和64位Linux。当前不支持Windows操作系统。
安装Docker Compose
curl -L https://github.com/docker/compose/releases/download/1.4.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose chmod x /usr/local/bin/docker-compose
配置文件
1.Compose的配置文件是docker-compose.yml
。让我们看看下面这个文件:
mysqldb:image: [classroom.example.com:5000/]mysqlenvironment:MYSQL_DATABASE: sampleMYSQL_USER: mysqlMYSQL_PASSWORD: mysqlMYSQL_ROOT_PASSWORD: supersecretmywildfly:image: [classroom.example.com:5000|arungupta]/wildfly-mysql-javaee7links:- mysqldb:dbports:- 8080
这个文件在 https://raw.githubusercontent. ... dees/ ,它表明:
- a. 定义了两个服务分别叫做
mysqldb
和mywildfy
- b. 使用
image
定义每个服务的镜像名 - c. MySQL容器的环境变量定义在
environment
- d. MySQL容器使用
links
和WildFly容器链接 - e. 使用
ports
实现端口转发
启动服务
1.如果你从互联网运行,将docker-compose-internet.yml
保存为docker-compose.yml
。
2.如果你使用教师给的镜像,将docker-compose-instructor.yml
保存为docker-compose.yml
。
3.使用下面的命令,所有的服务将使用后台模式被启动
docker-compose up -d
显示的输出如下:
Creating attendees_mysqldb_1... Creating attendees_mywildfly_1...
使用-f
指定代替的compose文件。
使用-p
指定代替compose文件所在的目录。
4.验证启动的服务
docker-compose psName Command State Ports attendees_mysqldb_1 /entrypoint.sh mysqld Up 3306/tcp attendees_mywildfly_1 /opt/jboss/wildfly/customi ... Up 0.0.0.0:32773->8080/tcp
这里提供了一个整合的列表显示所有启动的服务和容器。
同时,通常使用docker ps
命令来验证应用的容器,和在Docker主机上运行的其他容器。
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3598e545bd2f arungupta/wildfly-mysql-javaee7:latest "/opt/jboss/wildfly/ 59 seconds ago Up 58 seconds 0.0.0.0:32773->8080/tcp attendees_mywildfly_1 b8cf6a3d518b mysql:latest "/entrypoint.sh mysq 2 minutes ago Up 2 minutes 3306/tcp attendees_mysqldb_1
5.查询服务日志
taching to attendees_mywildfly_1, attendees_mysqldb_1 mywildfly_1 | => Starting WildFly server mywildfly_1 | => Waiting for the server to boot mywildfly_1 | =========================================================== mywildfly_1 | mywildfly_1 | JBoss Bootstrap Environment mywildfly_1 | mywildfly_1 | JBOSS_HOME: /opt/jboss/wildfly mywildfly_1 | mywildfly_1 | JAVA: /usr/lib/jvm/java/bin/java mywildfly_1 | mywildfly_1 | JAVA_OPTS: -server -Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true mywildfly_1 | . . . mywildfly_1 | 15:40:20,866 INFO [org.jboss.resteasy.spi.ResteasyDeployment] (MSC service thread 1-2) Deploying javax.ws.rs.core.Application: class org.javaee7.samples.employees.MyApplication mywildfly_1 | 15:40:20,914 INFO [org.wildfly.extension.undertow] (MSC service thread 1-2) JBAS017534: Registered web context: /employees mywildfly_1 | 15:40:21,032 INFO [org.jboss.as.server] (ServerService Thread Pool -- 28) JBAS018559: Deployed "employees.war" (runtime-name : "employees.war") mywildfly_1 | 15:40:21,077 INFO [org.jboss.as] (Controller Boot Thread) JBAS015961: Http management interface listening on http://127.0.0.1:9990/management mywildfly_1 | 15:40:21,077 INFO [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://127.0.0.1:9990 mywildfly_1 | 15:40:21,077 INFO [org.jboss.as] (Controller Boot Thread) JBAS015874: WildFly 8.2.0.Final "Tweek" started in 9572ms - Started 280 of 334 services (92 services are lazy, passive or on-demand) mysqldb_1 | Running mysql_install_db mysqldb_1 | 2015-06-05 15:38:31 0 [Note] /usr/sbin/mysqld (mysqld 5.6.25) starting as process 27 ... mysqldb_1 | 2015-06-05 15:38:31 27 [Note] InnoDB: Using atomics to ref count buffer pool pages . . . mysqldb_1 | 2015-06-05 15:38:40 1 [Note] Event Scheduler: Loaded 0 events mysqldb_1 | 2015-06-05 15:38:40 1 [Note] mysqld: ready for connections. mysqldb_1 | Version: '5.6.25' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL) mysqldb_1 | 2015-06-05 15:40:18 1 [Warning] IP address '172.17.0.24' could not be resolved: Name or service not known
验证应用
1.通过 http://dockerhost:32773/employ ... yees/ 访问应用。在浏览器里显示如下:
使用
docker-compose ps
命令显示端口
扩展服务
你能像这样扩展服务:
docker-compose scale mywildfly=4 Creating and starting 2... done Creating and starting 3... done Creating and starting 4... done
检查日志:
docker-compose logs
检查运行的实例:
docker-compose ps
Name Command State Ports
rafael_mysqldb_1 /entrypoint.sh mysqld Up 3306/tcp
rafael_mywildfly_1 /opt/jboss/wildfly/customi ... Up 0.0.0.0:32773->8080/tcp
rafael_mywildfly_2 /opt/jboss/wildfly/customi ... Up 0.0.0.0:32777->8080/tcp
rafael_mywildfly_3 /opt/jboss/wildfly/customi ... Up 0.0.0.0:32780->8080/tcp
rafael_mywildfly_4 /opt/jboss/wildfly/customi ... Up 0.0.0.0:32781->8080/tcp
你也能减少运行的实例数目:
docker-compose scale mywildfly=2 Stopping rafael_mywildfly_3... done Stopping rafael_mywildfly_4... done Removing rafael_mywildfly_3... done Removing rafael_mywildfly_4... done
停止服务
停止服务:
docker-compose stop Stopping attendees_mywildfly_1... Stopping attendees_mywildfly_2... Stopping attendees_mysqldb_1...
警告:再次停止和启动将会得到如下错误:
wildfly_1 |wildfly_1 | 09:11:07,802 ERROR [org.jboss.as.controller.management-operation] (management-handler-thread - 4) JBAS014613: Operation ("add") failed - address: ([wildfly_1 | ("subsystem" => "datasources"),wildfly_1 | ("jdbc-driver" => "mysql")wildfly_1 | ]) - failure description: "JBAS014803: Duplicate resource [wildfly_1 | (\"subsystem\" => \"datasources\"),wildfly_1 | (\"jdbc-driver\" => \"mysql\")wildfly_1 | ]"这是因为JDBC资源在每个运行的容器中创建,在实际情况下,这是已经写在配置中的。
原文链接:Multiple Containers Using Docker Compose
使用Docker Compose管理多个容器相关推荐
- Docker Compose部署项目到容器-基于Tomcat和mysql的项目yml配置文件代码
场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- Docker Compose部署项目到容器-基于Tomcat和mysql的商城项目(附源码和sql下载)
场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- Docker 三剑客之 Docker Compose
Docker Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排,开源地址:https://github.com/docker/compose Dock ...
- Docker compose多容器管理
前言 Docker Compose 将所管理的容器分为三层,工程(project),服务(service)以及容器(contaienr). Docker Compose 运行的目录下的所有文件(doc ...
- Docker三剑客之Docker compose多容器管理(nginx+haproxy实现负载均衡)
1.前言 Docker Compose 将所管理的容器分为三层,工程(project),服务(service)以及容器(contaienr) Docker Compose 运行的目录下的所有文件(do ...
- Docker容器化实战第七课 容器编排Docker Compose、Docker Swarm 和 Kubernetes
19 如何使用 Docker Compoe 解决开发环境的依赖? 前两个模块,我们从 Docker 的基本操作到 Docker 的实现原理,为你一步一步揭开了 Docker 神秘的面纱.然而目前为止, ...
- Docker Compose 容器编排基础使用
Compose 是用于定义和运行多容器 Docker 应用程序的工具.通过 Compose,可以使用 YML 文件来配置应用程序需要的所有服务.然后,使用一个命令,就可以从 YML 文件配置中创建并启 ...
- docker compose部署服务
1 用docker compose部署服务 - 需求:假如现在我们手里有很多容器,每个容器对应每个服务,有nginx容器,redis容器,mysql容器等.现在我们需要批量化的去管理,批量启动,停止, ...
- Docker Compose部署GitLab服务,搭建自己的代码托管平台(图文教程)
场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
最新文章
- R聚类(整群)抽样(Cluster Sampling)
- vivado中ILA核的使用
- linux终端xwindow,如何从命令行重新启动X Window Server?
- 友盟分享成功之后没有提示信息的解决
- 妙趣横生算法 3:寻找相同元素的指针
- freertos源码详解与应用开发 pdf_互联网企业面试必问Spring源码?搞定Spring源码,看完这篇就够了...
- [BZOJ3583]杰杰的女性朋友(矩阵快速幂)
- 【操作系统】Semaphore处理生产者-消费者问题
- easypoi 列合并_SpringBoot整合EasyPOI实现Excel、Word的导入导出功能
- 从0搭建一个用户成长体系,你需要知道的都在这了
- HikariCP不断打印WARN日志Failed to validate connection com.mysql.jdbc.JDBC4Connection@xxxxx (...) Possibly
- 图像处理自学(六):图像增强算法总结
- 这一代绝非低智商——读《低智商社会@大前研一》
- 三只松鼠商品评论分析
- 机器学习 数据挖掘 统计学 深度学习
- 智能手机和PC降温,英伟达英特尔等把钱砸向了AI
- 计算机中分页符号是什么,电脑word文档中分页符如何插入
- liunx基础及系统移植
- C++实现1.交换两个整形变量的内容.2.不创建临时变量的条件下,交换两个数的内容.3.求是个整数中的最大值.4.将三个数按从大到小输出.5.求两个数的最大公约数.
- 凯立德2018android零售版,凯立德2018冬季版C-CAR车机零售版懒人包C1204-C7P08-3J21J24
热门文章
- IE9 新功能 五大新特点
- 企业类库 add access 2007
- 五个免费UML建模工具推荐
- magento: configurable 显示所有属性及获取 Json Config how to get Json Config by product id
- LInux:有关I/O重定向的详细教程
- magento图片处理 Customize Magento’s Image Resize Functionality
- JS 获取链接(url)参数以及锚链接(anchor)结合富ajax的应用(ajax前进/后退的问题)...
- 循环依赖 三级缓存解决
- 作业 winform 备份原始积分派送五百分
- 客户端的效果 ktv 1216