docker-compose基础(一)

docker-compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,可以使用YAML文件来配置应用程序的服务。然后,使用单个命令,可以从配置中创建并启动所有服务。

docker-compose步骤

  1. 使用Dockerfile定义应用程序的环境.
  2. docker-compose.yml中定义构成应用程序的服务.
  3. 运行docker-compose up启动并运行整个应用程序。

安装compose

  1. 下载当前稳定版本并赋予执行权限
sudo curl -L "https://github.com/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
  1. 设置环境变量
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
#或者:
vim /etc/profile
export COMPOSE=/usr/local/bin/
export PATH=$COMPOSE:$PATH

#执行: source /etc/profile 生效.

更新

从版本1.3开始,Compose使用Docker标签来跟踪容器,并且需要重新创建容器以添加标签。 如果Compose检测到没有标签创建的容器,它将拒绝运行.

卸载

sudo rm /usr/local/bin/docker-compose
#或者:
pip uninstall docker-compose

compose命令详解

build命令

Usage: build [options] [--build-arg key=val...] [SERVICE...]
选项:
--compress    使用gzip压缩构建上下文
--force-rm    始终移除中间容器
--no-cache    构建镜像时不要使用缓存
--pull       拉取最新版本的镜像
-m, --memory MEM  设置构建容器的内存限制
--build-arg key=val   设置服务的构建时候的变量
 --parallel      并行构建镜像

注意: 如果更改服务的Dockerfile,请运行docker-compose build进行重建。

bundle命令

Usage: bundle [options]
选项:
--push-images   自动推送构建以后的服务的镜像
-o, --output PATH   将包文件写入的路径

config命令

Usage: config [options]
选项:
--resolve-image-digests  镜像摘要的标记
--no-interpolate        不要插入环境变量
-q, --quiet      仅验证配置,不打印任何内容
--services    打印服务名称,每行一个
--volumes     打印存储卷名称,每行一个

--hash="*"    打印服务配置哈希,每行一个。设置“service1,service2”以获取指定服务的列表或使用通配符来显示所有服务。

create命令

为服务创建容器
Usage: create [options] [SERVICE...]
选项:
--force-recreate    即使没有更改配置,也要重新创建容器
--no-recreate    如果容器已存在,请不要重新创建。
--no-build     即使容器丢失,也不要构建镜像.
 --build    在创建容器之前构建镜像

down命令

Usage: down [options]
选项:
--rmi type   删除镜像。类型:
            ‘all‘:删除任何服务使用的所有图像。
            ‘local‘:仅删除没有的图像
            自定义标签由image字段设置。

-v, --volumes   删除volumes中声明的存储卷
--remove-orphans  删除没有在文件中定义的服务的容器
-t, --timeout TIMEOUT 以秒为单位指定关闭超时(默认10s)

默认删除的内容:在Compose文件中定义的服务的容器和定义的服务的网络.

注意:永远不会删除定义为外部的网络和卷.:

events命令

Usage: events [options] [SERVICE...]
选项:
--json   将事件输出为json对象流

exec命令

Usage: exec [options] [-e KEY=VAL...] SERVICE COMMAND [ARGS...]
选项:
-d, --detach    在后台运行命令
--privileged    为进程提供扩展权限
-u, --user USER 以该用户身份运行该命令
-T  禁用伪tty分配。默认情况下`docker-compose exec`分配TTY

--index=index   容器的索引.
-e, --env KEY=VAL  设置环境变量
-w, --workdir DIR   此命令的workdir目录的路径

images命令

Usage: images [options] [SERVICE...]
选项:
-q, --quiet   仅显示ID

kill命令

Usage: kill [options] [SERVICE...]
选项:
-s SIGNAL   SIGNAL信号发送到容器,默认信号是SIGKILL

通过发送SIGKILL信号强制运行容器停止:
docker-compose kill -s SIGINT

logs命令

Usage: logs [options] [SERVICE...]
选项:
--no-color  产生单色输出
-f, --follow    按照日志输出
-t, --timestamps    显示时间戳
--tail="all"    每个容器的日志末尾显示的行数

pause命令

Usage: pause [SERVICE...]
暂停运行服务的容器: docker-compose unpause

port命令

Usage: port [options] SERVICE PRIVATE_PORT
选项:
--protocol=proto     tcp或udp.默认是tcp
--index=index       容器的索引.

ps命令

Usage: ps [options] [SERVICE...]
选项:
-q, --quiet  仅显示id
--services   显示服务
--filter KEY=VAL  按属性过滤服务
-a, --all   显示所有已停止的容器

pull命令

Usage: pull [options] [SERVICE...]
--ignore-pull-failures  拉取镜像失败时忽略
--parallel  并行拉取镜像
--no-parallel   禁用并行拉取镜像
-q, --quiet     拉取镜像时不打印进度信息
--include-deps  将服务声明为依赖项

push命令

Usage: push [options] [SERVICE...]
选项:
--ignore-push-failures   推送镜像失败时忽略

restart命令

Usage: restart [options] [SERVICE...]
选项:
-t, --timeout TIMEOUT   以秒为单位指定关闭超时

rm命令

Usage: rm [options] [SERVICE...]
选项:
-f, --force  不要询问是否删除,强制删除.
-s, --stop   在移除之前停止容器
-v     删除附加到容器的存储卷

列出所有卷,使用docker volume ls。
任何不在卷中的数据都将丢失。

删除已停止的服务容器。 默认情况下,不会删除附加到容器的存储卷

run命令

Usage:
    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=""   以指定的用户名或uid运行
--no-deps    不要启动依赖的服务
--rm    运行后删除容器
-p, --publish=[]    将容器的端口发布到主机
--service-ports 在启用并映射服务端口的情况下运行命令给主机.
--use-aliases   在网络中使用服务的网络别名
-v, --volume=[] 绑定一个存储卷
-w, --workdir=""    容器内的工作目录

例如:
docker-compose run --service-ports web python manage.py shell
docker-compose run --publish 8080:80 -p 2022:22 -p 127.0.0.1:2021:21 web python manage.py shell
docker-compose run db psql -h db -U docker
docker-compose run --no-deps web python manage.py shell

scale命令

请使用带有--scale标志的up命令。
Usage: scale [options] [SERVICE=NUM...]
选项:
-t, --timeout TIMEOUT   以秒为单位指定关闭超时

设置要为服务运行的容器数。 数字以service = num的形式指定为参数:
docker-compose scale web=2 worker=3

start命令

Usage: start [SERVICE...]
启动服务的现有容器

stop命令

Usage: stop [options] [SERVICE...]
-t, --timeout TIMEOUT   以秒为单位指定关闭超时

top命令

Usage: top [SERVICE...]
显示运行的进程.

unpause命令

Usage: unpause [SERVICE...]
取消暂停服务的暂停容器

up命令

Usage: up [options] [--scale SERVICE=NUM...] [SERVICE...]
选项:
-d, --detach  在后台运行容器,打印新的容器名称
--no-color   产生单色输出
--quiet-pull  拉取时不打印进度信息
--no-deps    不要启动与这个服务依赖的其他服务
--force-recreate  即使配置也重新创建容器
--always-recreate-deps  重新创建依赖容器
--no-recreate   如果容器已存在,就不要创建.
--no-build    即使丢失,也不要构建镜像.
--no-start  创建后不要启动服务
--build     在启动容器之前构建映像
--abort-on-container-exit   如果有任何容器停止,则停止所有容器
 -t, --timeout TIMEOUT  对容器使用此超时(以秒为单位)连接时或容器时关闭.
-V, --renew-anon-volumes    重新创建存储卷,不检索之前容器的数据.
--remove-orphans    删除未定义的服务的容器
--exit-code-from SERVICE  返回所选服务的退出代码
--scale SERVICE=NUM  将SERVICE扩展到NUM个实例

原文地址:https://blog.51cto.com/liyuanjie/2445360

时间: 2024-10-31 20:19:34

docker-compose基础(一)的相关文章

009.Docker Compose基础使用

一 Docker Compose概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用YAML文件来配置应用程序的服务.然后,使用单个命令,您可以从配置中创建并启动所有服务. Compose适用于所有环境:生产,登台,开发,测试以及CI工作流程. 使用Compose基本上是一个三步过程: 在Dockerfile中定义您的应用程序环境,以便可以在任何地方进行再生产. 定义构成应用程序的服务,docker-compose.yml 以便它们可以在隔离环

010.Docker Compose构建WordPress实战

一 前期规划 类型 版本 备注 WordPress镜像 wordpress:latest MySQL数据库 5.7 Docker已安装,参考<002.Docker版本及安装>. Docker Compose已安装,参考<009.Docker Compose基础使用>. 二 正式构建 2.1 创建目录 1 [email protected]:~# mkdir my_wordpress 2 [email protected]:~# mkdir /db_data #创建用于存储MySQL

有容云:实战总结之 利用Docker、Docker Compose &amp;Rancher构建持续部署

前言: 本文由John Patterson . Chris Lunsford写于2016年4月4日,译者有容云张向波,转载请注明出处.(原文链接见文末) 作者John Patterson和Chris Lunsford 运营了一家提供运营和基础架构服务的公司,本文是他们给大家分享的内容:关于如何通过使用Docker.Docker-Compose和Rancher来实现容器部署落地. 我们想跟你一起从头开始体验整个过程,特别是之间遇到的一些痛点和所做的决策.目前,已经有许多的资源和工具可以与Docke

Docker(8)-Docker Compose

对于大多数的工作,我们都需要多个容器之间的相互配合.幸运的是,Docker提供给了我们一个巧妙的工具--Docker Compose,让我们能够无缝地建立和管理多个容器. 要安装Docker Compose,我们需要先确保已经安装了pip(一个Python包管理器).命令如下: sudo apt-get update sudo apt-get install -y python-pip sudo pip-install docker-compose Docker Compose使用一个名为doc

Docker之基础篇

系列文章: 小白学Docker之基础篇 小白学Docker之Compose 小白学Docker之Swarm PS: 以下是个人作为新手小白学习docker的笔记总结 1. docker是什么 百科上的解释是这样的: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口. 知乎上的很多理解是将其理解成集装箱,彼此之间互相不影响,各自运行在各自的环境

Spring Boot 2.0(五):Docker Compose + Spring Boot + Nginx + Mysql 实践

我知道大家这段时间看了我写关于 docker 相关的几篇文章,不疼不痒的,仍然没有感受 docker 的便利,是的,我也是这样认为的,I know your felling . 前期了解概念什么的确实比较无聊,请不要着急精彩马上开始,当大家对 docker 相关概念有所了解之后,后面我会结合 Spring Boot 给大家来一系列的小例子,会让大家感受到使用 Docker 就是这么爽! 今天给大家演出的导演是 Docker 家族的 docker-compare ,主演是 Spring Boot.

docker——三剑客之Docker Compose

编排(Orchestration)功能是复杂系统实现灵活可操作性的关键.特别是在Docker应用场景中,编排意味着用户可以灵活的对各种容器资源实现定义和管理. 作为Docker官方编排工具,Compose的重要性不言而喻,它可以让用户通过编写一个简单模板文件,快速地创建和管理基于Docker容器地应用集群. Compose项目是Docker官方的开源项目,负责实现对Docker容器的快速编排.从功能上看,跟OpenStack中的Heat十分相似.Compose定位是"定义和运行多个Docker容

Docker Compose部署GitLab服务,搭建自己的代码托管平台(图文教程)

场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100902301 Docker Compose基本使用-使用Compose启动Tomcat为例: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100904080 Docker Compose部署项目到容器-基于Tomc

Docker Compose部署Nexus3时的docker-compose,yml代码

场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100902301 Docker Compose基本使用-使用Compose启动Tomcat为例: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100904080 Docker Compose部署项目到容器-基于Tomc

Docker,Docker Compose,Docker Swarm,Kubernetes之间的区别

最近在学习Docker容器,了解到一些相关的技术,像是Kubernetes,Docker-compose,Docker Swarm,分不清这些东西之间的区别,特意去研究了一下,分享一下,适合刚入门学习容器的同学了解. DcokerDocker 这个东西所扮演的角色,容易理解,它是一个容器引擎,也就是说实际上我们的容器最终是由Docker创建,运行在Docker中,其他相关的容器技术都是以Docker为基础,它是我们使用其他容器技术的核心. Docker-ComposeDocker-Compose