Docker 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: 5000
        published: 5000
    # 连接到my-net网络    
    networks:
      - my-net
    # 指定Docker将counter-vol卷(source:)挂载到容器内的/code(target:)
    volumes:
        - type: volume
            source: counter-vol
            target: /code
    volumes:
      # 将本机的./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: overlay
  attachable: 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:latest
    environment:
      - ENV_VAR1=${ENV_VAR1}
      - ENV_VAR2=${ENV_VAR2}

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

使用Docker Compose部署-管理应用

这里介绍一下使用Docker Compose管理和部署镜像的时候的常用命令。文章来源地址https://www.toymoban.com/news/detail-639954.html

# 在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 查看

到了这里,关于Docker Compose用法详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Jenkins自动化部署docker

    准备测试服务器docker环境 准备jdk环境 将上传jar包修改为 app.jar 对外暴露 1000 端口 启动jar 制作镜像 将上传的镜像先测试,我的jar包叫 sky-server-1.0-SNAPSHOT.jar 先将这个做成镜像 创建容器 将之前做的镜像运行 环境准备 前提需要Jenkins和Gitea这个要提前准备好。 1、配置Jenkins的M

    2024年01月17日
    浏览(58)
  • 自动化测试中如何判断测试是否通过?详解 Pytest 测试框架的断言用法

    目录 前言: 01 — Python 原生的 assert 02 — Pytest 的 assert 优点 03 — Pytest 断言的用法 4.1 断言字符串 4.2 断言函数或者接口返回值 4.3 断言集合类型 04 — Pytest 断言 Excepiton 05 — 为断言添加自定义功能 06 — 禁止 Pytest 的 assert 特性 07 — 总结 在自动化测试中,判断测试是否通过是

    2024年02月16日
    浏览(64)
  • Docker 自动化部署(保姆级教程)

    jenkins介绍 jenkins部署Vue项目 docker安装Jenkins Jenkins:是一个开源的、提供友好操作界面的持续集成(CI)工具,主要用于持续、自动的构建的一些定时执行的任务。Jenkins用Java语言编写,可在Tomcat等流行的容器中运行,也可独立运行。 开发的步骤: 开发者会将代码上传到版本库中

    2024年02月07日
    浏览(49)
  • docker+jenkins 实现自动化部署

    工欲善其事必先利其器,所以前期的准备工作必须做好,那么我们要实现自动化部署,必须提前准备什么呢?哈哈哈,可能有一些小伙伴已经猜到了,我们需要一台自己的服务器,这里博主使用的自己够买一台腾讯云的轻量服务器,折扣完了才一百多块钱,当然小伙伴也可以

    2024年02月06日
    浏览(269)
  • docker+jenkins+dockerfile 自动化部署发布

    提示: 文章如有错误的地方请指出,以免误人子弟! 提示:以下是本篇文章正文内容,下面案例可供参考 下载镜像 下载maven maven 官网下载地址 或者使用命令下载 通过软件放到 linux 的目录下,这边放到Home目录下 解压 进到解压的目录下,创建项目的本地仓库文件夹并赋予读

    2024年02月05日
    浏览(47)
  • Jenkins+Docker 实现一键自动化部署项目

    1.安装Jenkins 注:因为Jenkins容器里的用户是Jenkins,而主机用户不是Jenkins,就算是root也一样会报错:/var/jenkins_home/copy_reference_file.log: Permission denied,这个时候就需要在主机上面给主机地址赋予访问Jenkins容器的权限,Jenkins内部用的是uid 1000的user。 -privileged=true让容器具有root权限

    2024年02月16日
    浏览(51)
  • docker+jenkins自动化部署springboot项目

    阿里云服务器1核2GB java 1.8.0._371 maven apache-maven3.8.8 git 1.8.3.1 docker和jenkins在一台服务器上,环境的配置,对于java和maven可以自己下载对应tar包进行配置,记得配置环境,也可以使用yum进行安装。记得配置/etc/profile后source一下: source /etc/profile Maven记得修改镜像!!! 在本地创建

    2024年02月03日
    浏览(49)
  • Docker 部署后端项目自动化脚本

    这里的项目位置是target同级目录 1.在项目下面新建一个bin目录 新建一个package.txt 写入下方代码后 后缀改为.bat 2.项目下新建一个deploy文件夹里面新建一个deploy.ps1脚本文件 示例 这里使用ssh 可以自己编写不太一样 上传到服务器中后自己选择一个合适的文件夹 然后旁边新建一个

    2024年02月01日
    浏览(53)
  • 记录使用gitlab实现Docker自动化部署

    目录 前言 一、gitlab-runner docker安装 二、gitlab-runner的注册与使用 1.注册 2. .gitlab-ci.yml 脚本编写 总结 前面搭建了gitlab与harbor ,现在就使用它们来实现自动化docker部署。所谓自动化部署,就是提交代码到指定分支时自动触发预先写好的脚本,来实现打包,推送镜像。想要实现这

    2023年04月11日
    浏览(48)
  • Docker + Jenkins 自动化部署若依项目

    前言 对着此文章操作之前,确保服务器上的Java环境(JDK、MySQL、Redis、Jenkins以及Linux安装Maven)已经装好,如果没有装好,参考我之前的文章。 注意: 如果服务器上自己装的又 Nginx ,需要手动停了,要不会导致80端口被占用 1:首先,到若依官网拉去若依分离版项目 2:拉完之后

    2024年04月16日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包