Compose 的默认管理对象是服务栈,通过子命令对栈中的多个服务进行便捷的生命周期管理。
任务(task)
一个容器被称为一个任务。任务拥有独一无二的ID,在同一个服务中的多个任务序号依次递增。
服务(service)
某个相同应用镜像的容器副本集合,一个服务可以横向扩展为多个容器实例。
服务栈(stack)
由多个服务组成,相互配合完成特定业务,如 Web 应用服务、数据库服务共同构成 Web 服务栈,一般由一个 docker-compose.yml 文件定义。
安装 compose
sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version
操作命令
构建项目中的服务容器
docker-compose build --force-rm
校验和查看 compose 文件的配置信息
docker-compose config
停止服务栈
docker-compose down
列出服务所创建的镜像
docker-compose images
强制停止服务器
docker-compose kill
查看服务容器的输出
docker-compose logs
暂停一个服务容器
docker-compose pause
列出项目中目前的所有容器
docker-compose ps
拉取服务依赖的镜像
docker-compose pull
推送服务创建的镜像到镜像仓库
docker-compose push
重启项目中的服务
docker-compose restart
停止已经处于运行状态的容器,但不删除它
docker-compose stop
删除所有(停止状态的)容器
docker-compose rm -f
在指定容器上执行一个命令
docker-compose run nginx echo "hello world"
设置指定服务运行的容器个数
docker-compose scale nginx=6
启动已经存在的服务容器
docker-compose start
显示服务栈中正在运行的进程信息
docker-compose top
恢复处于暂停状态中的服务
docker-compose unpause
打印版本信息
docker-compose version
启动项目
docker-compose up -d
说明:
up 命令十分强大,它将尝试自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作
链接的服务都将会被自动启动,除非已经处于运行状态。
docker-compose.ym 配置
指定 Dockerfile 所在文件夹的路径
version: '3'
services:
app:
build: /path/to/build/dir
覆盖容器启动后默认执行的命令
common: echo "hello world"
指定容器名称
container_name:docker-web-container
指定多个服务之间的依赖关系
depends_on:db
自定义 DNS 服务器
dns:8.8.8.8
配置 DNS 搜索域
dns_search:example.com
覆盖容器中默认的入口命令
entrypoint: python app.py
从文件中获取环境变量
env_file: .env
暴露端口,但不映射到宿主机,只被连接的服务访问
expose:
- "3000"
- "8000"
指定为镜像名称或镜像 ID
imgae:ubuntu
设置网络模式
network: "none"
network: "bridge"
network: "host"
network: "servuce:[service.name]"
network: "container:[name or id]"
所加入的网络
services:
web:
networks:
web_net
跟主机系统共享进程命名空间
pid: "host"
暴露端口信息
ports:
- "3000"
- "8000:8000"
- "49100:22"
- "127.0.0.1:8001:8001"
数据卷所挂载路径
volumes:
- /var/lib/mysql
- cache/:tmp/cache
- ~/config:/etc/config/:ro
指定重启策略
restart:always