docker-compose - 常用命令

  • 作者:KK

  • 发表日期:2019.10.11


主要场景

本人主要用于项目开发目的,涉及 PHP、Python 和 Node.js,偶尔会在测试环境和生产环境上进行维护,其它事情运维人员会处理。


最基本的

#构建容器
docker-compose build

#启动容器
docker-compose up
docker-compose up -d  #后台运行

#停止容器
docker-compose down

#查看当前项目下各个容器的运行情况
docker-compose ps

在测试服务器或生产环境上指定一个别的配置文件来执行编排命令

docker-compose -f docker-compose-test.yml up -d 其中 docker-compose-test.yml 就是自己要指定的 yml 文件。

这个-f参数一定要跟在docker-compose命令后面,因为docker-compose logs -f service名称这样的命令跟在 logs 后面的 -f 是针对 logs 子命令的,用途是实时跟踪日志输出,所以如果要指定配置文件,就需要在基础命令的后面就加-f 配置文件名


实时查看已经后台运行的容器日志

docker-compose up -d后台启动 之后,如果操作效果感觉不太对劲需要看看控制台输出日志,可以通过docker-compose logs -f来查看所有服务的容器实时日志。

如果只要查看某一个服务的容器日志则是docker-compose logs -f service名称


只运行指定的 service

当一个 yml 里面定义了多个 service,而你有时候只需要启动其中一个进行调试,而不想耗时间启动其它,那就如下:

docker-compose run -p 8080:8080 service名称 sh

因为我常常单独启动 web 服务的容器,所以就加了 -p 来声明端口。否则它不会按照 yml 的配置去启动端口的。

通过启动 sh 进入里面的终端后,再在里面执行python web.py来启动里面的 web 服务器,外面即可访问,而修改代码后停止服务器再重启,并不需要停掉整个容器再重启容器。


开多个窗口进入已经运行的容器

像上面已经启动了一个 web 容器,可以开多个终端窗口执行docker-compose exec service名称 sh来进入已经运行起来了的服务容器。