当前位置: 首页 > news >正文

Docker Compose用法详解

文章目录

    • Docker Compose是什么
    • 安装Docker Compose
    • Compose文件编写
    • 使用Docker Compose部署-管理应用

Docker Compose是什么

Docker Compose是一个用于定义和运行多容器Docker应用程序的python工具。它允许您使用一个单独的配置文件来定义和配置多个相关容器的服务,以便它们可以一起协同工作。

安装Docker Compose

直至今日,Docker Compose仍然是一个需要在Docker主机上进行安装的外部Python工具。
下面介绍一下如何在Linux系统下安装Docker Compose工具。

# 下载二进制文件
# 如果下载失败可以到github上去直接下载二进制文件
sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose# 赋予可执行权限
sudo chmod +x /usr/local/bin/docker-compose# 查看docker compse的版本信息
docker-compse --version

Compose文件编写

Docker Compose使用YAML文件来定义多服务的应用。YAML是JSON的一个子集,因此也可以使用JSON。Docker Compose默认使用文件名docker-compose.yml。当然用户也可以使用 -f 参数来指定具体文件。下面以一个docker-compose.yml文件为例说明一下docker-compse的基本语法:

# version必须指定
# version 并非定义Docker Compose或Docker引擎的版本号
# 它定义了Compose文件格式(主要是API)的版本,建议使用最新版本
version: "3.5"
# services 用于定义不同的应用服务, 也就是不同的镜像
services:# 服务1 services1:# 从当前目录下找Dockerfile构建新镜像build: .# 指定容器的名称container_name: my-web-container# 指定Docker在容器中执行名为app.py的Python脚本作为主程序# 可覆盖Dockerfile中的CMD命令command: python app.py# 指定Docker将容器内(-target)的5000端口映射到主机(published)的5000端口ports:- target: 5000published: 5000# 连接到my-net网络    networks:- my-net# 指定Docker将counter-vol卷(source:)挂载到容器内的/code(target:)volumes:- type: volumesource: counter-voltarget: /codevolumes:# 将本机的./host/path目录映射到Docker容器中的/container/path- ./host/path:/container/path   # 只读映射     - /host/path:/container/path:ro# 给服务设置环境变量 environment:- ENV_VAR1=value1- ENV_VAR2=value2- ENV_VAR3=value3   # 指定重启策略   restart: "no" / always  / on-failure  / unless-stopped# 服务2          services2:# Docker可以基于redis:alpine 镜像启动一个独立的名为redis的容器image: "redis:alpine"# 连接到my-net网络networks:- my-net# 用于指引Docker创建新的网络
# 默认情况下,Docker Compose会创建bridge网络
# 这是一种单主机网络,只能够实现同一主机上容器的连接
networks:# 创建名为my-net的Overlay网络# 允许独立的容器连接到该网络上my-net:driver: overlayattachable: true# volumes用于指引Docker来创建新的卷
# 创建了一个名为data-vol的卷
volumes:data-vol:

docker-compose允许将一些变量通过外部文件进行定义,定义方法如下:
在docker-compose的目录下,创建一个名为.env的文件,并在其中以下面的格式定义环境变量:

ENV_VAR1=value1
ENV_VAR2=value2

在Compose文件中使用${ENV_VAR}的方式引用环境变量,这样,Compose会自动加载.env文件中的环境变量,并将其传递给服务

services:my-service:image: my-image:latestenvironment:- ENV_VAR1=${ENV_VAR1}- ENV_VAR2=${ENV_VAR2}

更多语法说明参见官方文档:
https://docs.docker.com/compose/compose-file/03-compose-file/

使用Docker Compose部署-管理应用

这里介绍一下使用Docker Compose管理和部署镜像的时候的常用命令。

# 在compose的目录下执行下面的命令, 启动应用
# 它会构建所需的镜像,创建网络和卷,并启动容器
# docker-compose up会查找名为docker-compose.yml 或docker-compose.yaml 的Compose文件
docker-compose up &# 停止和关闭应用
docker-compose down # 指定特定的配置文件
# 使用-d 参数在后台启动应用
docker-compose -f prod-equus-bass.yml up# 查看应用的状态
docker-compose ps# 列出各个服务(容器)内运行的进程
docker-compose top# 命令会停止应用,但并不会删除资源
docker-compose stop# 删除应用相关的容器和网络  但不会删除卷和镜像
docker-compose rm # 重启应用
docker-compose restart # 当第一次部署该应用的时候,Docker Compose会检查是否有同名的卷存在。
# 如果不存在,则会创建它。可使用docker volume ls 查看
http://www.lryc.cn/news/117974.html

相关文章:

  • 分布式链路追踪概述
  • css中的var函数
  • 第五次作业 运维高级 构建 LVS-DR 集群和配置nginx负载均衡
  • neo4j电影库-关系查询
  • 2020/10-2023/7 Notes
  • 在UOS系统中管理ORACLE数据库
  • 以http_proxy和ajp_proxy方式整合apache和tomcat(动静分离)
  • 【pinia】Pinia入门和基本使用:
  • Linux 文件系统(一)系统目录
  • 『CV学习笔记』Opencv和PIL Image以及base64编码互相转化
  • 行业追踪,2023-08-07
  • CSRF 攻击和 XSS 攻击分别代表什么?如何防范?
  • RabbitMQ: 详解、使用教程和示例
  • redis NOAUTH Authentication required 可能不是密码问题
  • 动态规划解0-1背包问题(超详细理解)
  • 有哪些可能引起前端安全的问题?
  • 【Unity实战100例】用户头像圆形遮罩使用Shader不用Mask组件
  • arm-linux-gnueabihf-g++ gcc编译、优化命令 汇总
  • vmwera中安装的centos8出现ifconfig不可用
  • 线性表中的时间复杂度
  • ensp与虚拟机搭建测试环境
  • linux内核中的 指针 和 unsigned long
  • STM32--GPIO
  • 剑指 Offer ! 61. 扑克牌中的顺子
  • 《玩转Python数据分析专栏》大纲
  • Zabbix自动注册服务器及部署代理服务器
  • SpringBoot下使用自定义监听事件
  • 并发编程面试题1
  • 【对于一维信号的匹配】对一个一维(时间)信号y使用自定义基B执行匹配追踪(MP)研究(Matlab代码实现)
  • 【Oracle 数据库 SQL 语句 】积累1