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做反向代理的编排实验。
- 创建docker-compose目录
[root@docker ~]# mkdir docker-compose
[root@docker ~]# cd docker-compose/
- 编写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
- 在./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
- 验证