Docker-compose安装及使用教程

2023-11-15

docker-compose安装

方法一:
首先执行pip -V确认是否已安装pip,若提示“未找到命令…”则根据以下步骤执行,若显示pip版本则直接执行步骤2安装即可!
1、安装pip :wget https://bootstrap.pypa.io/get-pip.py && python3 get-pip.py

2、安装docker-compose:pip install docker-compose

等待安装完成后即可执行docker-compose version查看版本

方法二:
1、去github搜索docker-compose,选择版本下载
https://github.com/docker/compose/releases
2、将下载好的文件传入linux系统中,并重命名未docker-compose
mv docker-compose-Linux-…… docker-compose
3、给予docker-compose文件可执行权限
chmod u+x docker-compose
4、为方便后期操作,配置环境变量
将docker-compose文件移至/usr/local/bin,修改/etc/profile文件,将/usr/local/bin添加至PATH中
mv docker-compose /usr/local/bin
vim /etc/profile
    export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:/usr/local/bin
5、重新加载profile文件配置
source /etc/profile
6、验证docker-compose,查看其版本
docker-compose version

编写docker-compose.yml文件

yml文件格式要求非常严格,一定要细心,执行过程中若有报错,可根据报错信息找到并修改文件中的错误
yml文件以键值对的形式来配置信息【key: value】value前有个空格
多个配置信息以换行+两个空格的缩进方式来区分,回车换行后点两下空格键,不要使用Tab键
在docker-compose文件中不要使用制表符

# 示例,使用是请删除注释及所有注释前的空格:
version: '3.7'    				#撰写文档格式版本号,若不清楚请百度Docker Engine与docker-compose version 之间的关系,选择对应版本,版本号不对会报错
service:
  mysql:						#项目名称,可以自定义
    restart: always				#开机自启,表示docker启动则此容器跟着启动
    images: daocloud.io/library/mysql:8.0.2		#指定镜像路径
    container_name: mysql						#指定容器的名称
    ports:						 #配置端口
      - 3398:3306                #指定端口的映射,-后有个空格
    environment:				 #配置环境
      MYSQL_ROOT_PASSWORD: root  #指定Mysql的root用户登录密码
      TZ: Asia/Shanghai			 #指定时区
    volumes:					 #配置数据卷
      - /opt/docker_mysql_tomcat/mysql_data:/var/lib/mysql	#映射数据卷
# ************下面配置信息形式同上,不再做说明**********
  tomcat:						
    restart: always
    image: daocloud.io/library/tomcat:8.5.15-jre8
    container_name: tomcat
    ports:
      - 8083:8080
    environment:
      TZ: Asia/Shanghai
    volumes:
      - /opt/docker_mysql_tomcat/tomcat_webapps:/usr/local/tomcat/webapps
      - /opt/docker_mysql_tomcat/tomcat_logs:/usr/local/tomcat/logs

以上示例中根据数据卷映射条件,需要先在Linux系统中/opt/目录下创建docker_mysql_tomcat目录,才可正常启动容器

docker-compose.yml文件编写完成后传入linux系统中,或者直接在linux系统中创建并编辑文件后即可使用docker-compose相关命令对容器进行操作

docker-compose常用命令

在使用docker-compose命令时,默认在当前目录下找docker-compose.yml文件
启动由docker-compose.yml管理的容器:docker-compose up -d

查看由docker-compose管理的容器:docker-compose ps

关闭并删除由docker-compose管理的容器:docker-compose down

启动/停止/重启已存在的且由docker-compose管理的容器:docker-compose start/stop/restart

挂起/恢复由docker-compose管理的容器:docker-compose pause/unpause

查看由docker-compose管理的所有容器运行进程:docker-compose -f docker-compose.yml top

查看由docker-compose管理的指定某一个容器运行进程:docker-compose -f docker-compose.yml top mysql

查看滚动日志:docker-compose logs -f
示例中已将日志映射到/usr/local/tomcat/logs目录中,可直接去文件内查看,工作中主要以此种方式查看日志

示例中容器启动后通过Navicat测试可成功连接

docker-compose配合Dockerfile部署项目

编写docker-compose.yml文件

version: '3.7'
services:
  test1:                        #项目名称
    restart: always             #开机自启
    build:                      #构建自定义镜像
      context: ../              #指定Dockerfile文件路径,../指Dockerfile文件在docker-compose.yml文件的上一层
      dockerfile: Dockerfile    #指定Dockerfile文件名
    image: test1:1.0            #通过上面build构建的镜像名称
    container_name: test1       #容器名称
    ports:
    - 8082:8080                 #端口映射
    environment:
      TZ: Asia/Shanghai         #指定时区

编写Dockerfile文件(关于Dockerfile文件编写,请查看博客:https://blog.csdn.net/Q0717168/article/details/109299009

from daocloud.io/library/tomcat:9.0.36-jdk8-corretto
copy test1.war /usr/local/tomcat/webapps/
maintainer duanyadian 7852***076@163.com

在linux系统中创建docker_test目录,进入该目录,传入test1.war包和Dockerfile文件,然后在docker_test目录下创建docker-compose目录,进入该目录,导入docker-compose.yml文件,这三个文件的关系要与docker-compose.yml中context路径一致,可以在window上整理好后通过ftp传入linux系统中

启动该项目:docker-compose up -d

通过浏览器查看项目已成功启动

通过命令也可以看到项目已经是运行状态

你可能已经注意到上面的黄色警告
WARNING: Image for service test1 was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
该警告是提示镜像已经构建,它已经不存在了。如果需要重建,必须使用docker-compose build或者docker-compose up --build进行重建。也就是说再次启动的时候它不会根据Dockerfile文件进行构建了,而是根据已经构建好的镜像再次重建。
docker-compose up -d 命令可以直接启动基于docker-compose.yml及Dockerfile文件构建的自定义镜像;如果自定义镜像不存在,则会帮助我们构建自定义镜像,如果自定义镜像已存在,则会直接运行自定义镜像

重新构建容器:docker-compose build

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

Docker-compose安装及使用教程 的相关文章

  • CPU高速缓存SRAM命中问题的总结与实验

    1 SRAM高速缓存的结构 获取本机CPU的SRAM缓存信息 我使用的是一个叫cpuinfo x86的小程序 可以获取x86架构的cpu相关信息 下载地址 http osxbook com book bonus misc cpuinfo x
  • 重定向和转发的区别

    重定向和转发的区别 在代码上 转发 第一步 获取请求转发器对象 RequestDispatcher dispatcher request getRequestDispatcher b 第二步 调用转发器的forward方法完成跳转 转发 d
  • Java可变参数Object... args

    文章目录 引言 一 方法重载 二 Object args 三 Object args 3 1 定义 3 2 调用 3 3 处理 3 4 传参 3 5 泛型 3 6 重载 参考 引言 因为Java要求实参 Arguments 和形参 Para
  • 打造高大上的Canvas粒子动画

    首先来看下我们准备要做的粒子动画效果是怎么样的 是这样 或者是这样 甚至是这样 很酷炫 那如何去实现类似上面的粒子动画甚至根据自己的喜好去做更多其他轨迹的动画呢 请看下面详细的讲解 技术选择 因为粒子数量很多 而且涉及到图像像素处理 所以这
  • Linux终端与SSH

    1 终端 当在我们需要操作服务器时要接上显示器和键盘 在键盘上输入 可以在显示器上看到 我们把 显示器 键盘 鼠标等这些统称为 输入 输出的终端设备 或者把显示器和键盘这些统称作 终端 当我们通过终端设备连接到服务器上并打开这些设备 如显示
  • ES6 新增的循环方法

    在 ES6 ECMAScript 2015 中 新增了一些循环方法 这些方法可以帮助我们更方便地遍历数组 字符串 Set Map 等数据结构 本文将介绍一些常用的 ES6 循环方法 for of 循环 for of 循环是一种遍历可迭代对象
  • 防火墙安全策略①

    防火墙 基本定义 防火墙是一种隔离 非授权用户在区域间 并过滤 对受保护网络有害流量或数据包 的设备 防火墙主要是借助硬件和软件的作用于内部和外部网络的环境间产生一种保护的屏障 从而实现对计算机不安全网络因素的阻断 只有在防火墙同意情况下
  • 如何将类数组转换为真正的数组

    开发过程中 有很多时候获取到的是类似数组的对象 比如元素的集合 elementcollection nodeList 以及今天开发时发现classList也是类数组 有时我们需要类数组去调用数组的方法 怎么办 一 遍历类数组 依次将元素放入
  • vue使用高德地图获取当前经纬度

    vue使用高德地图Api获取当前经纬度信息 在utils里面新建getLocation js 封装获取经纬度的公用方法 优化加载速度动态cdn引入高德地图 由于高德Api方法获取当前经纬度比较慢 如果需求是在获取到当前经纬度数据之后请求一些
  • JDBC数据库连接MySQL5.7

    1 首先准备mysql 和eclipse环境 在环境搭建好之后 从eclipse官网下载jdbc的驱动包 下载地址http dev mysql com downloads connector j 2 从下载的文件中取出mysql conne
  • 做电商的您还在为淘宝问题订单备注分类烦恼吗?

    做电商的您还在为淘宝问题订单备注分类烦恼吗 能够自动给淘宝订单添加旗子类型与备注的电商运营机器人 实现轻松管理淘宝问题订单 支持自动给订单添加旗子类型 自动给订单添加备注 解决问题订单处理缓慢 备注修改不及时等难题 使用UiBot之前 问题
  • Python javascript操作DOM

    文档对象模型 Document Object Model DOM 是一种用于HTML和XML文档的编程接口 它给文档提供了一种结构化的表示方法 可以改变文档的内容和呈现方式 我们最为关心的是 DOM把网页和脚本以及其他的编程语言联系了起来
  • 【元宇宙】智能手机万岁

    凭借出色的新设备 我们很快就能进人元字宙 想象这样的情景是很趣的 但是 至少到21世纪20年代 元宇宙时代的大多数设备很可能是我们已经在使用的设备 AR 和 VR 设备不仅面临重大的技术 财务和体验障碍 而且它们在上市后同样会面临币场反响冷
  • Esp8266 Node Mcu 一直乱码的问题详解

    最近一直在做项目 遇到的这个问题花了我很长时间 因此在这里写出自己的经历供大家参考 喜欢的可以点个赞 比较简单的方案 在Arduino上设置Node Mcu 1 打开文件 gt 首选项 复制这样一个网址 http arduino esp82
  • 关于Cache-Control: no-cache和no-store

    在公司上班的正真上班的第一天 发现的jsp页面上 设置了response HTTP头 是设置了这三个属性 Cache Control no cache Cache Control no store Expires 这三个属性都是和网页的缓存
  • OpenMPI:介绍与an'zhuang

    前言 在跑GLowdemo时发现没装OpenMPI 因此 只有装了吧 介绍 OpenMPI 1 是一种高性能消息传递库 最初是作为融合的技术和资源从其他几个项目 FT MPI LA MPI LAM MPI 以及 PACX MPI 它是MPI
  • pytest.fixture详解

    scope分为session package module class function级别 其中function也是包含测试类的测试方法的 package指在当前contest py的package下只执行一次 如果想在某个package
  • <深度学习基础> Batch Normalization

    Batch Normalization批归一化 BN优点 减少了人为选择参数 在某些情况下可以取消dropout和L2正则项参数 或者采取更小的L2正则项约束参数 减少了对学习率的要求 现在我们可以使用初始很大的学习率或者选择了较小的学习率
  • Unity3D中Update和FixedUpdate、LateUpdate的区别

    1 MonoBehaviour Update 更新 当MonoBehaviour启用时 其Update在每一帧被调用 2 MonoBehaviour FixedUpdate 固定更新 当MonoBehaviour启用时 其 FixedUpd
  • NOI2017搞基记

    一篇很长的流水账 写的长也就是因为考得好吧 去年写NOI游记的时候 就想着快点写完就好了 以后大概会再写一篇比较矫情的回顾一下竞赛的历程的吧 虽然我这种狗逼划水语文课代表的水平 大概激励人心的效果肯定赶不上hzwer的吧 DAY 2 在家排

随机推荐

  • linux下sublimetext的中文输入问题解决方法

    InputHelper插件 好奇怪哦 竟然一个文本编辑器在linux平台下竟然原生不能切换并使用系统自带的输入法 所以就有了一系列插件 看到网上各种方法 我觉得还是使用inputhelper这个插件最简单 使用这个插件可以通过Package
  • Java实现标题相似度计算,文本内容相似度匹配,Java通过SimHash计算标题文本内容相似度

    目录 一 前言 二 关于SimHash 补充知识 一 什么是海明距离 二 海明距离的应用 三 什么是编辑距离 三 SimHash算法的几何意义和原理 一 SimHash算法的几何意义 二 SimHash的计算原理 三 文本的相似度计算 四
  • Linux添加组播

    sudo route add net 224 1 1 0 netmask 255 255 255 0 dev ens33 转载于 https www cnblogs com tiandsp p 10985838 html
  • 鲁棒优化(4):通过yalmip中的kkt命令实现CCG两阶段鲁棒优化

    两阶段鲁棒优化的原理推导部分 已经较多的文章进行分析 目前大部分同学面临的问题是 子问题模型中存在的双线性项该如何处理 目前 主流方式是 采用对偶定理或KKT条件 将第二阶段的双层问题变成单层问题 简略的思想如下 首先是原始的两阶段模型 对
  • c++中std::condition_variable最全用法归纳

    前言 建议阅读以下文章前需先对建立 std thread 多线程与std mutex 锁有一定程度的熟悉 std thread最全用法归纳 std mutex最全用法归纳 概括 使用 std condition variable 的 wai
  • 【代码分析】TensorRT sampleMNIST 详解

    目录 前言 代码分析 Main入口 网络构建 build 阶段 网络推理 infer 阶段 释放资源 前言 TensorRT 的 hello world 程序sampleMNIST是众多TensorRT初学者很好的起点 本文旨在详细分析sa
  • 使用PHP来简单的创建一个RPC服务

    RPC全称为Remote Procedure Call 翻译过来为 远程过程调用 主要应用于不同的系统之间的远程通信和相互调用 比如有两个系统 一个是PHP写的 一个是JAVA写的 而PHP想要调用JAVA中的某个类的某个方法 这时候就需要
  • VScode tab缩进太小 空格长度太小问题(Ubuntu)

    一 问题描述 Ubuntu18 04 安装vscode后 发现tab的缩进太小 初以为是tab的空格数没设置对 经确认后 没问题 一个tab是四个空格 下面两图分别是异常和正常的缩进显示 二 原因分析 在我的另一台虚拟机 ubuntu16
  • Google App Engine对Java支持情况一览

    Google App Engine对Java支持情况一览 http developer 51cto com 2009 04 09 11 06 杨赛 译 51CTO com 我要评论 0 Google App Engine的Java支持已发布
  • 华为OD机试-快递运输

    Online C compiler to run C program online include
  • Java程序的三种流程结构

    1 顺序结构 按照顺序一句一句执行 Java的基本结构就是顺序结构 2 循环结构 在顺序结构的基础下 重复执行相同或者相似的代码 for while do while 3分支结构 有条件的去执行某个语句 条件满足就执行下面的语句 条件不满足
  • SQL注入攻击流程

    1 判断SQL注入点 本质原理是 找一个需要后台处理后提交给数据库的点 所有的输入只要和数据库进行交互的 都有可能触发SQL注入 一般为三大类 Get参数触发SQL注入 POST参数触发SQL注入 Cookie触发SQL注入 而验证是否存在
  • 华为手机打开图片很慢是怎么回事_华为手机相册打开很慢怎么解决?

    造成卡顿的原因 相册里存储信息较多 由于手机读取相册中的信息需要一定时间 可能出现卡顿现象 系统卡顿通用解决办法 请保持手机电量高于 20 手机低电量时为了延长待机时间 保护手机 会对手机的性能进行限制 卸载第三方手机管家类软件 如果您的手
  • 【Python】首届一年一度秀代码时间罒ω罒

    声明 以下代码大家如果有兴趣的话可以用LDLE代码编辑器运行看看 NO 1 万能计算器 难度系数 1 算术运算符 a input 请输入第一个数字 b input 请输入第二个数字 a float a b float b print 和 a
  • 小韭菜

    大家好 我是章鱼猫 今天给大家推荐的这个项目是 leeks 原名小韭菜 后改名为 leeks 这是一个 IDEA 查看股票 基金插件 写代码的同时还能瞄一眼股票 基金 真的是工作 搞基两不误 安装 下载当前最新的安装包 leeks 1 3
  • 解决 linux在 VMware中的问题 汇总 (***)

    目录 解决Ubuntu在VMware中不能全屏的问题 无需安装 VMware tools 解决虚拟机与宿主机的文件共享问题 Ubuntu Window下 X2Go 安装 连接 同步 上传文件夹 复制 粘贴 桌面共享 Linux挂载共享文件夹
  • 命令行中Gradle创建项目的打包和运行,新手起步

    第一步 下载 下载 https gradle org 官网 gt install gt releases page gt binary only 下载 下载页 https gradle org releases close notifica
  • vue中在字符串中添加点击事件

    如果你在用vue写项目中遇到了需要在字符串中写点击事件的奇葩写法 你会不会感到很头疼 我不知道你会不会 反正我肯定会 没办法谁叫咋遇到了呢 话不多说 直接上代码 html div class ml 12 mr 12 mt 8 div 采用的
  • 华为OD机试 - 可以组成网络的服务器(Java)

    题目描述 在一个机房中 服务器的位置标识在 n m 的整数矩阵网格中 1 表示单元格上有服务器 0 表示没有 如果两台服务器位于同一行或者同一列中紧邻的位置 则认为它们之间可以组成一个局域网 请你统计机房中最大的局域网包含的服务器个数 输入
  • Docker-compose安装及使用教程

    docker compose安装 方法一 首先执行pip V确认是否已安装pip 若提示 未找到命令 则根据以下步骤执行 若显示pip版本则直接执行步骤2安装即可 1 安装pip wget https bootstrap pypa io g