使用Docker Compose管理多个容器

分类:虚拟化    发布时间:2018-07-09 17:24:22
Docker Compose是一个用来定义和运行复杂应用的Docker工具。使用Compose,你可以在一个文件中定义一个多容器应用,然后使用一条命令来启动你的应用,完成一切准备工作。
- github.com/docker/compose
一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose,不再需要使用shell脚本来启动容器。在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器。完整的命令列表如下:

build 创建或重建服务

服务被创建后会标记为project_service(比如composetest_db),如果改变了一个服务的Dockerfile或者构建目录的内容,可以使用docker-compose build来重建它

help 命令帮助
kill 杀掉容器
logs 显示容器的输出内容
port 打印绑定的开放端口
ps 显示容器
pull 拉取服务镜像
restart 重启服务
rm 删除停止的容器
run 运行一个一次性命令

scale 设置服务的容器数目

设置为一个服务启动的容器数量,数量是以这样的参数形式指定的:service=num,比如: docker-compose scale web=2 worker=3

start 开启服务
stop 停止服务

up 创建并启动容器,运行docker-compose up -d会在后台启动容器并使它们运行 

默认情况下,如果服务存在容器的话,docker-compose up会停止并再创建它们(使用了volumes-from会保留已挂载的卷),如果不想使容器停止并再创建的话,使用docker-compose up --no-recreate,如果有需要的话,这会启动任何停止的容器


选项
–verbose   显示更多输出
–version    显示版本号并退出
-f,–file FILE    指定一个可选的Compose yaml文件(默认:docker-compose.yml)
-p,–project-name NAME     指定可选的项目名称(默认:当前目录名称)


安装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


编写配置文件(创建项目目录,在目录里创建名为docker-compose.yml的配置文件)

配置文件示例:
1.Compose的配置文件是docker-compose.yml。让我们看看下面这个文件:
mysqldb:
image: [classroom.example.com:5000/]mysql
environment:
MYSQL_DATABASE: sample
MYSQL_USER: mysql
MYSQL_PASSWORD: mysql
MYSQL_ROOT_PASSWORD: supersecret
mywildfly:
image: [classroom.example.com:5000|arungupta]/wildfly-mysql-javaee7
links:
- mysqldb:db
ports:
- 8080

这个文件在 https://raw.githubusercontent. ... dees/ ,它表明:
a. 定义了两个服务分别叫做mysqldb和mywildfy
b. 使用image定义每个服务的镜像名
c. MySQL容器的环境变量定义在environment
d. MySQL容器使用links和WildFly容器链接
e. 使用ports实现端口转发


启动服务
在对应的项目目录里执行下面的命令(否则会报找不到docker-compose.yml),所有的服务将使用后台模式被启动
docker-compose up -d
显示的输出如下:
Creating attendees_mysqldb_1... Creating attendees_mywildfly_1...
或者使用-f指定代替的compose文件。使用-p指定代替compose文件所在的目录。

4.验证启动的服务
docker-compose ps
    Name                                     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 -a命令来验证应用的容器,和在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

检查日志:
docker-compose logs

验证应用

扩展服务
你能像这样扩展服务:
docker-compose scale mywildfly=4
Creating and starting 2... done
Creating and starting 3... done
Creating and starting 4... done

你也能减少运行的实例数目:
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




标签: Docker

阅读(163)┆ 评论(0) ┆ (0) ┆ 返回博客首页


发表我的评论

欢迎您: | 退出登录


文章评论