docker学习(三)之服务编排compose

1、服务编排

微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,维护的工作量会很大。

  • 要从dockerfile build image或者取dockerhub拉取image
  • 要创建多个container
  • 要管理这些container(启动停止删除)

服务编排:按照一定的业务规则批量管理容器

2、Docker Compose

Docker Compose是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包含服务构建,启动和停止。使用步骤:
1、利用dockerfiled定义运行环境镜像
2、使用docker-compose.yml定义组成应用的各服务
3、运行docker-compose up启动应用

3、Docker compose安装和使用

1、安装Docker Compose
compose目前已完全支持linux,mac os和windows,在我们安装compose之前,需要先安装Docker,下面我们以编译好的二进制包方式安装在linux系统中。

[root@docker ~]# sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   638  100   638    0     0    408      0  0:00:01  0:00:01 --:--:--   409
100 10.3M  100 10.3M    0     0  32047      0  0:05:38  0:05:38 --:--:-- 30079

[root@docker ~]# chmod +x /usr/local/bin/docker-compose

4、卸载docker compose

rm /usr/local/bin/docker-compose

5、docker compose编排实际应用

这里使用tomcat做个简单网页,然后通过nginx做反向代理的编排实验。

  1. 创建docker-compose目录
[root@docker ~]# mkdir docker-compose
[root@docker ~]# cd docker-compose/
  1. 编写docker-compose.yml文件
[root@docker docker-compose]# cat docker-compose.yml
version: '3'    
services:
 nginx:
  image: nginx
  ports:
   - 80:80
  links:
   - hello
  volumes:
   - ./nginx/conf.d:/etc/nginx/conf.d
 hello:
  image: tomcat
  expose:
   - "8080"
  volumes:
   - /root/tomcat:/usr/local/tomcat/webapps```

 3. 创建./nginx/conf.d目录

```powershell
[root@docker docker-compose]# mkdir -p ./nginx/conf.d

  1. 在./nginx/conf.d目录下编写hello.conf文件
[root@docker conf.d]# cat hello.conf
server {
        listen 80;
        access_log off;

        location / {
                proxy_pass http://hello:8080;
        }
}

5.在~/docker-compose目录下使用docker-compose启动容器

[root@docker docker-compose]# docker-compose up
Creating docker-compose_hello_1 ... done
Creating docker-compose_nginx_1 ... done
Attaching to docker-compose_hello_1, docker-compose_nginx_1
hello_1  | 17-Apr-2020 11:43:14.099 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name:   Apache Tomcat/8.5.54
hello_1  | 17-Apr-2020 11:43:14.105 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Apr 3 2020 14:06:10 UTC
hello_1  | 17-Apr-2020 11:43:14.106 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 8.5.54.0
hello_1  | 17-Apr-2020 11:43:14.106 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
hello_1  | 17-Apr-2020 11:43:14.106 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            4.19.25-200.1.el7.bclinux.x86_64
hello_1  | 17-Apr-2020 11:43:14.106 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
hello_1  | 17-Apr-2020 11:43:14.106 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /usr/local/openjdk-8/jre
hello_1  | 17-Apr-2020 11:43:14.106 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           1.8.0_242-b08
hello_1  | 17-Apr-2020 11:43:14.106 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
hello_1  | 17-Apr-2020 11:43:14.106 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /usr/local/tomcat
hello_1  | 17-Apr-2020 11:43:14.106 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /usr/local/tomcat
hello_1  | 17-Apr-2020 11:43:14.107 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties
hello_1  | 17-Apr-2020 11:43:14.107 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
hello_1  | 17-Apr-2020 11:43:14.107 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
hello_1  | 17-Apr-2020 11:43:14.107 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
hello_1  | 17-Apr-2020 11:43:14.107 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
hello_1  | 17-Apr-2020 11:43:14.107 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
hello_1  | 17-Apr-2020 11:43:14.107 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/tomcat
hello_1  | 17-Apr-2020 11:43:14.107 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/tomcat
hello_1  | 17-Apr-2020 11:43:14.107 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
hello_1  | 17-Apr-2020 11:43:14.107 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded APR based Apache Tomcat Native library [1.2.23] using APR version [1.6.5].
hello_1  | 17-Apr-2020 11:43:14.108 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
hello_1  | 17-Apr-2020 11:43:14.108 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
hello_1  | 17-Apr-2020 11:43:14.114 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 1.1.1d  10 Sep 2019]
hello_1  | 17-Apr-2020 11:43:14.234 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
hello_1  | 17-Apr-2020 11:43:14.250 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
hello_1  | 17-Apr-2020 11:43:14.280 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 765 ms
hello_1  | 17-Apr-2020 11:43:14.321 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
hello_1  | 17-Apr-2020 11:43:14.321 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.54
hello_1  | 17-Apr-2020 11:43:14.339 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/test]
hello_1  | 17-Apr-2020 11:43:14.664 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/test] has finished in [324] ms
hello_1  | 17-Apr-2020 11:43:14.670 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
hello_1  | 17-Apr-2020 11:43:14.683 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 402 ms

  1. 验证
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值