【docker】docker学习(4)——docker-compose常用语法与编写实战

2023-10-26

大家好,我是好学的小师弟,今天和大家分享下docker-compose的一些常用语法和编写实战

docker-compose是一个二进制文件,我们通常都是通过github把它下载下来,然后给他执行的权限。
下载docker-compose,在github上下载,下载完后记得把名字改一下,最好改为docker-compose, 然后通过ssh工具上传到服务器上 /usr/local/bin目录下
然后赋予执行权限
Chmod +x /usr/local/bin/docker-compose
然后查看 是否安装成功

docker-compose --version

 docker-compose是一个用来编排容器的方式,它可以编排单机环境下的容器。比如一台服务器中,你要起一个web容器服务,一个redis容器服务,那么你就可以在docker-compose文件中编写。

docker-compose 常用的语法
docker-compose ps                    列出所有运行的容器
docker-compose logs                 查看服务日志输出
docker-compose build                构建或者重新构建服务(这里只是构建,还没有启动)
docker-compose start|stop         启动|停止已存在的某个或多个容器
docker-compose rm                    删除指定的某个容器 
docker-compose -f docker-compose-alarm.yml down 停止并删除该yaml文件生成的镜像、容器、网络、数据卷等操作
docker-compose -f docker-compose-alarm.yml up -d  构建、启动容器(一般都是用这条命令,包含了构建和启动)
-f 后跟的是指定文件(docker-compose 命令默认使用的配置文件是当前目录中的 docker-compose.yml 文件,当然我们可以通过 -f 选项指定一个其它名称的配置文件)  -d 是以后台的方式运行容器。不会在终端上打印运行日志

docker-compose.yml文件语法

因为我们一般是创建一个docker-compose.yml文件,在这个yml文件中,我们来编写命令行。yaml格式的文件,有点类似于json的键值对格式。注意:冒号后面要空一格,yaml格式的文件主要是靠空格来划分作用域的。

#docker-compose的例子
version: "2"
services:
 TestCompose:
   build: /root/test-Dockerfile   #在docker-compose中,build只能指向一个目录
   image: "this-docker-compose-test:test-docker-compose"
   container_name: docker-compose-TestContainer
   restart: always
   env_file: /opt/docker-compose-envTest/config/.env
   command: /bin/bash -c  "java -jar /opt/jar/TEST-alarm-center.jar"
   ports:
      -	"8011:8080"
   volumes:
      - /data/test:/data/test
      - ./jar/:/opt/jar/
   depends_on:
      -	redis
 redis:
   image: redis
#version 填写的是compose的版本号
#services是服务的意思
#Testcompose是服务的名字,一个services中可以含有多个服务
#Build 是构建的意思,如果我们的镜像是dockerfile文件,那么我们就用build构建一个镜像,build 后面的参数,是指向dockerfile文件目录的参数
#Image 是镜像,如果没有build 那么image就是直接拉取的官方镜像;如果有build,那么image就是build后构建的镜像的名字
#Container_name 就是构建后的容器的名字
#restart: always 这个意思就是,当docker服务重启的时候,docker里面的容器也跟着自动重新启动
#如果没有restart: always 这条命令,那么重启docker服务的时候,里面的容器并不会自动启动

#env_file:存放环境变量的目录 文件名(一般都是env)        
#上文的.env是隐藏文件 这里我们要注意,你存放在.env文件里的环境变量服务对象是container(容器)而不是我们的docker-compose.yml文件
#有其他文档说明:当你的.env文件就叫.env文件的时候,它设置的环境变量也对docker-compose.yml文件生效     (暂未实操)
#.env文件编写格式  例子如下,注意注释不要省略

#nacos注册地址
REGISTER_HOST=192.168.66.66:8848
#nacos用户名
REGISTER_USER=CN_tester


#command  容器启动后默认执行的命令,一般是启动容器里的服务
#  /bin/bash -c 的意思表示命令后面的参数将会作为字符串读入作为执行的命令。(简单来说后面跟的就是执行语句,启动服务) 


#Ports就是映射端口:容器端口
#Volumes 宿主机目录:容器目录
#Depends_on 依赖,比如我启动的这个TestCompose服务,就需要先启动redis这个服务;depends_on就是一个容器启动顺序的命令

docker-compose.yml文件通常是放在Dockerfile的同级目录或者子目录下的

 写完yaml文件后,只需要输入命令行,即可启动服务

docker-compose -f docker-compose-alarm.yaml up -d
#指定生成服务的yaml文件,这样即可启动你想要启动的服务

由于学习时间尚短,可能有出错的地方,希望大家见谅  >-<!

新人创作不易,觉得不错的看官,点个赞吧,么么哒!!!

转载注明出处!

                                                                 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【docker】docker学习(4)——docker-compose常用语法与编写实战 的相关文章

  • 将容器推送到 Azure 容器注册表时资源访问被拒绝

    使用 Docker Compose 将容器推送到私有 Azure 容器注册表时 Azure DevOps 管道返回以下错误 正在推送 容器 注册表 应用程序 最新 推送引用存储库 docker io registry container 被
  • 有没有办法查看 Docker for Windows 上的容器磁盘使用情况?

    我很好奇除了作为容器映像一部分的层之外 是否还有一种方法可以查看正在运行的 Windows 容器使用了多少磁盘空间 基本上 容器自创建以来 增长 了多少 在 Linux 或在 HyperV 中运行的 Linux 容器 中 这将是docker
  • Docker:入口点的覆盖涉及CMD规范?

    这是我纯粹好奇的问题 我必须个性化 Docker 映像 特别是这是我的 dockerfile 的摘录 ARG DEFAULT PHP VERSION FROM php DEFAULT PHP VERSION DEFAULT PHP VERS
  • Kubernetes:无法创建存储库

    我正在跟进Kubernetes 入门指南 http kubernetes io docs hellonode 一切都很顺利 直到我跑步 gcloud docker push gcr io
  • 挂载卷时无法运行 mariadb

    使用以下 docker compose yml 文件 version 2 services wordpress image wordpress ports 8080 80 environment WORDPRESS DB NAME my d
  • 在 Alpine Docker 容器上安装 OpenSSH

    第一次运行 alpine docker 容器并尝试 openssh 安装时 会发生以下情况 ole T docker run it rm alpine bin ash apk add openssh WARNING Ignoring APK
  • 可以从curl访问docker服务,但不能从postman/chrome访问docker服务

    我正在做 docker 入门指南 https docs docker com get started part3 recap and cheat sheet optional https docs docker com get starte
  • 如何基于现有镜像创建新的docker镜像?

    我刚刚开始使用docker 我使用 docker 文件创建图像 如何从现有图像创建新图像 假设你有一个容器bd91ca3ca3c8正在运行 并且您希望在容器中进行更改后创建一个新映像 生成另一个图像将允许您保留您的更改 在这种情况下你可以运
  • 在 docker build 中缓存“go get”

    我想将 golang 单元测试封装在 docker compose 脚本中 因为它依赖于多个外部服务 我的应用程序有很多依赖项 因此需要一段时间go get 如何以允许构建 docker 容器的方式缓存包 而无需每次要测试时下载所有依赖项
  • Docker 未知标志 --mount

    我想使用 mount 将目录从主机挂载到容器flag over volume但我得到 这仅在使用安装标志时才会出现 而不是在使用卷时出现 Command docker run d it name devtest mount type bin
  • Docker 应用程序更新后无法连接到数据库

    在我的公司 我有一个旧的 Symfony 应用程序在 Docker 容器中运行 该应用程序连接到一个 SQL 数据库 该数据库也在 Docker 容器内运行 该图像是使用 php 7 2 apache stretch 构建的 但该版本已不再
  • 来自 alpine 软件包存储库的 Numpy 无法导入 c 扩展

    我正在制作一个需要 pandas 和 numpy 的 docker 映像 但通过 pip 安装大约需要 20 分钟 这对于我的用例来说太长了 然后我选择从 alpine 软件包存储库安装 pandas 和 numpy 但似乎无法正确导入 n
  • 无法在 Dockerfile 中运行 sysctl 命令

    我正在尝试制作我的第一个 dockerfile 我对此很陌生 并且我需要系统来运行命令sysctl w kernel randomize va space 0 它是一个实验室环境 但我收到错误 sysctl 设置键 kernel rando
  • 在 docker 容器内运行 vite 开发服务器

    我有一个 Vue cli 应用程序 我正在尝试将其转换为 vite 我正在使用 Docker 来运行服务器 我看了几个教程 并让 vite 在开发模式下运行 没有错误 但是 浏览器无法访问该端口 也就是说 当我在 macbook 的命令行上
  • 如何在 Mac 上升级 Docker? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我尝试了 docker machine升级 并做了一些工作 但我似乎没有最新的 CLI 如果我执行 docker 版本 我会得到 Clie
  • Jenkinsfile 泊坞窗

    我正在 docker 容器内的 GCE 上运行一个 jenkins 实例 并希望从此 Jenkinsfile 和 Github 执行多分支管道 我正在使用GCE詹金斯 https cloud google com solutions con
  • ERRO[0001] 等待容器时出错:上下文已取消

    运行 docker 镜像时出现错误 看起来问题出在我的电脑上 我使用的是 MacOS 10 13 6 我已按照步骤创建 docker 映像 Sanjeet server api sanjeet docker build t apiconta
  • 如何在 App Engine 中灵活更改 /dev/shm 的大小

    如何更改共享内存文件夹的大小 dev shm在 App Engine 灵活应用程序中 默认情况下 它设置为 64M 太低 无法运行许多应用程序 例如 Chrome 我看不出有什么办法可以改变它 如果您有权访问 可以通过多种方法进行更改doc
  • 在 Dockerfile 中安装节点?

    我是AWS elastic beanstalk的用户 我遇到了一些问题 我想用 less node 构建我的 CSS 文件 但我不知道在使用 jenkins 构建时如何在 dockerfile 中安装节点 这是我在 docker 中使用的安
  • 如何使 Docker 容器中的 /etc/hosts 可被 root 写入? [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我是使用 docker 的新手 正在配置容器 我无法编辑 etc hosts 但需要编辑我正在开发的某些软件 自动编辑 通过 sudo

随机推荐

  • 【微信小程序】wx.login 和 wx.getUserProfile 同时使用问题

    场景 在使用微信登录时 通常会在调用 wx login 获取 code 后再通过 wx getUserProfile 获取 iv 和 encryptedData 加密数据 一起发到后端进行登录验证 但是 在实际使用中如果在 wx login
  • HTML+CSS实现按钮居中

    居中的方式有很多 这里以button为例 它是一个行内块级元素display inline block 所以处理方式很简单 可以用以下两种方式 方式一 div style text align center div
  • 1116. 打印零与奇偶数

    现有函数 printNumber 可以用一个整数参数调用 并输出该整数到控制台 例如 调用 printNumber 7 将会输出 7 到控制台 给你类 ZeroEvenOdd 的一个实例 该类中有三个函数 zero even 和 odd Z
  • 数据库SQL优化大总结之 百万级数据库优化方案

    网上关于SQL优化的教程很多 但是比较杂乱 近日有空整理了一下 写出来跟大家分享一下 其中有错误和不足的地方 还请大家纠正补充 这篇文章我花费了大量的时间查找资料 修改 排版 希望大家阅读之后 感觉好的话推荐给更多的人 让更多的人看到 纠正
  • 【Xilinx Vivado时序分析/约束系列3】FPGA开发时序分析/约束-保持时间

    目录 基本概念 数据结束时间 Data finish time 时钟到达时间 Clock arrival time 保持时间门限 保持时间余量 Hold Slack 往期系列博客 基本概念 数据结束时间 Data finish time 之
  • win10+中标麒麟双系统安装步骤

    win7 10 中标麒麟双系统安装步骤 场景要求 联想启天M415台机出厂预装的是win10 现在要改成win7和中标麒麟7 0双系统 开机在选择系统界面要有两个系统选择 并且默认进入win7 注 先安装win7 再安装中标麒麟 一开始是用
  • MySQL--order by升序与降序、count计数与子查询

    MySQL order by升序与降序 count计数与子查询 1 创建表格 2 题目部分 1 升序与降序 order by 2 count 计数 3 子查询 3 文末彩蛋 轻松一刻 更多关于数据库知识请加关注哟 若需联系和想安装MySQL
  • 打印预览的时候,总是会多于一个空白页,怎么办?

    media print printTest 要打印的区域 display block width 100 height auto overflow hidden 在页面内加入此样式即可
  • PyTorch-01初见

    PyTorch 01初见 同类框架 PyTorch生态 PyTorch能做什么 1 GPU加速 import torch import time print torch version print torch cuda is availab
  • 零基础!搭建好本地的ChatGPT!

    当搭建好本地的GPT 你可以充分利用OpenAI的功能 无需使用任何魔法 并且免去了许多烦恼和难题 通过魔法访问gpt遇到过很多问题吗 以下是你搭建的本地GPT的一些关键特点 功能全面 你的本地GPT能够使用OpenAI的全部功能 让你体验
  • 11 前端模块化

    文章目录 为什么有前端模块化 以前的解决办法 了解CommonJS es6的模块化 export 导出 import 导入 为什么有前端模块化 首先 如果多人合作开发一个项目 你的a js用了一个变量a 你同事的b js也用了一个变量a 那
  • mybatis学习文档

    mybatis 9 28 环境 JDK1 8 mysql 8 0 16 maven3 6 1 IDEA 回顾 JDBC mysql jave基础 Maven junit 1 简介 1 1 什么是mybatis mybatis是支持普通SQL
  • StackExchange.Redis加锁机制实例

    1 redis下载安装 Github下载地址 https github com MicrosoftArchive redis releases 安装过程不做写明 1 VS引用StackExchange Redis 通过 工具 库程序包管理器
  • 软件测试 - sql - 与数据对话的语言

    初识数据库 一 数据库简介 1 1 常见数据库 1 2 数据库模型 1 3 关系型数据库 二 软件的安装与使用 mysql navicat 2 1 安装 2 2 启动关闭mysql服务 2 3 mysql连接navicat 三 数据库基本概
  • clickhouse 数据模型之有序漏斗分析(windowFunnel)

    什么是有序漏斗 有序漏斗需要满足所有用户事件链上的操作都是逡巡时间先后关系的 且漏斗事件不能有断层 触达当前事件层的用户也需要经历前面的事件层 介绍 windowFunnel 搜索滑动时间窗中的事件链 并计算从链中发生的最大事件数 该函数采
  • vs2010 内置了可应用于流的utf8和utf16的编码

    std wifstream is is open T E utf8 txt std ios base binary UTF 8编解码的关健代码 is imbue std locale std locale classic new std c
  • TCP/IP常见面试问题

    TCP IP常见面试问题 1 OSI七层协议以及四层协议 实际使用时只包含四层协议 从上到下依次是 应用层 http 传输层 tcp udp 网络层 ip 网络接口层 以太网协议 2 在网络中具体的传输过程 从上图可见传输的数据每经过一层
  • 【毕业论文】

    博客主页 肩匣与橘 欢迎点赞 收藏 留言 如有错误敬请指正 本文由肩匣与橘编写 首发于CSDN 生活依旧是美好而又温柔的 你也是 基于Unity3D引擎的冒险游戏的设计与实现 前言 摘要 Abstract 1 绪论 1 1 选题背景 1 2
  • rust物品图标_《腐蚀rust》全新XP建造系统图文介绍

    腐蚀rust 全新XP建造系统图文介绍 2016 06 23 15 05 28来源 贴吧编辑 评论 0 腐蚀rust 出了一个新的建造系统 XP建造系统 小编带来相关介绍 一起看一下吧 XP系统在测试服不断的更新完善 现在已经有了比较清晰的
  • 【docker】docker学习(4)——docker-compose常用语法与编写实战

    大家好 我是好学的小师弟 今天和大家分享下docker compose的一些常用语法和编写实战 docker compose是一个二进制文件 我们通常都是通过github把它下载下来 然后给他执行的权限 下载docker compose 在