对于Compose来说, 大部分命令的对象既可以是项目本身, 也可以指定为项目中的服务 或者容器。 如果没有特别的说明, 命令对象将是项目, 这意味着项目中所有的服务都会受到命令影响。
看考文档:https://docs.docker.com/compose/reference/overview/
compose操作
命令格式:docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
选项:
-f, --file FILE
:指定compose模板文件,默认是当前目录下的docker-compose.yml文件;-p, --project-name NAME
:指定项目名称, 默认将使用所在目录名称作为项目名--project-directory PATH
:指定工作目录, 默认为 Compose文件所在路径--verbose
:输出更多调试信息--log-level LEVEL
:设置日志级别,取值:DEBUG, INFO, WARNING, ERROR, CRITICAL-v, --version
:显示版本信息-H, --host HOST
:指定所操作的docker服务地址--tls
:启动TLS,如果指定-tlsverfyi 则默认开启--tlscacert CA_PATH
:信任的TLSCA的证书--tlscert CLIENT_CERT_PATH
:客户端使用的TLS证书--tlskey TLS_KEY_PATH
:TLS的私钥文件路径--tlsverify
:使用TLS校验连接对方--skip-hostname-check
:不使用TLS证书校验对方的主机名
显示版本
命令:version [--short]
创建并启动服务栈
命令:up [options] [--scale SERVICE=NUM...] [SERVICE...]
选项:
-d, --detach
:后台启动--no-color
:不显示颜色输出--quiet-pull
:拉取镜像不打印日志--no-deps
:不启动连接的服务--force-recreate
:强制重新创建容器,不能与–no-recreate同时使用--always-recreate-deps
:重新创建依赖的容器,不能与–no-recreate同时使用--no-recreate
:如果容器已经存在,就不创建了--no-build
:不自动构建缺失的服务镜像;--no-start
:床架服务后不启动他们--build
:启动容器前先构建--abort-on-container-exit
:当有容器停止时中止整个服务, 与 -d 选项冲突-t, --timeout TIMEOUT
:停止容器时候的超时(默认为 10 秒), 与 -d 选项冲突-V, --renew-anon-volume
:重新创建匿名数据卷--remove-orphans
: 删除服务中未定义的孤儿容器--exit-code-from SERVICE
:退出时返回指定服务容器的退出符--scale SERVICE=NUM
:扩展指定服务实例到指定数
该命令十分强大,它将尝试 自动完成包括构建镜像,(重新)创建服务,启动服务,并关
联服务相关容器的一系列操作
链接的服务都将会被自动启动,除非已经处千运行状态。可以说,大部分时候都可以直接通过该命令来 启动一个项目。
docker-compose up 启动的容器都在前台,控制台将会同时打印所有容
器的输出信息,可以很方便进行调试。
当通过Ctrl-C停止命令时, 所有容器将会停止
如果使用docker-compose up -d, 将会在后台启动并运行所有的容器。 一般推荐生
产环境下使用该选项。
默认情况,如果服务容器已经存在,docker-compose up 将会尝试停止容器,然 后重新创建 (保待使用volumes-from挂载的卷),以保证新启动的服务匹配docker compose.yml文件的最新内容。 如果用户不希望容器被停止并重新创建,可以使用 docker-compose up --no-recrea七e。 这样将只会启动处千停止状态的容器,而忽 略已经运行的服务。 如果用户只想重新部署某个服务,可以使用docker-compose up --no-deps -d <SERVICE_NAME>
来重新创建服务并后台停止旧服务,启动新服务,并不会影响到其所依赖的服务。
停止服务栈
命令:down [options]
选项:
--rmi type
:指定删除镜像的类型, 包括all (所有镜像),local (仅本地);-v, --volumes
:删除挂载数据卷;--remove-orphans
:清除孤儿容器,即未在Compose服务中定义的容器;-t, --timeout TIMEOUT
:指定超时时间,默认为10s。
停止服务栈,并删除相关资源, 包括容器、 挂载卷、 网络、 创建镜像等。 默认情况下只清除所创建的容器和网络资源
构建项目中的服务容器
命令:build [options] [--build-arg key=val...] [SERVICE...]
选项:
--compress
:使用zip压缩上下文--force-rm
:删除构建过程中的临时容器--no-cache
:构建过程中不使用cache,这会加长构建过程--pull
:始终尝试通过pull来获取更新版本的镜像-m, --memory MEM
:指定创建服务所使用的内存限制--build-arg key=val
:指定服务创建时的参数--parallel
:并行构建
服务容器一旦构建后, 将会带上一个标记名, 例如对于 composetest项目中的一个 web容器, 通常是composetest_web;
创建可分发配置包
命令:bundle [options]
选项:
--push-images
:自动推送镜像到仓库-o, --output PATH
:配置包的导出路径,默认为项目名.dab
创建一个可分发(Distributed Application Bundle, DAB)的配置包, 包括整个服务栈的
所有数据, 他人可以利用该文件启动服务栈。
启动服务容器
命令:start [SERVICE...]
停止服务容器
命令:stop [options] [SERVICE...]
暂停服务容器
命令:pause [SERVICE...]
恢复暂停服务
命令:unpause [SERVICE...]
强制停止服务容器
命令:kill [options] [SERVICE...]
选项:
-s SIGNAL
:指定信号,默认是SIGKILL
这个命令会通过发送SIGKILL信号来强制停止服务容器
显示运行的容器进程信息
命令:top [SERVICE...]
显示服务日志
命令:logs [options] [SERVICE...]
选项:
--no-color
:关闭颜色输出-f, --follow
:持续跟踪输出日志消息-t, --timestamps
:显示时间戳--tail="all"
:仅显示指定行数的最新日志消息
查看配置
命令:config [options]
选项:
--resolve-image-digests
:为镜像添加对应的摘要信息;-q, --quiet
:只检验格式正确与否, 不输出内容--services
:打印出Compose中所有的服务信息;-volumes
:打印出Compose中所有的挂载卷信息;
在服务中运行命令
命令:exec [options] [-e KEY=VAL...] SERVICE COMMAND [ARGS...]
选项:
-d, --detach
:在后台运行命令--privileged
:以特权角色运行命令-u, --user USER
:使用指定用户运行命令-T
:默认情况下会打开--index=index
:当服务有多个容器实例时指定容器索引,默认为第一 个-e, --env KEY=VAL
:设置环境变量-w, --workdir
:设置命令的工作目录
显示创建的镜像
命令:images [options] [SERVICE...]
选项:
-q, --quiet
:只显示镜像ID
查看端口映射
命令:port [options] SERVICE PRIVATE_PORT
选项:
--protocol=proto
:协议,tcp或者是udp,默认tcp--index=index
:如果同一服务存在多个容器, 指定命令对象容器的序号(默认为1)
列出项目运行容器
命令:ps [options] [SERVICE...]
选项:
-q, --quiet
:只显示容器ID--services
:显示容器名
拉取服务依赖镜像
命令:pull [options] [SERVICE...]
选项:
--ignore-pull-failures
:忽略拉取镜像过程中的错误--no-parallel
:不并行拉取,默认是并行的-q, --quiet
:不打印拉取过程信息--include-deps
:同时拉取依赖的镜像
推送服务镜像
命令:push [options] [SERVICE...]
选项:
--ignore-push-failures
:忽略错误
重启服务
命令:restart [options] [SERVICE...]
选项:
-t, --timeout TIMEOUT
:超时时间,默认10秒
删除容器服务
命令:rm [options] [SERVICE...]
选项:
-f, --force
:强制删除,不需要确认-s, --stop
:在删除容器前先停止-v
:删除容器所挂载的数据卷
在服务上执行命令
命令:run [options] [-v VOLUME...] [-p PORT...] [-e KEY=VAL...] [-l KEY=VALUE...] SERVICE [COMMAND] [ARGS...]
选项:
-d, --detach
:后台运行--name NAME
:为容器指定名字--entrypoint CMD
:覆盖默认的容器启动命令-e KEY=VAL
: 指定环境变量-l, --label KEY=VAL
:指定元信息-u, --user=""
:指定用户--no-deps
:不自动启动关联容器--rm
:运行之后删除容器-p, --publish=[]
:映射容器端口到本地主机--service-ports
:配置服务端口并映射到本地主机-v, --volume=[]
:绑定数据卷-T
:不分配伪tty, 意味着依赖tty的指令将无法运行。-w, --workdir=""
:指定容器内的工作目录
设置服务运行的容器个数
命令:scale [options] [SERVICE=NUM...]
选项:
-t, --timeout TIMEOUT
:超时时间
监控容器事件
命令: events [options] [SERVICE...]
选项:
--json
:以json格式输出
这个命令实时监控容器的事件信息