网络运维Day16

文章目录

  • Docker简介
    • 什么是容器
      • 命名空间:
    • Docker 的优缺点
  • Docker安装
  • Docker镜像管理
    • 什么是镜像
    • 镜像管理
  • Docker容器管理
    • 运行容器
    • 容器启动、停止、重启
    • 拷贝文件
    • 进入容器
    • 容器与应用
  • Dockerfile
    • Dockerfile 语法
    • 案例
  • 总结

Docker简介

什么是容器

  • 容器是用来装东西的,Linux 里面的容器是用来装应用的;

  • 容器就是将软件打包成标准化单元,以用于开发、交付和部署;

  • 容器技术已经成为应用程序封装和交付的核心技术;

  • 容器原理:容器技术的核心,由以下几个内核技术组成:

    • Cgroups (Control Groups) :资源管理
    • SELinux:安全 (是针对于文件系统,文件的管理措施)
    • NameSpace:命名空间

命名空间:

  • 是指可以对系统资源空间进行分割隔离的技术
  • 例如:创建一个虚拟机,在虚拟机里的所有操作,都不会对真实机造成影响。
  • 命名空间分为六大类,可以从各个方面来对系统资源空间进行隔离;
    • UTS:主机名隔离
    • NETWORK:网络隔离
    • MOUNT:文件系统隔离
    • USER:用户隔离
    • PID:进程隔离
    • IPC:信号向量隔离

Docker 的优缺点

  • 优点

    • 相比于传统的虚拟化技术,容器更加简洁高效
    • 传统虚拟机需要给每个 VM 安装操作系统
    • 容器使用的共享公共库和程序
  • 缺点

    • 容器的隔离性没有虚拟机强
    • 共用Linux内核,安全性有先天缺陷

在这里插入图片描述

Docker

使用模板机的克隆以下机器,配置如下

主机名IP地址内存CPU
docker-0001192.168.8.1072G2
docker-0002192.168.8.1082G2

docker-0001配置IP地址和主机名

[root@localhost ~]# hostnamectl set-hostname docker-0001
[root@docker-0001 ~]# nmcli connection modify ens33 ipv4.method auto  connection.autoconnect yes
[root@docker-0001 ~]# nmcli connection up ens33
[root@docker-0002 ~]# yum clean all
[root@docker-0002 ~]# yum repolist

docker-0002配置IP地址和主机名

[root@localhost ~]# hostnamectl set-hostname docker-0002
[root@docker-0002 ~]# nmcli connection modify ens33 ipv4.method auto  connection.autoconnect yes
[root@docker-0002 ~]# nmcli connection up ens33
[root@docker-0002 ~]# yum clean all
[root@docker-0002 ~]# yum repolist

Docker安装

docker安装(两台主机都要安装,以docker-0001为例)

开启路由转发,docker是通过虚拟交换机来进行通讯的,需要开启路由转发的功能

[root@docker-0001 ~]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf 
[root@docker-0001 ~]# sysctl -p              #sysctl -p 让配置立刻生效(否则需要重启虚拟机)
[root@docker-0001 ~]# yum -y install docker
[root@docker-0001 ~]# systemctl enable --now docker        #启动docker服务

Docker镜像管理

什么是镜像

  • 镜像是启动容器的核心

  • 在Docker 中容器是基于镜像启动的

  • 镜像采用分层设计,使用 COW 技术

在这里插入图片描述

  • 容器本身是没有操作系统,和宿主机共用一个操作系统;

  • 容器是docker(容器的管理工具)使用镜像文件来启动的;

  • 镜像是启动容器的模板,镜像中存放的是应用程序(服务软件),例如: 有一个http的镜像文件,在这个镜像中就存放的是http的所有文件和变量;

  • 用户使用镜像启动容器时,会生成一个独立于镜像的容器层,并不会对镜像层产生任何影响;

  • 而且容器采用了cow(写时复制)的技术,用户可以使用一个镜像文件创建多个容器,互不干扰;

  • 镜像采用分层技术:

    • 用户可以根据自己的需求来制作镜像,例如:在镜像的第一层定义应用程序的变量,在镜像的第二层修改配置文件,在镜像的第三层进行应用软件的部署;
    • 分层做好镜像后,用户使用镜像启动容器时,可以选择根据镜像的哪一层来启动,类似快照还原;
  • 镜像来源

    • 镜像可以从官方镜像仓库下载https://hub.docker.com
    • 自己制作

镜像管理

  • docker images #查看本机镜像
  • docker search 关键词 #查找包含关键词的镜像
  • docker pull 镜像名称:标签 #下载镜像
  • docker rmi 镜像名称:标签 #删除镜像
  • docker history 镜像名称: 镜像标签 #查看镜像的制作历史
  • docker inspect 镜像名称: 镜像标签 #查看镜像的信息
  • docker tag 镜像名称: 镜像标签 新镜像名称: 新的标签 #为镜像的打新名称和标签
[root@docker-0001 ~]# docker images          #还没有导入镜像,所以没有镜像
[root@docker-0001 ~]# docker search busybox
NAME     DESCRIPTION   			STARS  	OFFICIAL   AUTOMATED
busybox   Busybox base image.  	2010   	[OK] 
[root@docker-0001 ~]# docker pull busybox

查看镜像

[root@docker-0001 ~]# docker images
REPOSITORY     TAG      IMAGE ID       CREATED       SIZE
busybox        latest   6858809bf669   4 weeks ago   1.232 MB
#REPOSITORY  镜像名称
#TAG         镜像标签
#IMAGE ID    镜像ID号
#CREATED     镜像创建时间
#SIZE        镜像大小

镜像的备份与恢复

  • 镜像备份:docker save 镜像名称:镜像标签 -o 备份文件夹(tar格式)
  • 镜像恢复(导入镜像):docker load -i 备份文件名称

docker-0001导出镜像(备份)

[root@docker-0001 ~]# docker save busybox:latest  -o /root/busybox.tar
#导出镜像busybox,需要指定名字和标签,导出到/root目录下,名称为busybox.tar
#名称和路径可以随意指定

拷贝备份镜像到docker-0002上

[root@docker-0001 ~]# scp /root/busybox.tar  192.168.8.108:/root/

docker-0002恢复镜像

[root@docker-0002 ~]# docker load -i busybox.tar 
[root@docker-0002 ~]# docker images 

教学环境中将docker-images目录上传到docker-0001的/root下,并导入这四个镜像到docker里面

[root@docker-0001 ~]# cd docker-images
[root@docker-0001 docker-images]#  for i in *.tar.gz
> do
> docker load -i $i
> done

docker-0001看镜像的制作历史

[root@docker-0001 ~]# docker  history  centos:latest		#由下到上,镜像可以分为3层 

查看镜像的信息

[root@docker-0001 ~]# docker inspect centos:latest
[root@docker-0001 ~]# docker inspect nginx:latest 
.........."Cmd": [		# Cmd 默认的启动命令,即:启动容器时,默认的启动命令"nginx","-g","daemon off;"],
..........

docker-0001为镜像busybox:lastest打的新名称和标签

[root@docker-0001 ~]# docker tag busybox:latest xxhh:test

docker-0001删除镜像

[root@docker-0002 ~]# docker rmi busybox:latest

Docker容器管理

运行容器

  • docker run -参数 镜像名称:镜像标签 启动命令 #创建+运行+进入容器命令
  • docker ps [-a] [-q] #查看容器
  • docker rm [-f] #删除容器(-f强制)

docker-0001根据centos镜像启动并进入一个容器

[root@docker-0001 ~]# docker  run  -it  centos:latest  /bin/bash        #/bin/bash为容器内的命令,容器内存在,才可以使用
[root@89d1ec3a0dc8 /]# exit
[root@docker-0001 ~]# docker  run  -itd  nginx:latest    #启动nginx,是个服务,要加d,放后台才能运行

查看容器

[root@docker-0001 ~]# docker ps
[root@docker-0001 ~]# docker ps -a		#ps  -a 查看创建的所有的容器(运行的和已经停止的)
[root@docker-0001 ~]# docker ps -q		#ps -q 查看运行中容器的ID值
[root@docker-0001 ~]# docker ps -aq		#ps -aq查看所有容器的id,用于脚本对容器的管理

删除容器(容器ID不能照抄,每个人都不一样)

[root@docker-0001 ~]# docker rm 512567e6f64f

删除正在使用的容器时,会报错,无法删除,需要先停止容器,再执行删除命令

[root@docker-0001 ~]# docker stop 512567e6f64f		#停止容器
[root@docker-0001 ~]# docker rm 512567e6f64f

删除所有的容器:支持命令行重录,前一个命令的结果$(docker ps -aq)可以作为后一个命令的参数

[root@docker-0001 ~]# docker rm -f $(docker ps -aq)		#$()用来获取命令的执行结果

容器启动、停止、重启

  • docker start 容器id #启动容器
  • docker stop 容器id #停止容器
  • docker restart 容器id #重启容器
[root@docker-0001 ~]# docker run -itd  nginx:latest 

查看容器信息

[root@docker-0001 ~]# docker inspect 38b8ee2a8754
......"Gateway": "172.17.0.1","IPAddress": "172.17.0.2",
......
[root@docker-0001 ~]# curl http://172.17.0.2
<title>Welcome to nginx!</title>
............ 	
[root@docker-0001 ~]# docker stop 38b8ee2a8754				#停止容器
[root@docker-0001 ~]# docker start 38b8ee2a8754				#启动容器			
[root@docker-0001 ~]# docker restart 38b8ee2a8754			#重启容器

拷贝文件

  • docker cp 本机文件路径 容器id:容器内路径(上传)

  • docker cp 容器id:容器内路径 本机文件路径(下载)

在第一个终端中执行

[root@docker-0001 ~]# docker run -it  centos:latest
[root@69f7753eb1e8 /]# cd /etc/yum.repos.d/
[root@69f7753eb1e8 yum.repos.d]# rm -rf *

#另外开一个docker-0001的终端操作

[root@docker-0001 ~]# docker cp  /etc/yum.repos.d/CentOS-Base.repo 69f7753eb1e8:/etc/yum.repos.d/Centos-base.repo            
[root@69f7753eb1e8 yum.repos.d]# yum -y install net-tools       #在容器里面可以正常使用
[root@69f7753eb1e8 yum.repos.d]# ifconfig
[root@69f7753eb1e8 yum.repos.d]# exit

进入容器

  • docker exec -it 容器id 命令

  • docker attach 容器id

[root@docker-0001 ~]# docker ps	-a							   #查看正在使用的容器
[root@docker-0001 ~]# docker start  69f7753eb1e8			   #启动centos的容器
[root@docker-0001 ~]# docker exec -it 69f7753eb1e8 /bin/bash   #根据centos容器ID,进入容器
[root@69f7753eb1e8 /]# ps -ef								   #两个bash进程
[root@69f7753eb1e8 /]# exit    								   #退出
  • attach 以上帝进程的身份,进入容器内部,当执行exit退出容器时,会结束整个容器,通常用于在测试时,查看报错信息;
[root@docker-0001 ~]# docker attach 69f7753eb1e8		#Ctrl + p+ q  退出容器,但不会停止
[root@69f7753eb1e8 /]# ps -ef 							#一个bash进程(上帝进程)
[root@69f7753eb1e8 /]# exit     						#退出,容器关闭[root@docker-0001 ~]# docker start 69f7753eb1e8			#启动被关闭容器
[root@docker-0001 ~]# docker attach 69f7753eb1e8 #Ctrl + p+ q  退出容器,但不会停止容器的运行
  • 在对容器的使用过程中,都是使用exec,新开一个进程的方式进入容器,进行操作;
  • 而attach 往往应用于调试,终端输出的情况;

容器与应用

在这里插入图片描述

删除之前所有的容器

[root@docker-0001 ~]# docker rm -f $(docker ps -aq)

重新运行容器

[root@docker-0001 ~]# docker run -it --name myapache centos:latest
[root@d7cfa9370097 /]# cd /etc/yum.repos.d/       
[root@d7cfa9370097 yum.repos.d]# rm -rf *

把宿主机的yum文件拷贝给刚刚启动的容器

[root@docker-0001 ~]# docker cp  /etc/yum.repos.d/CentOS-Base.repo myapache:/etc/yum.repos.d/CentOS-Base.repo

此时就可以在容器里面安装相关的软件包

[root@d7cfa9370097 yum.repos.d]# yum -y install httpd php psmisc iproute net-tools
[root@d7cfa9370097 yum.repos.d]# pstree -p

因为容器内并没有systemd的服务,无法使用systemctl来启动httpd的服务

查看httpd的服务文件,获取环境变量文件和服务启动命令

[root@d7cfa9370097 /]# cat /lib/systemd/system/httpd.service 
........
[Service]
EnvironmentFile=/etc/sysconfig/httpd   	#环境变量文件
ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND#启动命令,$OPTIONS 此环境变量为空,可以不用写[root@d7cfa9370097 /]# cat /etc/sysconfig/httpd      #从环境变量文件中,获取环境变量
......
LANG=C
[root@d7cfa9370097 html]# echo 'hello world' > /var/www/html/index.html
[root@dcfa9370097 /]# /usr/sbin/httpd -DFOREGROUND          #启动httpd服务
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message

可以在宿主机测试,通过提示的地址172.17.0.2(IP地址不要照抄)

[root@docker-0001 ~]# curl 172.17.0.2
hello world

此时容器内容的终端是被占用的,是在前台运行的,如果关闭,不能够再次访问httpd,

若想要退出,使用ctrl + pq

[root@docker-0001 ~]# docker exec -it d7cfa9370097 /bin/bash
[root@d7cfa9370097 /]# pstree -p
bash(1)---httpd(66)-+-httpd(67)|-httpd(68)|-httpd(69)|-httpd(70)`-httpd(71)
[root@d7cfa9370097 /]# exit

Dockerfile

  • Dockerfile是用于构建Docker镜像的文本文件。它包含一组指令,用于描述镜像的基础操作,以及打包应用程序运行所需的所有依赖项。

Dockerfile 语法

  • FROM:基础镜像
  • RUN:制作镜像时执行的命令,可以有多个
  • ADD:复制文件到镜像,自动解压 (文件类型为: tar.gz 或 tar.bz2)
  • COPY:复制文件到镜像,不解压
  • MAINTAINER:镜像创建者信息
  • EXPOSE:开放的端口
  • ENV:设置变量
  • WORKDIR:定义容器默认工作目录(等于cd)
  • CMD: 容器启动时执行的命令,仅可以有一条CMD,若多条会覆盖,最后一条生效
    • CMD 容器的默认启动命令,可以自己定义,也可以使用默认的
    • Dockerfile中,不指定CMD时,则使用默认的启动命令;
    • 如果没有使用CMD指定启动命令,则会继承上一个镜像的默认启动命令;
    • CMD 容器的默认启动命令,有且只能有一条;

使用 Dockerfile 工作流程

  • mkdir build
  • cd build
  • 编写 Dockerfile
  • 根据Dockerfile生成新的镜像:docker build -t imagename Dockerfile所在目录

案例

  • 创建支持httpd服务镜像

因为容器内并没有systemd的服务,无法使用systemctl来启动httpd的服务
查看httpd的服务文件,获取环境变量文件和服务启动命令

[root@a670096c60ad /]# cat /lib/systemd/system/httpd.service 
........
[Service]
EnvironmentFile=/etc/sysconfig/httpd				#环境变量文件
ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND		#启动命令,$OPTIONS此环境变量为空
[root@a670096c60ad /]# vim /etc/sysconfig/httpd		#从环境变量文件中,获取环境变量
......
LANG=C
[root@a670096c60ad /]# LANG=C							#设置环境变量
[root@54cb8bfa063d /]# /usr/sbin/httpd -DFOREGROUND		#启动httpd服务,Ctrl + C 退出

编写httpd的Dockerfile文件(从这里开始做)

[root@docker-0001 ~]# mkdir web
[root@docker-0001 ~]# cd web/
[root@docker-0001 web]# vim Dockerfile
FROM  docker.io/centos:latest
RUN   yum -y install httpd php
ENV   LANG=C
EXPOSE 80 
WORKDIR  /var/www/html
COPY   index.html  /var/www/html/
CMD   ["/usr/sbin/httpd","-DFOREGROUND"]

生成index.html

[root@docker-0001 web]# echo 123 > index.html

build 创建新的镜像;-t 指定新镜像的名字和标签;. 指定Dockerfile文件所在的目录

[root@docker-0001 web]# docker build -t myos:httpd .
[root@docker-0001 web]# docker images
[root@docker-0001 web]# docker run -itd myos:httpd		#后台启动容器,因为是一个服务
[root@docker-0001 web]# docker ps						#查看正在使用的容器
[root@docker-0001 web]# docker inspect 800b21aa9736		#查看容器的详细信息
[root@docker-0001 web]# curl http://172.17.0.2/    		#IP地址不要抄

总结

  • 掌握Docker容器管理平台
  • 掌握镜像和容器的关系
  • 掌握镜像管理命令
  • 掌握容器管理命令
  • 掌握Dockerfile语法格式

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

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

相关文章

Python-Python高阶技巧:HTTP协议、静态Web服务器程序开发、循环接收客户端的连接请求

版本说明 当前版本号[20231114]。 版本修改说明20231114初版 目录 文章目录 版本说明目录HTTP协议1、网址1.1 网址的概念1.2 URL的组成1.3 知识要点 2、HTTP协议的介绍2.1 HTTP协议的概念及作用2.2 HTTP协议的概念及作用2.3 浏览器访问Web服务器的过程 3、HTTP请求报文3.1 H…

红队专题-从零开始VC++C/S远程控制软件RAT-MFC-超级终端

红队专题 招募六边形战士队员[16]超级终端(1)消息 宏的定义映射cmdshell.cpp重载 构造函数Onsize 随窗口大小事件回车键发送命令添加字符转换类 StringToTransform [17]超级终端(2)接受命令创建m_cmd c类发送 接收客户端远端进程关闭 招募六边形战士队员 一起学习 代码审计、安…

景联文科技:驾驭数据浪潮,赋能AI产业——全球领先的数据标注解决方案供应商

根据IDC相关数据统计&#xff0c;全球数据量正在经历爆炸式增长&#xff0c;预计将从2016年的16.1ZB猛增至2025年的163ZB&#xff0c;其中大部分是非结构化数据&#xff0c;被直接利用&#xff0c;必须通过数据标注转化为AI可识别的格式&#xff0c;才能最大限度地发挥其应用价…

网络运维Day17

文章目录 什么是数据库MySQL介绍实验环境准备构建MySQL服务连接数据库修改root密码 数据库基础常用的SQL命令分类SQL命令使用规则MySQL基本操作创建库创建表查看表结构 记录管理命令 数据类型数值类型 数据类型日期时间类型时间函数案例枚举类型 约束条件案例修改表结构添加新字…

C++二分查找算法:最大为 N 的数字组合

涉及知识点 二分查找 数学 题目 给定一个按 非递减顺序 排列的数字数组 digits 。你可以用任意次数 digits[i] 来写的数字。例如&#xff0c;如果 digits [‘1’,‘3’,‘5’]&#xff0c;我们可以写数字&#xff0c;如 ‘13’, ‘551’, 和 ‘1351315’。 返回 可以生成的…

基于群居蜘蛛算法优化概率神经网络PNN的分类预测 - 附代码

基于群居蜘蛛算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于群居蜘蛛算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于群居蜘蛛优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

python语言的由来与发展历程

Python语言的由来可以追溯到1989年&#xff0c;由Guido van Rossum&#xff08;吉多范罗苏姆&#xff09;创造。在他的业余时间里&#xff0c;Guido van Rossum为了打发时间&#xff0c;决定创造一种新的编程语言。他受到了ABC语言的启发&#xff0c;ABC语言是一种过程式编程语…

PHP 服装销售管理系统mysql数据库web结构layUI布局apache计算机软件工程网页wamp

一、源码特点 PHP 服装销售管理系统是一套完善的web设计系统mysql数据库 &#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 php服装销售管理系统1 二、功能介绍 (1)员工管理&#xff1a;对员工信息…

【电子通识】USB端口颜色编码标识

不知道你有没有发现 USB 口有不同的颜色&#xff0c;黑色、蓝色、紫色、红色、黄色等等&#xff0c;你知道不同颜色的 USB 口各代表什么意思吗&#xff1f; 这些颜色不是USB规范所要求的&#xff0c;设备制造商之间也不一致。例如&#xff0c;Intel使用橙色表示充电端口&#…

DAY54 392.判断子序列 + 115.不同的子序列

392.判断子序列 题目要求&#xff1a;给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些&#xff08;也可以不删除&#xff09;字符而不改变剩余字符相对位置形成的新字符串。&#xff08;例如&#xff0c;"ace"是…

科研学习|科研软件——有序多分类Logistic回归的SPSS教程!

一、问题与数据 研究者想调查人们对“本国税收过高”的赞同程度&#xff1a;Strongly Disagree——非常不同意&#xff0c;用“0”表示&#xff1b;Disagree——不同意&#xff0c;用“1”表示&#xff1b;Agree--同意&#xff0c;用“2”表示&#xff1b;Strongly Agree--非常…

并发编程由浅及深(一)

并发编程重要吗&#xff1f;当然重要&#xff0c;因为并发在我们的项目中真实存在&#xff0c;如果你不能充分了解它那么很可能造成严重的生产事故。最近隔壁项目组出了一个问题&#xff0c;每次请求接口之后都发现线程固定增加了5个&#xff0c;而且线程数一直增加没有减少&am…

修炼k8s+flink+hdfs+dlink(七:flinkcdc)

一 &#xff1a;flinkcdc官网链接。 https://ververica.github.io/flink-cdc-connectors/release-2.1/content/about.html 二&#xff1a;在flink中添加jar包。 在flink lib目录下增加你所需要的包。 https://kdocs.cn/join/gv467qi?f101 邀请你加入共享群「工作使用重要工具…

【uniapp】确认弹出框,选择确定和取消

代码如下&#xff1a; <view style"display: flex; justify-content: space-around;"><button class"button" click"submit">t提交</button> </view>submit(){let thatthisuni.showModal({title: 提示&#xff1a;,con…

react Antd3以下实现年份选择器 YearPicker

项目antd版本低&#xff0c;没有直接可使用的年份选择器&#xff0c;参考此篇&#xff08;使用antd实现年份选择器控件 - 掘金&#xff09; 一开始在state里设置了time&#xff1a; this.state {isopen: false,time: null } 在类似onChange事件里this.setState({time: valu…

【fbtft】如何添加fbtft驱动

获取lcd ic的datasheet&#xff0c;或者直接找到其他平台&#xff08;linux&#xff0c;stm32&#xff0c;esp32&#xff09;的驱动 我用的是合宙的esp32驱动&#xff0c;注意是c语言的&#xff0c;合宙上层用lua封装了&#xff0c;需要找到sdk源码。 源码路径&#xff1a; …

kafka单节点创建 topic 超时

1.根据之前的知道&#xff0c;安装kafka的时候改了config的server.properies文件中的listeners配置 之前这一行是没有注释掉的&#xff0c;结果创建topic的时候时钟报错连接超时 结果资料&#xff0c;发现就是因为listeners的问题 https://blog.csdn.net/weixin_42133361/art…

Jenkins中强制停止停不下来的job

# Script console 执行脚本 Jenkins 的提供了 script console 的功能&#xff0c;允许你写一些脚本&#xff0c;来调度 Jenkins 执行一些任务。 我们就可以利用 script console 来强制停止 job 执行。 首先进入 Jenkins 的 script console 页面&#xff1a; script console 路…

解决Chrome无法自动同步书签

前提&#xff1a;&#xff08;要求能正常访问google&#xff09; 准备一个谷歌账号 安装Chrome浏览器 开启集装箱插件&#xff08;或者其他能访问谷歌的工具&#xff09; 步骤&#xff1a;&#xff08;使用集装箱插件/能正常访问谷歌的其他工具&#xff09; 下载安装使用“集…

【机器学习5】无监督学习聚类

相比于监督学习&#xff0c; 非监督学习的输入数据没有标签信息&#xff0c; 需要通过算法模型来挖掘数据内在的结构和模式。 非监督学习主要包含两大类学习方法&#xff1a; 数据聚类和特征变量关联。 1 K均值聚类及优化及改进模型 1.1 K-means 聚类是在事先并不知道任何样…