Docker-Compose介绍
2020.05

Docker-Compose介绍

Compose是 Docker 的服务编排工具,主要用来构建基于Docker的复杂应用Compose 通过一个配置文件来管理多个 -Docker 容器,非常适合组合使用多个容器进行开发的场景。

Compose 中有两个重要的概念:

  • 服务 (service) :一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
  • 项目 (project) :由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。

一个项目可以由多个服务(容器)关联而成,Compose 面向项目进行管理,通过子命令对项目中的一组容器进行便捷地生命周期管理。

  例如,你有一个 php 镜像,一个 redis 镜像,一个nginx镜像。如果没有 docker-compose,那么每次启动的时候,你需要敲各个容器的启动参数,环境变量,容器命名,指定不同容器的链接参数等等一系列的操作,相当繁琐。

而用了 docker-composer之后,你就可以把这些命令一次性写在 docker-composer.yml 文件中,以后每次启动这一整个环境(含3个容器)的时候,你只要敲一个 docker-composer up命令就ok了。

dockerfile的作用是从无到有的构建镜像。它包含安装运行所需的环境、程序代码等。这个创建过程就是使用 dockerfile 来完成的。

Dockerfile -为 docker build 命令准备的,用于建立一个独立的 image ,在 docker-compose 里也可以用来实时 build  

安装compose

https://github.com/docker/compose/releases wget方式下载新的版本

wget https://github.com/docker/compose/releases/download/1.25.5/docker-compose-Linux-x86_64 -O /usr/bin/docker-compose

修改权限

chmod +x /usr/bin/docker-compose

安装完成后可以查看版本:


一般步骤

1、定义Dockerfile,方便迁移到任何地方; 2、编写docker-compose.yml文件; 3、运行docker-compose up启动服务


示例:
准备工作:提前下载好镜像:

>需要新建一个空白目录,在目录新建一个 ```docker-compose.yml```

## compose 模版文件

```dockerfile
version: '3.6' #版本号
services:
	nginx:                   #服务名 
		context: ./dir       #dockerfile所在路径
		dockerfile: Dockerfile-alternate  #指定dockerfile		         
		image: nginx:latest   #镜像
		container_name: docker_container  #是否指定容器名
		volumes:
			- dir:/usr/dir   #指定挂载盘 宿主机路径:容器内路径
        environment:         #指定环境变量
        	 session:123
		args:				 #指定变量
			buildno:1 
		ports:               #端口映射   
			- "8080:80"
		stdin_open:true      #打开标准输入 接受外部输入
		networks:
			nginx-net:
				ipv4_address: 172.0.0.2
		tty:true             #模拟一个伪终端
		command: echo "hello"   #构建时执行命令
		command: [bundle, exec, thin, -p, 3000] #支持数组形式

		depends_on:          #启动依赖的镜像服务
			- db 
        dns:				 #指定启动dns
        	- 8.8.8.8
        extra_hosts:		 #指定额外的 host 名称映射信息
			- "googledns:8.8.8.8"
			- "dockerhub:52.1.157.61"
        privileged: true     #允许拥有特殊权限
		
networks:
  #自定义网络
 	nginx:
		driver: bridge
    	ipam:
      		config:
            	- subnet: "172.16.238.0/24"
  #引用外部预先定义好的网段
 	redis-network:
 	external:
 		name: redis-network
		
		

以上为docker-compose常用配置项目。

常用命令

命令 说明
docker-compose up 启动应用 前台打印日志
docker-compose up -d 服务后台后运行
docker-compose ps 查看状态
docker-compose start [SERVICE…]
docker-compose stop [SERVICE…] 停止服务
docker-compose restart 重新启动服务
docker-compose scale web=3 db=2 将启动 3 个容器运行 web 服务,2 个容器运行 db 服务。

需要可以通过参考官方手册去查看

Share