You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							131 lines
						
					
					
						
							4.2 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							131 lines
						
					
					
						
							4.2 KiB
						
					
					
				| [appendix] | |
| = Docker Compose | |
| 
 | |
| Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。 | |
| 使用 Dockerfile 我们很容易定义一个单独的应用容器。 | |
| 然而在日常开发工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。 | |
| 例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器; | |
| 再比如在分布式应用一般包含若干个服务,每个服务一般都会部署多个实例。 | |
| 如果每个服务都要手动启停,那么效率之低、维护量之大可想而知。 | |
| 这时候就需要一个工具能够管理一组相关联的的应用容器,这就是 Docker Compose。 | |
| 
 | |
| Compose有2个重要的概念: | |
| 
 | |
| * 项目(Project): 由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。 | |
| * 服务(Service): 一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。 | |
| 
 | |
| == 模版文件 | |
| 模板文件是使用 Compose 的核心, 涉及到的指令关键字也比较多, 默认的模板文件名称为 docker-compose.yml,格式为 YAML 格式。 | |
| 
 | |
| [source,bash] | |
| ---- | |
| version: '3' | |
| services: | |
|   elasticsearch: | |
|     image: elasticsearch:6.8.5 | |
|     container_name: elasticsearch | |
|     restart: always | |
|     depends_on: | |
|       - db | |
|       - redis | |
|     volumes: | |
|       - /app/skywalking/elasticsearch/data:/usr/share/elasticsearch/data:rw | |
|       - /app/skywalking/elasticsearch/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml | |
|       - /app/skywalking/elasticsearch/conf/jvm.options:/usr/share/elasticsearch/config/jvm.options | |
|       - /app/skywalking/elasticsearch/logs:/usr/share/elasticsearch/logs:rw | |
|     environment: | |
|       - TZ=Asia/Shanghai | |
|       - xpack.monitoring.enabled=false | |
|       - xpack.watcher.enabled=false | |
|     ports: | |
|       - "9200:9200" | |
|       - "9300:9300" | |
| 
 | |
|     ulimits: | |
|       nproc: 65535 | |
|         nofile: | |
|           soft: 20000 | |
|           hard: 40000 | |
| ---- | |
| 
 | |
| == 常用命令 | |
| === 列出 Compose 文件中包含的镜像 | |
| [source,bash] | |
| ---- | |
| # 列出 Compose 文件中包含的镜像 | |
| docker-compose -f docker-compose.yml images | |
| ---- | |
| 
 | |
| === 列出项目中目前的所有容器 | |
| [source,bash] | |
| ---- | |
| # 列出项目中目前的所有容器 | |
| docker-compose -f docker-compose.yml ps | |
| ---- | |
| 
 | |
| === 构建(重新构建)项目中的服务容器 | |
| [source,bash] | |
| ---- | |
| # 构建(重新构建)项目中的服务容器 | |
| # 一般搭配自定义镜像, 比如编写的 Dockfile, 功能类似于 docker build | |
| docker-compose -f docker-compose.yml build | |
| ---- | |
| 
 | |
| === up | |
| [source,bash] | |
| ---- | |
| # 构建(重新构建)项目中的服务容器 | |
| # 一般搭配自定义镜像, 比如编写的 Dockfile, 功能类似于 docker build | |
| # 参数说明: | |
| #     -d 在后台运行服务容器, 默认前台运行,控制台将会同时打印所有容器的输出信息,可以很方便进行调试 | |
| #     --no-color 不使用颜色来区分不同的服务的控制台输出 | |
| #     --no-deps 不启动服务所链接的容器 | |
| #     --force-recreate 强制重新创建容器,不能与 --no-recreate 同时使用 | |
| #     --no-recreate 如果容器已经存在了,则不重新创建,不能与 --force-recreate 同时使用,默认先停止容器,然后重新创建 | |
| #     --no-build 不自动构建缺失的服务镜像 | |
| #     -t, --timeout TIMEOUT 停止容器时候的超时(默认为 10 秒) | |
| docker-compose -f docker-compose.yml up | |
| ---- | |
| 
 | |
| === down | |
| [source,bash] | |
| ---- | |
| # 停止用up命令所启动的容器并移除网络 | |
| docker-compose -f docker-compose.yml down | |
| ---- | |
| 
 | |
| === stop | |
| [source,bash] | |
| ---- | |
| # 停止已经处于运行状态的容器,但不删除它 | |
| # 停止所有服务 | |
| docker-compose -f docker-compose.yml stop | |
| 
 | |
| # 停止指定的名为 xxx 的服务 | |
| docker-compose -f docker-compose.yml stop xxx | |
| ---- | |
| 
 | |
| === restart | |
| ---- | |
| # 重启项目中的服务 | |
| docker-compose -f docker-compose.yml restart | |
| ---- | |
| 
 | |
| === logs | |
| ---- | |
| # 查看服务容器的输出 | |
| # 默认情况下, docker-compose 将对不同的服务输出使用不同的颜色来区分, 可以通过 --no-color 来关闭颜色 | |
| 
 | |
| # 查看整体的日志 | |
| docker-compose -f docker-compose.yml logs | |
| 
 | |
| # 查看名为 xxx 的服务的日志 | |
| docker-compose -f docker-compose.yml logs xxx | |
| ---- | |
| 
 | |
| === rm | |
| ---- | |
| # 移除容器 | |
| docker-compose -f docker-compose.yml rm | |
| ---- | |
| 
 | |
| 
 |