什么是Docker和Docker-Compose?

Docker的构成

  1. Docker仓库:https://hub.docker.com

  2. Docker自身组件

    Docker Client:Docker的客户端
    Docker Server:Docker daemon的主要组成部分,接受用户通过Docker Client发出的请求,并按照相应的路由规则实现路由分发
    Docker镜像:Docker镜像运行之后变成容器(docker run)

Docker的基本组成

  • 镜像
    Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。
  • 容器
    Docker 利用容器(Container)独立运行的一个或一组应用,应用程序或服务运行在容器里面,容器就类似于一个虚拟化的运行环境,容器是用镜像创建的运行实例。就像是Java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
  • 仓库
    仓库(Repository)是集中存放镜像文件的场所。仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
    最大的公开仓库是 Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云 、网易云等。
    docker镜像文件类似于Java的类模板,而docker容器实例类似于java中new出来的实例对象。

镜像的特性

在这里插入图片描述
在这里插入图片描述
当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”。
所有对容器的改动 - 无论添加、删除、还是修改文件都只会发生在容器层中。只有容器层是可写的,容器层下面的所有镜像层都是只读的。

docker基础命令

systemctl start docker启动docker
systemctl stop docker停止docker
systemctl restart docker重启docker
systemctl status docker查看docker状态
systemctl enable docker开机启动
docker info守护进程的系统资源设置
docker search 镜像名称docker仓库的查询
docker pull 镜像名称下载docker仓库
docker imagesdocker镜像的查询
docker rmi 镜像名称iddocker镜像的删除
docker ps容器的查询
docker run 镜像名称+版本号(docker run mysql:8.0.29)容器的创建启动
docker start/stop容器启动停止

systemctl 是管理 Linux 的 systemd 服务的工具,systemctl 只能用于linux系统。

run命令扩展

在这里插入图片描述

单一容器管理

每个容器被创建后,都会分配一个CONTAINER ID作为容器的唯一标示,后续对容器的启动、停止、修改、删除等所有操作,都是通过CONTAINER ID来完成偏向于数据库概念中的主键。

docker ps --no-trunc查看
docker start/stop CONTAINER ID启动/停止
docker start/stop wordPress通过容器别名启动/停止
docker kill 容器id或容器名强制停止容器
docker rm 容器id删除已停止的容器
docker inspect wordPress查看容器所有基本信息
docker logs wordPress查看容器日志
docker stats wordPress查看容器所占用的系统资源
docker exec 容器名 容器内执行的命令容器执行命令
docker exec -it 容器名 /bin/bash登入容器的bash(我们可以使用该命令来创建mysql数据库,如下所示)

在这里插入图片描述

docker-compose编排

compose是docker公司推出的一个工具软件,可以管理多个Docker容器组成一个应用。需要定义一个yaml格式的配置文件docker-compose.yaml,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启动/关闭这些容器

compse的核心概念

  • 一个文件:docker-compose.yaml
  • 两个要素:
    • 服务:一个个应用容器实例,比如订单微服务,redis容器,mysql容器。
    • 工程:由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yaml文件中定义。

三个步骤

  • 编写Dockerfile定义各个微服务应用并构建出对应的镜像文件
  • 使用docker-compose.yml定义一个完整的业务单元,按照先后顺序安排好整体应用中的各个容器服务
  • 最后,执行docker-compose up命令来启动并运行整个应用程序,完成一键部署上线

compse常用命令

docker-compse -h查看帮助
docker-compse up启动所有docker-compose服务
docker-compse up -d启动所有docker-compose服务并后台运行
docker-compse down停止并删除容器、网络、卷、镜像
docker-compse start启动服务
docker-compse pause暂停服务
docker-compse unpause恢复暂停
docker-compse rm删除容器
docker-compse stop停止服务
docker-compse restart重启服务
docker-compse config检查配置
docker-compse config -q检查配置,有问题才有输出
docker-compse logs yml里面的服务id查看容器输出日志
docker-compse top展示当前docker-compose编排过的容器进程
docker-compse ps展示当前docker-compose编排过的运行的所有容器
docker-compse exec yml里面的服务id /bin/bash进入容器实例内部

如何编写docker-compose

官网:https://docs.docker.com/compose/compose-file/03-compose-file/。自然就是参考官网了,如果忘记了相关的语法看官网就行了,这个东西没必要深究,会使用就可以了。而且,如果使用了GoLand编译器安装了Docker插件之后编写docker-compose的时候都会有提示的。

  • 案例如下:
version: '3.0'
services:mysql8:image: mysql:8.0.29command: --default-authentication-plugin=mysql_native_password #解决外部无法访问restart: alwaysenvironment:MYSQL_ROOT_PASSWORD: rootvolumes:
#      设置初始化脚本- ./script/mysql/:/docker-entrypoint-initdb.d/ports:
#      - 映射为13316端口- "13316:3306"redis:image: 'bitnami/redis:latest'environment:- ALLOW_EMPTY_PASSWORD=yesports:- '6379:6379'

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

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

相关文章

@ApiImplicitParams这个注解的作用

ApiImplicitParams这个注解的作用? ApiImplicitParams是一个用于描述方法参数的注解,它可以用在方法上,作用是为方法中的参数定义多个注解,并将这些注解集中到一个注解集中进行统一管理。通过ApiImplicitParams注解,我…

使用k8s helm离线部署spark-operator(私有仓库)

制作镜像 docker pull ghcr.io/googlecloudplatform/spark-operator:v1beta2-1.3.8-3.1.1 docker images docker save ImageID > ./spark.tar将制作的镜像上传到目的机器中&#xff0c;加载镜像 docker load < ./spark.tar打标签其中xxxx.xxx/xx/为私有仓库的地址 doc…

JavaScript个人笔记

1.常用数据布尔值判断 const data [,0,-1,null,undefined,[],{},()>{}]data.forEach(item>{if(item){console.log(item,结果)} 打印结果&#xff1a;、0、null、undefined这四个值的布尔值都是false&#xff0c;其余都是true

17.Xaml DockPanel控件 ---> 停靠面板

1.运行效果 2.运行源码 a.Xaml源码 <Window x:Class="testView.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mic…

【Java基础篇 | 面向对象】—— 继承

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【JavaSE_primary】 本专栏旨在分享学习JavaSE的一点学习心得&#xff0c;欢迎大家在评论区讨论&#x1f48c; 继承允许一个类继承另一个…

微信小程序中识别html标签的方法

rich-text组件 在微信小程序中有一个组件rich-text可以识别文本节点或是元素节点 具体入下: //需要识别的数据放在data中,然后放在nodes属性中即可 <rich-text nodes"{{data}}"></rich-text>详情可以参考官方文档:https://developers.weixin.qq.com/mi…

openGauss学习笔记-65 openGauss 数据库管理-创建和管理数据库

文章目录 openGauss学习笔记-65 openGauss 数据库管理-创建和管理数据库65.1 前提条件65.2 背景信息65.3 注意事项65.4 操作步骤65.4.1 创建数据库65.4.2 查看数据库65.4.3 修改数据库65.4.4 删除数据库 openGauss学习笔记-65 openGauss 数据库管理-创建和管理数据库 65.1 前提…

IT运维:使用数据分析平台监控奇安信

监控目标 本文基于鸿鹄2.10.0版本。 ●监控奇安信日志类型分布 ●监控奇安信攻击行为、分析攻击类型 ●监控奇安信攻击来源情况 操作步骤 数据导入 1、创建数据集&#xff0c;如使用已经存在的数据集&#xff0c;可跳过此步骤 数据集名称&#xff1a;qax_syslog&#xff08;仪表…

Spring Batch:处理大数据和批量任务的解决方案

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

接口自动化测试系列-excel管理测试用例

代码源码&#xff1a; 框架结构 核心代码 excel用例demo excel数据处理 from configureUtil.LogUtil import getlog logger getlog(targetNameHandleData) import xlrd from openpyxl import load_workbook,workbook from openpyxl.styles import Font, colors import o…

【HCIE】03.BGP高级特性

每一条BGP路由都可以携带多个路径属性&#xff0c;针对其属性也有特有的路由匹配工具&#xff0c;包括&#xff1a;AS Path Filter和Community Filter。 import方向的属性&#xff0c;出现在如策略里面&#xff0c;加入到BGP路由表中&#xff0c;再传给路由表里&#xff0c;出去…

如何使用聊天GPT自定义说明

推荐&#xff1a;使用 NSDT场景编辑器 快速搭建3D应用场景 OpenAI ChatGPT正在席卷全球。一周又一周&#xff0c;更新不断提高您可以使用这种最先进的语言模型做什么的标准。 在这里&#xff0c;我们深入研究了OpenAI最近在ChatGPT自定义指令上发布的公告。此功能最初以测试版…

蓝桥杯打卡Day4

文章目录 首字母大写字符串转换整数 一、首字母大写IO链接 本题思路:本题就是语法题 #include <bits/stdc.h>int main() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);std::string str;std::getline(std::cin,str);for(int i0;i&…

# Spring MVC与RESTful API:如何设计高效的Web接口

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

Spring02

Spring02 1.Spring简介 Spring 是一个生态圈Spring是一个开源的Java企业级应用框架&#xff0c;提供了广泛的功能和特性&#xff0c;用于开发和管理Java应用程序。它的核心原则是基于IOC&#xff08;Inversion of Control&#xff0c;控制反转&#xff09;和AOP&#xff08;A…

分享一下奶茶店怎么在小程序上做商城功能

随着移动互联网的普及&#xff0c;越来越多的消费者倾向于在手机上完成购物需求。对于奶茶店来说&#xff0c;在小程序上开设商城功能不仅可以扩大销售渠道&#xff0c;还能提高品牌知名度和用户体验。本文将探讨如何在小程序上为奶茶店实现商城功能。 对于奶茶店的商城功能&am…

Java从入门到精通-类和对象(一)

0. 类和对象 1. 面向对象概述 Java面向对象编程&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;是一种强大的编程范式&#xff0c;它基于对象、类、封装、继承和多态等核心概念。这种编程范式使得代码更加模块化、可维护、可重用和可扩展。 1.1 对象和类…

docker系列(2) - 常用命令篇

文章目录 2. docker常用命令2.1 参数说明(tomcat案例)2.2 基本命令2.3 高级命令2.4 其他 2. docker常用命令 2.1 参数说明(tomcat案例) 注意如果分成多行&#xff0c;\后面不能有空格 # 拉取运行 docker run \ -d \ -p 8080:8080 \ --privilegedtrue \ --restartalways \ -m…

比较Visual Studio Code中的文件

目录 一、比较两个文件 1.1VS code中的文件大致分为两类&#xff1a; 1.2如何比较VS code中的两个文件&#xff1f; 二、并排差异模式&#xff1a;VS code中的一种差异模式 三、内联差异模式&#xff1a;VS code中的另一种差异模式 四、VS code忽略在行首或者行尾添加或删除…

图像分割笔记(二): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程))

文章目录 一、图像分割介绍二、YOLOv5-Seg介绍三、代码获取四、视频讲解五、环境搭建六、数据集准备6.1 数据集转换6.2 数据集验证七、模型训练八、模型验证九、模型测试十、评价指标一、图像分割介绍 图像分割是指将一幅图像划分为若干个互不重叠的区域,每个区域内的像素具有…