docker学习笔记03-docker compose的安装以及基本使用
docker compose 的使用
在微服务时代,使用微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例。如果每个微服务都要手动启停,那么效率之低、维护量之大可想而知。本节课将讨论如何使用 Docker Compose来轻松、高效地管理容器。
docker-compose的安装
通过curl的方式安装
1 | sudo curl -L "https://github.com/docker/compose/releases/download/1.25.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
也可以自行到github上面下载安装
``
给予权限
1 | sudo chmod +x /usr/local/bin/docker-compose |
查看是否安装成功
1 | docker-compose version |
docker-compose 管理容器的结构
docker-compose将所管理的容器分为3层:
- 工程层
- 服务层
- 容器层
工程层
docker-compose运行目录下的所有文件( docker-compose.yml、 extends文件或环境变量文件等)组成一个工程(默认为 docker-compose.yml所在目录的目录名称)
服务层
一个工程可包含多个服务,每个服务中定义了容器运行的镜像、参数和依赖,一般一个Dockerfile文件所在的文件夹,为一个服务
容器层
一个服务可包括多个容器实例
docker-compose常用命令
image
指定镜像名称或者镜像id,如果该镜像在本地不存在,Compose会尝试pull下来。
示例:
1 | image: java |
build
指定Dockerfile文件的路径。可以是一个路径,例如:
1 | build: ./dir |
也可以是一个对象,用以指定Dockerfile和参数,例如:
1 | build: context: ./dir dockerfile: Dockerfile-alternate args: buildno: 1 |
command
覆盖容器启动后默认执行的命令
示例:
1 | command: bundle exec thin -p 3000 |
或:
1 | command: [bundle, exec, thin, -p, 3000] |
links
链接到其他服务中的容器。可以指定服务名称和链接的别名使用SERVICE:ALIAS 的形式,或者只指定服务名称,
示例:
1 | web: links: - db - db:database - redis |
external_links
表示链接到docker-compose.yml外部的容器,甚至并非Compose管理的容器,特别是对于那些提供共享容器或共同服务。格式跟links类似
示例:
1 | external_links: - redis_1 - project_db_1:mysql - project_db_1:postgresql |
ports
暴露端口信息。使用宿主端口:容器端口的格式,或者仅仅指定容器的端口(此时宿主机将会随机指定端口),类似于docker run -p
示例:
1 | ports: - "3000" - "3000-3005" - "8000:8000" - "9090-9091:8080-8081" - "49100:22" - "127.0.0.1:8001:8001" - "127.0.0.1:5000-5010:5000-5010" |
environment
从文件中获取环境变量,可以为单独的文件路径或列表。如果通过 docker-compose -f FILE 指定了模板文件,则 env_file 中路径会基于模板文件路径。如果有变量名称与 environment 指令冲突,则以envirment 为准
示例:
1 | env_file: .env |
如果感兴趣的,可以参考docker-compose.yml文件官方文档:https://docs.docker.com/compose/compose-file/