Docker编排容器

使用Fig的Docker Orchestration展示了如何使用Fig定义和控制多容器服务。从那时起,Fig被重命名为Docker Compose或简称Compose。

最近宣布了Compose的第一个版本:

github.com/docker/compose

Compose是用于使用Docker定义和运行复杂应用程序的工具。 使用Compose,您可以在一个文件中定义一个多容器应用程序,然后在一个命令中旋转应用程序,该命令完成了运行该应用程序所需的一切。

Docker Compose使用与其他Docker命令和工具相同的API。

techtip77-docker-compose

该技术提示将使用Fig博客重写Docker Orchestration,以使用Docker Compose。 换句话说,它将显示如何运行使用MySQL和WildFly部署的Java EE 7应用程序。

让我们开始吧!

安装Docker Compose

将Compose安装为:

curl -L https://github.com/docker/compose/releases/download/1.1.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Docker撰写配置文件

Compose的入口点是docker-compose.yml 。 首先, fig.yml docker-compose工具还可以识别fig.yml文件名,但显示以下消息:

fig.yml is deprecated and will not be supported in future. Please rename your config file to docker-compose.yml

如果目录中同时提供了fig.ymlfig.yml docker-compose.yml则会显示以下消息:

Found multiple config files with supported names: docker-compose.yml, fig.yml
Using docker-compose.yml

使用上一个博客中的相同配置文件,然后重命名为docker-compose.yml

mysqldb:
  image: mysql:latest
  environment:
    MYSQL_DATABASE: sample
    MYSQL_USER: mysql
    MYSQL_PASSWORD: mysql
    MYSQL_ROOT_PASSWORD: supersecret
mywildfly:
  image: arungupta/wildfly-mysql-javaee7
  links:
    - mysqldb:db
  ports:
    - 8080:8080

此基于YML的配置文件具有:

  1. 由名称“ mysqldb”和“ mywildfly”定义的两个容器
  2. 图像名称使用“图像”定义
  3. MySQL容器的环境变量在“环境”中定义
  4. MySQL容器通过“链接”与WildFly容器链接
  5. 使用“端口”实现端口转发

启动,验证,停止Docker容器

  1. 可以通过以下命令以分离模式启动所有容器:
    docker-compose up -d

    并将输出显示为:

    Creating wildflymysqljavaee7_mysqldb_1...
    Creating wildflymysqljavaee7_mywildfly_1...
  2. 验证容器为:
    docker-compose ps
                 Name                            Command               State                Ports               
    -------------------------------------------------------------------------------------------
    wildflymysqljavaee7_mysqldb_1     /entrypoint.sh mysqld --da ...   Up      3306/tcp                         
    wildflymysqljavaee7_mywildfly_1   /opt/jboss/wildfly/customi ...   Up      0.0.0.0:8080->8080/tcp, 9990/tcp
  3. 容器的日志可以视为:
    docker-compose logs

    并将输出显示为:

    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 | 18:43:38,449 INFO  [stdout] (ServerService Thread Pool -- 50) Hibernate: INSERT INTO EMPLOYEE_SCHEMA(ID, NAME) VALUES (6, 'Raj')
    mywildfly_1 | 18:43:38,452 INFO  [stdout] (ServerService Thread Pool -- 50) Hibernate: INSERT INTO EMPLOYEE_SCHEMA(ID, NAME) VALUES (7, 'Howard')
    mywildfly_1 | 18:43:38,455 INFO  [stdout] (ServerService Thread Pool -- 50) Hibernate: INSERT INTO EMPLOYEE_SCHEMA(ID, NAME) VALUES (8, 'Priya')
    mywildfly_1 | 18:43:39,714 INFO  [org.jboss.resteasy.spi.ResteasyDeployment] (MSC service thread 1-9) Deploying javax.ws.rs.core.Application: class org.javaee7.samples.employees.MyApplication
    mywildfly_1 | 18:43:39,751 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-9) JBAS017534: Registered web context: /employees
    mywildfly_1 | 18:43:39,805 INFO  [org.jboss.as.server] (ServerService Thread Pool -- 28) JBAS018559: Deployed "employees.war" (runtime-name : "employees.war")
    mywildfly_1 | 18:43:39,828 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015961: Http management interface listening on http://127.0.0.1:9990/management
    mywildfly_1 | 18:43:39,828 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://127.0.0.1:9990
    mywildfly_1 | 18:43:39,829 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015874: WildFly 8.2.0.Final "Tweek" started in 8393ms - Started 280 of 334 services (92 services are lazy, passive or on-demand)
  4. 查找主机的IP地址,如下所示:
    boot2docker ip

    并以以下方式访问该应用程序:

    curl http://192.168.59.103:8080/employees/resources/employees/

    要将输出视为:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?><collection><employee><id>1</id><name>Penny</name></employee><employee><id>2</id><name>Sheldon</name></employee><employee><id>3</id><name>Amy</name></employee><employee><id>4</id><name>Leonard</name></employee><employee><id>5</id><name>Bernadette</name></employee><employee><id>6</id><name>Raj</name></employee><employee><id>7</id><name>Howard</name></employee><employee><id>8</id><name>Priya</name></employee></collection>

    或在浏览器中为:

    techtip77-浏览器输出

  5. 将容器停止为:
    docker-compose stop

    看到的输出为:

    Stopping wildflymysqljavaee7_mywildfly_1...
    Stopping wildflymysqljavaee7_mysqldb_1...

Docker撰写命令

可以通过键入docker-compose查看Docker Compose命令的完整列表,并将输出显示为:

velopment environments using Docker.

Usage:
  docker-compose [options] [COMMAND] [ARGS...]
  docker-compose -h|--help

Options:
  --verbose                 Show more output
  --version                 Print version and exit
  -f, --file FILE           Specify an alternate compose file (default: docker-compose.yml)
  -p, --project-name NAME   Specify an alternate project name (default: directory name)

Commands:
  build     Build or rebuild services
  help      Get help on a command
  kill      Kill containers
  logs      View output from containers
  port      Print the public port for a port binding
  ps        List containers
  pull      Pulls service images
  rm        Remove stopped containers
  run       Run a one-off command
  scale     Set number of containers for a service
  start     Start services
  stop      Stop services
  restart   Restart services
  up        Create and start containers

随后的博客可能会使用scale命令。

通过在命令名称后键入-h来显示每个命令的帮助。 例如,运行命令的帮助显示为:

docker-compose run -h
Run a one-off command on a service.

For example:

    $ docker-compose run web python manage.py shell

By default, linked services will be started, unless they are already
running. If you do not want to start linked services, use
`docker-compose run --no-deps SERVICE COMMAND [ARGS...]`.

Usage: run [options] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]

Options:
    --allow-insecure-ssl  Allow insecure connections to the docker
                          registry
    -d                    Detached mode: Run container in the background, print
                          new container name.
    --entrypoint CMD      Override the entrypoint of the image.
    -e KEY=VAL            Set an environment variable (can be used multiple times)
    --no-deps             Don't start linked services.
    --rm                  Remove container after run. Ignored in detached mode.
    --service-ports       Run command with the service's ports enabled and mapped
                          to the host.
    -T                    Disable pseudo-tty allocation. By default `docker-compose run`
                          allocates a TTY.

请享用!

翻译自: https://www.javacodegeeks.com/2015/03/docker-compose-to-orchestrate-containers.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值