DockerCompose - 容器编排、模板命令、compose命令、Pottainer 可视化界面管理(一文通关)

目录

一、DockerCompose 容器编排

1.1、简介

1.2、Docker-Compose 安装

1.2.1、在线安装

1.2.2、离线安装

1.3、docker-compose.yml 中的模板命令

前置说明

模板命令

1.4、DockerCompse 命令

前置说明

up

down

exec

ps

restart

rm

top

pause暂停 和 unpause恢复

logs

二、Pottainer Docker 可视化界面

2.1、简介

2.2、使用


一、DockerCompose 容器编排


1.1、简介

a)为什么使用 DockerCompose?(纯 Docker 进行项目部署存在问题)

  • 容器编排:例如,一个完整的微服务项目势必会用到多个容器进行配置,而这多个容器之间也会存在某种依赖,也就是说某些容器运行需要其他容器优先启动之后才能正常运行,这就需要使用 DockerCompose 进行容器编排.
  • 方便部署:纯 Docker 部署,需要将一个项目涉及到的 N 多个容器进行一一部署,因此日后如果需要进行多个服务器部署就会显得相当麻烦.  而使用 DockerCompose 只需要一条命令即可解决.

b)什么是 DockerCompose?

Compose 的定位就是对多个 Docker 容器的管理,也就是说对 项目 所涉及到的所有容器整合到一起,对这组容器进行按照指定顺序启动.

c)如何使用 DockerCompose?

首先明白以下两个概念:

  • 项目:由一组管理的服务(容器)组成的一个完整的业务单元,在 docker-compose.yml 文件中定义.
  • 服务:一个项目中的某个容器就是一个服务.

因此,我们只需要在 docker-compose.yml 文件中编写容器编排,之后就可以通过 DockerCompose 提供的相关命令对此文件进行操作,进而实现容器编排.

1.2、Docker-Compose 安装

Tip:只有 Linux 平台上安装 Docker 时不会自动安装 DockerCompose。Windows、Macos 安装 Docker 时会自动安装 DockerCompose.

1.2.1、在线安装

a)在线安装 DockerCompose 

# 安装
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

b)修改权限

# 修改权限
chmod +x /usr/local/bin/docker-compose

1.2.2、离线安装

a)下载 docker-compose 脚本

b)放入 /usr/local/bin 目录下.

c)修改权限:chmod +x /usr/local/bin/docker-compose

1.3、docker-compose.yml 中的模板命令

前置说明

docker-compose.yml 文件一般分成两个部分,一个部分使用来说明当前 DockerCompose 文件的版本(不同版本语言大同小异).  另一个部分就是进行容器编排的.

a)指定版本:docker-compose.yml 文件的第一个命令一般都是用于指定当前 DockerCompose 文件的版本。

可以先通过命令查看自己 DockerCompose 的版本.

可以对应下标找到自己的版本(官网也有) 

Compose file formatDocker Engine release
Compose specification19.03.0+
3.819.03.0+
3.718.06.0+
3.618.02.0+
3.517.12.0+
3.417.09.0+
3.317.06.0+
3.217.04.0+
3.11.13.1+
3.01.13.0+

因此我这里就是用 3.5 就ok,那么对应的 docker-compose.yml 文件如下

version: "3.5"

b)容器编排:例如需要编排一个 tomcat:8.0 的镜像.

# 版本
version: "3.5"# 管理服务
services:tomcat: # 自定义服务名称(id)image: tomcat:8.0 # 基于哪个镜像ports: # 映射 宿主机:容器 端口- 8080:8080

以上只是给出一个小示例,下文中会具体讲到~

模板命令

以下 docker-compose.yml 文件中包含了所有常用的模板命令.

# 版本
version: "3.5"# 声明使用网桥
networks:cyk:# 声明别名数据卷
volumes:mysqlData:# 管理服务
services:apps: # 自定义服务id
#    container_name: web_apps # a.指定 name(不推荐使用)build: # 1.根据 Dockerfile 构建镜像,并启动容器context: ./ # 用来指定 Dockerfile 上下文目录dockerfile: Dockerfile # 指定 Dockerfile 文件名称ports: # 2.映射端口- "8081:8081"
#    expose: # b.暴露端口(不建议使用)
#      - 8081depends_on: # 3.依赖服务- mysql #这里就是指在 mysql 启动之后再启动当前服务# command: ["test.jar"] # 4.覆盖启动容器后的命令(覆盖CMD)networks: # 5.指定网桥- cyk # 这个网桥需要声明才能使用mysql:image: mysql:5.7 # 6.指定启动镜像ports:- "3306:3306"# environment: # 7.配置环境变量(适用于保密性不高的参数)# 两种写法(推荐字符串形式)# MYSQL_ROOT_PASSWORD: root# - "MYSQL_ROOT_PASSWORD=root"env_file: # 8.配置环境变量(适用于保密性高的参数,例如 MySQL 数据库密码)- ./.envvolumes: # 9.数据卷映射- mysqlData:/var/lib/mysql # 别名数据卷需要声明(例如此处的 mysqlData)restart: always # 10.指定服务启动时机(always 表示 docker 启动就立即启动)

常用模板指令解释:

  1. build:指定需要根据哪个 Dockerfile 文件构建镜像(通过 context 参数指定上下文目录;通过 dockerfile 参数指定 Dockerfile 文件),并运行.
  2. ports:指定宿主机和容器端口的映射,相当于 docker run -p 
  3. depends_on:指定当前容器依赖于哪个容器,被依赖的容器会先启动(解决服务的先后启动问题).
  4. command:覆盖 dockerfile 文件中的 CMD 指令.
  5. networks:指定启动容器使用的网桥(需要有声明).
  6. image:指定启动容器使用的镜像是谁,相当于 docker run image(镜像名).
  7. environment:指定容器启动时的环境变量,相当于 docker run -e 选项(适用于密保性不高的参数).
  8. env_file:指定容器启动时的环境变量,相比于 environment 参数,此命令指定的是一个文件(文件中包含环境变量值),并且建议文件名为 .env (适用于保密性高的参数,例如 MySQL 数据库密码).
  9. volumes:指定宿主机和容器数据卷的映射,相当于 docker run -v
  10. restart:指定当前服务的运行情况,例如 always 表示跟随 docker 引擎的启动而启动,相当于 docker run --restart=always

不推荐使用的模板指令解释:

a. container_name:指定 docker-compose 启动容器名称(不推荐原因:写死容器名后,不利于后期修改维护).

b.expose:指定暴露的端口号(不推荐原因:expose 一般都写在 Dockerfile 文件中,不需要再 docker-compose.yml 文件中重复声明).

1.4、DockerCompse 命令

前置说明

docker-compose 命令语法如下:

docker-compose 命令 项目|服务id

docker-compose 命令如果没有指定 服务id,默认是对整个项目的操作!

Ps:docker-compose 中只需要重点掌握 up 和 down 就可以,因为其他指令基本都可以通过 docker 原生命令解决~

up

此命令十分强大,它将禅师自动完成构建镜像、(重新)创建服务、启动服务,并关联服务相关容器的一系列操作(简单来说就是按照 docker-compose.yml 文件内容来启动项目).

# 启动整个项目
docker-compose up
# 启动 docker-compose.yml 文件中对应 服务id 的容器
docker-compose up 服务id

down

关闭所有容器,并移除网络.

# 关闭整个项目
docker-compose down
# 关闭指定服务
docker-compose down 服务id

exec

进入某个服务内部.

docker-compose exec 服务id bash

ps

列出所有运行的服务.

docker-compose ps

restart

重启整个项目或指定服务.

# 重启整个项目
docker-compose restart
# 重启指定服务
docker-compose restart 服务id
# 通过 -t 参数指定重启前停止容器的超时时间(默认是 10s),例如指定超时时间为 20s
docker-compose restart -t 20 服务id

rm

删除整个项目或者指定服务.

# 整个项目
docker-compose rm
# 删除指定服务
docker-compose rm 服务id
# 强制删除
docker-compose rm -f 服务id
# 删除容器所挂载的数据卷
docker-compose rm -v 服务id

top

查看整个项目中所有服务容器内运行进程,或者查看某个指定服务的容器的进程.

docker-compose top 服务id

pause暂停 和 unpause恢复

暂停或者恢复整个项目所有服务或者指定服务.

docker-compose pause|unpause 服务id

logs

查看整个项目中所有服务运行日志,或者指定服务的运行日志.

# 通过 -f 参数可以达到实时监控的效果
docker-compose logs -f 服务id

二、Pottainer Docker 可视化界面


2.1、简介

第三方公司开源 Portainer 项目,用来对 docker 引擎中运行所有容器进行可视化展示和管理.

2.2、使用

直接使用以下命令拉取并运行:

docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker/sock:/var/run/docker.sock -v portainer_data:/dataportainer/portainer

8080 端口映射的是 docker 引擎,方便拉取 docker 镜像,容器的运行的数据.

9090 端口就是我们可以访问的可视化界面.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/586505.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux下的进程布局与ububtu操作系统下的proc文件夹学习笔记一

相关内容我写在公众号,写的挺详细的,欢迎关注我的公众号。请使用鼠标右键,新建标签页打开,直接点击显示参数错误,不知道怎么回事?linux下的进程布局与ububtu操作系统下的proc文件夹学习笔记 (qq.com)https:…

Windows下配置GCC(MinGW)环境

一、下载并安装MinGW 步骤1:下载MinGW安装器 前往MinGW的官方下载源,通过以下链接可以获取到最新版的MinGW安装程序: 网页地址:https://sourceforge.net/projects/mingw/files/ [MinGW 下载地址](https://sourceforge.net/proj…

二级路由的配置以及注意项

二级路由 比如说LayOut组件是父亲,LayOut和ArtComp是儿子,那我们怎么给儿子配路由呢? 1、首先在router下的index.js导入组件,配置规则,详细如下 // 导入路由相关组件 import LayOut from /views/LayOut import UserC…

页面布局--Flexbox的自动边距

标题页面布局–Flexbox的自动边距 通过简单的margin:auto,我们就能实现元素的多种对齐方式。 假设我们在盒子模型里有四个元素: 先给容器使用flex布局: .container {display: flex;justify-content: flex-start;align-items: center;gap: 6…

STM32F407-14.3.10-表73具有有断路功能的互补通道OCx和OCxN的输出控制位-00x00

如上表所示,MOE0,OSSI0,CCxE0,CCxNE0时,OCx与OCxN的输出状态取决于GPIO端口上下拉状态。 ---------------------------------------------------------------------------------------------------------------------…

Windows环境安装和运行shell脚本,值得收藏!

1. 安装步骤 1.1 下载安装包 官网下载地址Git - Downloads, 我们选择 Windows 版本; CSDN下载地址:windows版本下载; 1.2 环境变量配置 在系统变量中找到Path,将git安装目录下的bin(我的安装路径&#x…

【华为机试】2023年真题B卷(python)-计算最大乘积

一、题目 题目描述: 给定一个元素类型为小写字符串的数组,请计算两个没有相同字符的元素长度乘积的最大值,如果没有符合条件的两个元素,返回0。 二、输入输出 输入描述: 输入为一个半角逗号分隔的小写字符串的数组,2 &…

数字PID算法基础

数字PID是由编程语言实现的PID算法并烧录到控制芯片中,控制芯片与电机驱动连接,将PID控制算法的输出转换为PWM控制信号发送给电机驱动电路,电机驱动电路与直流电机相连并将PWM控制信号转换为具有相同占空比的PWM供电电压,通过对输…

Jmeter之从CSV文件获取数据

新建csv文件 新建一个excel,填充业务数据,然后导出csv格式文件。 添加一个CSV数据文件 使用

认识K8S的基本概念和原理

K8S:Kubernetes8个字母省略就是k8s 自动部署,自动扩展和容器化部署的应用程序的一个开源系统 k8s是负责自动化运维管理多个容器化程序的集群。是一个功能强大的容器编排工具。分布式和集群化的方式进行容器管理。 k8s的版本:1.15或1.18。使…

RO-NeRF论文笔记

RO-NeRF论文笔记 文章目录 RO-NeRF论文笔记论文概述Abstract1 Introduction2 Related Work3 Method3.1 RGB and depth inpainting network3.2 Background on NeRFs3.3 Confidence-based view selection3.4 Implementation details 4 Experiments4.1 DatasetsReal ObjectsSynthe…

YOLOv5算法进阶改进(9)— 引入ASPP | 空洞空间金字塔池化

前言:Hello大家好,我是小哥谈。ASPP是空洞空间金字塔池化(Atrous Spatial Pyramid Pooling)的缩写。它是一种用于图像语义分割任务的特征提取方法。ASPP通过在不同尺度上进行空洞卷积操作,从而捕捉到图像中不同尺度的上下文信息。ASPP的主要思想是在输入特征图上应用多个不…

华为服务器安装银河麒麟V10操作系统(IBMC安装)

iBMC是华为面向服务器全生命周期的服务器嵌入式管理系统。提供硬件状态监控、部署、节能、安全等系列管理工具,标准化接口构建服务器管理更加完善的生态系统。 服务器BMC IP:192.168.2.100 一、准备工作 1、确保本机和服务器BMC管理口在同一网络 2、银…

浅层神经网络时间序列预测和建模

目录 时间序列网络 NARX 网络 NAR 网络 非线性输入-输出网络 定义问题 使用神经网络时间序列拟合时间序列数据 使用命令行函数拟合时间序列数据 选择数据 选择训练算法 创建网络 准备要训练的数据 划分数据 训练网络 测试网络 查看网络 分析结果 闭环网络 向…

第七课:计算机网络、互联网及万维网(WWW)

第七课:计算机网络、互联网及万维网(WWW) 第二十八章:计算机网络1、局域网 Local Area Networks - LAN2、媒体访问控制地址 Media Access Control address - MAC3、载波侦听多路访问 Carrier Sense Multiple Access - CSMA4、指数…

Stable Diffusion 系列教程 - 5 ControlNet

ControlNet和LORA的定位都是对大模型做微调的额外网络。作为入门SD的最后一块拼图是必须要去了解和开发的。为什么ControlNet的影响力如此的大?在它之前,基于扩散模型的AIGC是非常难以控制的,扩散整张图像的过程充满了随机性。这种随机性并不…

激光 GPS 卫星实现无边界精度

GPS 卫星领域已经发生了重大创新,将变得更加精确和强大。我们正在谈论激光后向反射器阵列( LRA)的发展。 这些可以精确跟踪地球的形状、自转和环境变化,从而扩展卫星的能力。 GPS卫星的主要用途是确定各种情况下的位置&#xff…

C++继承与派生——(7)类型兼容原则

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 站在巨人的肩上,是为了超过…

nodejs+vue+ElementUi摄影预约服务网站系统91f0v

本系统提供给管理员对首页,个人中心,用户管理,员工管理,摄影套餐管理,套餐系列管理,客片欣赏管理,摄影预约管理,摄影订单管理,取片通知管理,摄影评价管理&…

【linux】Linux管道的原理与使用场景

Linux管道是Linux命令行界面中一种强大的工具,它允许用户将多个命令链接起来,使得一个命令的输出可以作为另一个命令的输入。这种机制使得我们可以创建复杂的命令链,并在处理数据时提供了极大的灵活性。在本文中,我们将详细介绍Li…