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

news2025/1/17 13:45:46

目录

一、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.暴露端口(不建议使用)
#      - 8081
    depends_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 数据库密码)
      - ./.env
    volumes: # 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.coloradmin.cn/o/1345324.html

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

相关文章

【unity中使用高度图创建地图】

unity中使用高度图创建地图 插件 讲解案例为unity2022版本 这个是插件地址 也可以在资源商店中搜索 terrain-tools 介绍 Terrain Tools入门Terrain Tools是一个软件包,你可以选择将其添加到Unity 2019.1或更高版本中的任何项目中。要将该软件包添加到你的项目…

python+django校园篮球论坛交流系统v5re9

本课题使用Python语言进行开发。基于web,代码层面的操作主要在PyCharm中进行,将系统所使用到的表以及数据存储到MySQL数据库中 技术栈 系统权限按管理员和用户这两类涉及用户划分。 (a) 管理员;管理员使用本系统涉到的功能主要有:首页、个人中…

dash 中的模式匹配回调函数Pattern-Matching Callbacks 8

模式匹配 模式匹配回调选择器 MATCH、ALL 和 ALLSMALLER 允许您编写可以响应或更新任意或动态数量组件的回调函数。 此示例呈现任意数量的 dcc. Dropdown 元素,并且只要任何 dcc. Dropdown 元素发生更改,就会触发回调。尝试添加几个下拉菜单并选择它们的…

56.网游逆向分析与插件开发-游戏增加自动化助手接口-通过UI分析自动药水设定功能

内容来源于:易道云信息技术研究院VIP课 上一节内容:自动药水设定功能的逆向分析-CSDN博客 这次是假设没有之前的思路积累的话,怎样去找按钮事件。 通过ui当做切入点去做,就是一个窗口它显示不显示,游戏怎样控制这个…

【owt-server】一些构建项目梳理

【owt-server】清理日志:owt、srs、ffmpeg 【owt】p2p client mfc 工程梳理【m98】webrtc vs2017构建带符号的debug库【OWT】梳理构建的webrtc和owt mfc工程 m79的mfc客户端及owt-client

【PyQt】(自定义类)QIcon派生,更易用的纯色Icon

嫌Qt自带的icon太丑,自己写了一个,主要用于纯色图标的自由改色。 当然,图标素材得网上找。 Qt原生图标与现代图标对比: 没有对比就没有伤害 Qt图标 网络素材图标 自定义类XJQ_Icon: from PyQt5.QtGui import QIc…

数字PID算法基础

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

MacBook查看本机IP

嘚吧嘚 其实这也不是什么困难的问题,但是今年刚刚入坑Mac,外加用的频率不是很高,每次使用的时候都查,用完就忘,下次用的时候再查🤮。真的把自己恶心坏了🙈。 所以写篇文章记录一下&#x1f92…

Linux:apache优化(4)—— 隐藏版本号

运行环境 yum -y install apr apr-devel cyrus-sasl-devel expat-devel libdb-devel openldap-devel apr-util-devel apr-util pcre-devel pcre gcc make zlib-devel 源码包配置 ./configure --prefix/usr/local/httpd --enable-cgi --enable-rewrite --enable-so --enabl…

MySQL数据库的安装与环境配置

下载 下载MySQL8 安装 解压 配置MySQL环境变量 系统环境变量path D:\ProgramFiles\mysql-8.0.20-winx64\bin 1.点击属性 2.点击高级系统设置 3.点击环境变量 4.在系统变量中找到path 注意这里不是用户变量 5.新建后输入解压的地址 MySQL初始化和启动 以管理员身份运行cmd…

macos下转换.dmg文件为 .iso .cdr文件的简单方法

为了让镜像文件在mac 和windows平台通用, 所以需要将.dmg格式的镜像文件转换为.iso文件, 转换方法也非常简单, 一行命令即可 hdiutil convert /path/to/example.dmg -format UDTO -o /path/to/example.iso 转换完成后的文件名称默认是 example.iso.cdr 这里直接将.cdr后缀删…

Efficient Classification of Very Large Images with Tiny Objects(CVPR2022补1)

文章目录 Two-stage Hierarchical Attention SamplingOne-stageTwo-Stage内存需求 Efficient Contrastive Learning with Attention Sampling Two-stage Hierarchical Attention Sampling 一阶段缩放是hw,提取的特征是h1w1, 二阶段缩放是uv(…

Vue中的默认插槽详解

Vue中的默认插槽详解 在 Vue 中,插槽(Slot)是一种非常强大且灵活的机制,用于在组件中插入内容。Vue 提供了两种类型的插槽:默认插槽(Default Slot)和具名插槽(Named Slot&#xff09…

24、Web攻防-通用漏洞SQL注入MYSQL跨库ACCESS偏移

文章目录 一、SQL注入原理   脚本代码在与数据库进行数据通讯时(从数据库取出相关数据进行页面显示),使用预定义的SQL查询语句进行数据查询。能通过参数传递自定义值来实现SQL语句的控制,执行恶意的查询操作,例如查询…

[Angular] 笔记 20:NgContent

chatgpt: 在Angular中&#xff0c;NgContent是用于内容投影&#xff08;Content Projection&#xff09;的一个重要概念。它允许你在一个组件中插入内容&#xff0c;并将这些内容投影到另一个组件中。 当你在一个组件中使用<ng-content></ng-content>标签时&…

Python新手教程 —— Hello, World!

文章目录 Hello, World!作者自述关于本系列什么是编程语言什么是Python安装Python运行Python3解释器IDLE编写代码文件 本文复习Python技术资源分享1、Python所有方向的学习路线2、学习软件3、入门学习视频4、实战案例5、清华编程大佬出品《漫画看学Python》6、Python副业兼职与…

黑马程序员SSM框架-Maven进阶

分模块开发与设计 分模块开发意义 分模块开发 依赖管理 依赖传递 依赖传递冲突问题 可以点击红框按钮查看依赖情况。 可选依赖和排除依赖 继承和聚合 聚合 聚合工程开发 继承 聚合和继承的区别 属性 属性的配置与使用 资源文件引用属性 其他属性&#xff08;了解&#xff0…

<JavaEE> 协议格式 -- 应用层协议 HTTP

目录 一、HTTP的概念 1&#xff09;什么是HTTP协议&#xff1f; 2&#xff09;什么是超文本&#xff1f; 二、HTTP协议格式 三、请求&#xff08;request&#xff09; 1&#xff09; 方法&#xff08;Method&#xff09; 1> GET方法 2> POST方法 3> GET和POS…

lv13 内核模块参数和依赖

1 模块传参 1.1 模块参数设置 将指定的全局变量设置成模块参数 module_param(name,type,perm);//将指定的全局变量设置成模块参数 /* name:全局变量名 type&#xff1a;使用符号 实际类型 传参方式bool bool insmod xxx.ko 变量名0 …

拍照就能建模!手机就能访问! 这个技术正成为宣传新手段!

随着人工智能技术的不断进步&#xff0c;现在可以通过拍摄照片结合AI技术来实现3D模型生成。这种技术的出现&#xff0c; 不仅能更加方便快捷地创建3D模型&#xff0c;而且还能真实复原现实中物件的质感、纹理等。同时&#xff0c;极大地降低了各行业对3D技术的应用门槛&#x…