一、docker-compose介绍
使用一个Dockerfile模板文件可以定义一个单独的应用容器,如果需要定义多个容器就需要服务编排。下面介绍Docker官方产品,Docker Compose。
Dockerfile可以让用户管理一个单独的应用容器,而compose则允许用户在一个模板(yaml格式)中定义一组相关联的应用容器(被称为一个project,即项目)
1、docker-compose基础概念
docker-compose项目是docker官方的开源项目, 负责实现对docker容器集群的快速编排。
docker-compose将所管理的容器分为三层, 分别是工程(project),服务(service)以及容器(containner)
docker-compose运行目录下的所有文件(docker-compose.yml文件、extends文件或环境变量等)组成一个工程,如无特殊指定,工程名即为当前目录名。
- 一个工程当中,可以包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。
- 一个服务中可以包括多个容器实例,docker-compose并没有解决负载均衡的问题。因此需要借助其他工具实现服务发现及负载均衡,比如consul。
- docker-compose的工程配置文件默认为docker-compose.yml。可以通过环境变量COMPOSE_FILE -f 参数自定义配置文件,其自定义多个有依赖关系的服务及每个人服务运行的容器。
二、YAML文件格式及编写
示例yaml文件
1 version: "3" # 版本号,目前使用3 2 services: # 定义服务 3 rms-rcs: # 服务名称,目前是后端服务 4 image: rms-rcs:v1.0.0 # 镜像名称及tag 5 container_name: rms-rcs # 定义容器名称 6 networks: # 选择网络,为了容器之间通讯 7 - "tester" 8 irsp_client: 9 image: irsp_client:v1.0.0 10 container_name: irsp_client 11 networks: 12 - "tester" 13 irweb: 14 image: irweb:v1.0.0 15 container_name: irweb 16 ports: 17 - "80:80" 18 networks: 19 - "tester" 20 networks: # docker创建网络 21 tester: # 新建网络名称 22 driver: bridge # 网络类型,例如:桥接
三、Docker Compose 配置常用字段
字段 | 描述 |
build | 指定Dockerfile文件名(要指定的Dockerfile文件需要在build标签的子级标签中用dockefile标签指定) |
dockerfile | 构建镜像上下文路径 |
context | 可以是dockerfile路径,或者时执行git仓库的url地址 |
images | 指定镜像(已存在) |
command | 执行命令,会覆盖容器启动后默认执行的命令(会覆盖dockefile中的CMD指令) |
container_name | 指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale指定容器数量。 |
deploy | 指定部署和运行服务相关配置,只能在swarm模式使用 |
environment | 添加环境变量 |
networks | 加入网络,引用顶级networks下条目 |
network-mode | 设置容器的网络模式 |
ports | 暴露容器端口,与-p相同,但是端口不能低于60 |
volumes | 挂载一个宿主机目录或命令卷到容器,命令卷要在顶级volumes定义卷名称 |
volumes_from | 从另一个服务或容器挂载卷,可选参数:ro和rw(仅版本‘2’支持) |
hostname | 在容器内设置内核参数 |
links | 连接诶到另一个容器,- 服务名称[ : ] |
privileged | 用来给容器root权限,注意是不安全的,true |
2、Docker-compose常用命令
运行这些命令需要结合docker-compose一起使用。
且必须要在含有docker-compose.yml文件的目录中才可以使用,不然报错。如果文件名称不是默认名称,可以使用-f参数。
命令 | 描述 |
---|---|
build | 重新构建服务 |
ps | 列出容器 |
up | 创建和启动容器 |
exec | 在容器里面执行命令 |
scale | 指定一个服务容器启动数量 |
top | 显示正在运行的容器进程 |
logs | 查看服务容器的输出 |
down | 删除容器、网络、数据卷和镜像 |
stop/start/restart | 停止/启动/重启服务 |
四、docker-compose安装
docker-compose是docker的独立产品,因此需要安装docker之后再单独安装docker compose。
github访问太慢,没有工具(那种工具)
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
使用国内的即可
然后找到下载位置给添加可执行权限:
cd /user/local/bin
chmod 777 docker-compose # 777给最大权限,如果是生产环境,那就酌情给权限4 2 1,自己算着给
下一节,关于docker network实现容器内部通讯。
标签:容器,compose,服务,指定,编排,docker,networks From: https://www.cnblogs.com/xiaoyuzai09/p/17176262.html