返回顶部
首页 > 资讯 > 服务器 >Docker Compose 实践及梳理
  • 243
分享到

Docker Compose 实践及梳理

2024-04-02 19:04:59 243人浏览 薄情痞子
摘要

Docker Compose 可以实现 Docker 容器集群的编排,可以通过 docker-compose.yml 文件,定义我们的服务及其需要的依赖,轻松地运行在测试、生产等环境

Docker Compose 可以实现 Docker 容器集群的编排,可以通过 docker-compose.yml 文件,定义我们的服务及其需要的依赖,轻松地运行在测试、生产等环境

文档

Product manuals

Compose file version 3 reference

Docker 从入门到实践 【中文】

安装 Compose

Compose 依赖 Docker Engine,所有要保证环境安装了 Docker,可参考官方教程,主要分为两步:


# 1. 下载 Compose 只执行文件到 usr/local/bin/ 目录
# 下载失败可以参考下一小结提供地址安装
sudo curl -L "https://GitHub.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 2. 对 Compose 可执行文件添加运行权限
sudo chmod +x /usr/local/bin/docker-compose

# 输入下面命令查看帮助,测试安装是否成功
docker-compose -h

Compose 开源在 Docker 官方的 gitHub 仓库:docker/compose,所有的 Compose 都会发布在仓库的 Releases 里,步骤1就是使用 curl 命令从 Releases 里下载可执行文件,uname -suname -m 可以读取系统的内核名称和硬件架构,用来匹配需要的 Compose 版本, curl 的 -L 参数会让 Http 请求跟随重定向(默认不跟随),-o (小写o) 会将服务器响应保存成文件,直接下载到:usr/local/bin/ 下,文件名为:docker-compose,因为这个路径已经在环境变量中了,所以完成步骤2,添加可执行权限后,就可以在任意位置使用了

直接从 GitHub 下载比较慢可以通过以下地址下载:


# https://Vuepress.mirror.docker-practice.com/compose/install/
sudo curl -L https://download.fastgit.org/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

入门

Compose 的模版指令与 Docker 的 run 命令相关参数很相似,忘记了 docker 命令可以参考之前的一篇博客:Docker 实践及命令梳理

Compose 中有两个重要的概念:

  • 服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例
  • 项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义

docker-compose.yml 格式如下,注意:YAML 文件必须要键值之间的 : 后面必须有一个空格,缩进表示层级,要注意缩进
有使用到的 volumes 和 networks 必须声明


# 指定版本
version: "3"
# 服务的集合
services:
  # 其中一个服务,服务名为:WEBapp
  webapp:
    # 指定该服务使用的镜像
    image: examples/web
    # 端口映射
    ports:
      - "80:80"
    # 数据卷
    volumes:
      - "/data"

简单上手

在一个 Compose 中启动 Tomcat, Mysql, Redis,创建 docker-compose.yml


version: "3.0"

services:
  tomcat:
    container_name: mytomcat # --name
    image: tomcat:8.0-jre8
    ports:
      - "8080:8080"
    volumes:
      - "tomcatwebapps:/usr/local/tomcat/webapps"
    networks:
      - some_network
    # tomcat 服务依赖于 mysql 和 redis
    depends_on:
      - mysql
      - redis
  mysql:
    container_name: mysql
    image: mysql:5.7.32
    ports:
      - "3306:3306"
    volumes:
      - "mysqldata:/var/lib/mysql"
      - "mysqlconf:/etc/mysql"
    environment:
      - MYSQL_ROOT_PASSWord=1234
    networks:
      some_network:
  redis:
    container_name: redis
    image: redis:5.0.10
    ports:
      - "6379:6379"
    volumes:
      - "redisdata:/data"
    command: "redis-server --appendonly yes"
    networks:
      some_network:

# 使用到的 volumes 和 networks 必须声明
volumes:
  tomcatwebapps: 
  mysqldata:
  mysqlconf:
  redisdata: 

networks:
  # 声明名称为 “some_network” 的网络
  some_network:

docker-compose.yml 所在路径执行 docker-compose up 启动 Compose 项目,它会下载使用到的镜像并在前台运行打印日志,可以使用 Ctrl + C 终止

如果需要后台运行执行 docker-compose up -d,这时候使用 docker ps 可以看到 Compose 已经根据 yaml 创建了相关的容器,使用 docker-compose down 停止 Compse 并移除自动创建的网桥

使用 docker network ls 查看网络或者 docker volume ls 查看数据卷,Compose 定义的网络或数据卷名称格式为:docker-compose.yml所在文件夹的名称加上下划线再加上 yaml 中定义名称,如果在 "dockerfile" 文件夹下创建 yaml 文件并启动,那么网络名称为:dockerfile_some_network

tomcat 服务使用了 depends_on,表示它依赖于 redis 和 mysql 服务,Compose 将优先启动它的依赖再启动它

命令梳理

Docker Compose 的命令与 Dokcer 类似,可以使用 --help 参数,就可以查询到到对应命令的使用方法


docker-compose --help

默认启动的模版文件名为 docker-compose.yml,可以使用 -f 指定自定义的模版文件
可以通过 config 命令,检查模版文件语法是否正确

docker-compse 也包含很多子命令:
启动停止相关:up, down, restart, stop, pasue, unpause

资源相关:ps, top, kill, run

进入容器:exec

查看日志:logs

很多子命令都可以在后面跟上某个具体的 service 名称,定向地操作,下面不一一举例,
可以使用docker-compose help 再跟上子命令名称,查询其用法


# 后台启动 yaml 定义的所有容器
docker-compose up -d
# 仅启动 mysql 这个service,会启动其依赖的 service
docker-compose up mysql 指定启动的server名称,
# 停止容器并移除自动创建的网桥
docker-compose down 
# 重启所有 service 后面可以指定上某个具体的 service
docker-compose restart

# 暂停 和 恢复
docker-compose pause
docker-compose unpause

# 进入 redis 这个 service 使用 exit 退出
docker-compose exec redis bash

# 列出当前 yaml 中定义的容器的信息
docker-compose ps

# 删除当前 yaml 中定义的容器,需要先 stop,后面可以指定上某个具体的 service
docker-compose rm

# 查看各个 service 容器内运行的进程情况
docker-compose top

# 查看日志默认查看 yaml 所有的,可以跟上具体 service
# -f 可以保持跟踪,新的日志会马上显示在屏幕上
docker-compose logs

参考资料

curl 的用法指南
编程不良人】Docker容器技术&Docker-Compose实战

到此这篇关于Docker Compose 实践及梳理的文章就介绍到这了,更多相关Docker Compose 实践内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Docker Compose 实践及梳理

本文链接: https://lsjlt.com/news/135724.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Docker Compose 实践及梳理
    Docker Compose 可以实现 Docker 容器集群的编排,可以通过 docker-compose.yml 文件,定义我们的服务及其需要的依赖,轻松地运行在测试、生产等环境...
    99+
    2024-04-02
  • docker-compose安装Jenkins的实践笔记
    创建目录 cd /usr/local/docker/ mkdir jenkins-docker cd jenkins-docker 创建Dockerfile vi Dock...
    99+
    2024-04-02
  • 【云原生】Docker Compose从入门到实践
    前言 大家好,本文是讲解了如何安装使用 Docker Compose,Compose 模板文件的常用指令,以及Docker Compose实战。希望对大家有所帮助~ 目录 前言一、概述二...
    99+
    2023-09-12
    docker 云原生 linux mysql 容器
  • Docker | Docker技术基础梳理(一)
    为什么学习DockerDocker 可以让你将所有应用软件以及它的以来打包成软件开发的标准化单元。Docker 容器将软件以及它运行安装所需的一切文件(代码、运行时、系统工具、系统库)打包到一起,这就保证了不管是在什么样的运行环境,总是能以...
    99+
    2023-06-04
  • CodeReview方法论与实践总结梳理
    目录引言为什么要CR他山之石2.1 某大厂A2.1.1 代码评审准则2.1.2 代码评审原则2.1.3 代码审核者应该看什么2.2 某大厂B2.3 某大厂C我们怎么做 CR3.1 作...
    99+
    2023-02-07
    Code Review 方法论 Code Review
  • docker-compose+nginx部署前后端分离的项目实践
    目录安装docker安装必要的系统工具软件源信息切换安装配置镜像加速器安装docker-compose安装权限修改解决js、css文件404的情况Vue项目配置安装docker 安装...
    99+
    2024-04-02
  • docker-compose安装及执行命令
    Compose介绍 Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不...
    99+
    2024-04-02
  • docker/docker-compose 部署 nginx+mysql+wordpress 实战
    1. 网络架构图 MariaDB 作为后面的关系型数据库,端口号是 3306; WordPress 是中间的应用服务器,使用 MariaDB 来存储数据,它的端口是 80; Nginx 是前面的反向...
    99+
    2023-09-06
    docker nginx mysql
  • Docker Compose构建Jenkins的实现
    目录创建目标文件夹创建docker-compose.yml解锁 Jenkins插件安装Jenkins手动安装插件配置 JDK & Maven安装动态参数插件配置 Jenkin...
    99+
    2024-04-02
  • Docker Compose部署及基础使用的方法
    本篇内容主要讲解“Docker Compose部署及基础使用的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Docker Compose部署及基础使用的方法...
    99+
    2024-04-02
  • docker-compose up -d遇到的问题及解决
    目录docker-compose up -d的问题docker-compose up -d <name>; No such service: <name>问题...
    99+
    2023-03-19
    docker-compose up -d docker-compose
  • docker-compose安装RabbitMQ及插件操作步骤
    目录准备工作docker-compose脚本操作步骤执行命令进入容器内,启动我们刚刚添加的插件查看插件是否有安装成功优化搭建步骤目的思路步骤准备工作 RabbitMQ默认不带延迟队...
    99+
    2023-01-12
    docker-compose安装RabbitMQ docker compose
  • Docker | Docker技术基础梳理(三) - 容器生命周期管理
    什么是容器?容器(Container):容器是一种轻量级、可移植、并将应用程序进行的打包的技术,使应用程序可以在几乎任何地方以相同的方式运行,Docker将镜像文件运行起来后,产生的对象就是容器。容器相当于是镜像运行起来的一个实例且容器具备...
    99+
    2023-06-04
  • 实践:Docker容器与镜像管理
    Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件;借助 Docker,您可以与管理应用程序相同的方式来管理基础架构;通过利用 Docker 的方法来快速交付,测...
    99+
    2023-06-04
  • Docker的compose ymal文件实例分析
    本篇内容介绍了“Docker的compose ymal文件实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!docker-co...
    99+
    2023-07-04
  • 怎么通过docker和docker-compose实现eureka高可用
    这篇文章主要介绍“怎么通过docker和docker-compose实现eureka高可用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么通过docker和doc...
    99+
    2024-04-02
  • Docker-compose封装mysql并初始化数据以及redis
    现有一台服务器,需要部署mysql和redis。其中mysql容器,需要在第一次启动时,执行sql文件。redis保持空数据即可。 关于Docker-compose的安装,请参考连接:https://www.cnblogs.com...
    99+
    2023-01-31
    初始化 数据 compose
  • docker compose部署主从复制的实现
    目录配置解析服务搭建目录结构Compose File实例配置启动服务测试受限于 Redis 单点性能,加上我们对数据天生就有的备份的需求,因此 Redis 提供了主从复制的服务。 本...
    99+
    2024-04-02
  • docker-compose容器互相连接的实现
    一些示例未整理 haproxy 与nginx 容器连接 ## 服务的compose 编写 mkdir /mnt/compose vim docker-compose.yml web1...
    99+
    2024-04-02
  • Docker Compose搭建Wordpress服务实现详解
    目录前言编写docker-compose.yaml注意点 前言 最近在研究wordpress独立建站,在项目部署的时候也踩了一些坑,为了避免再次踩坑,特此通过此文章记录一下。 编写...
    99+
    2023-03-10
    Docker Compose搭建Wordpress Docker Compose搭建服务
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作