Docker入门教程

news2024/12/26 14:05:01

在这里插入图片描述

文章目录

  • 一、Docker概述
    • 1. 什么是容器技术?
    • 2. 什么是Docker
    • 3. 为什么要使用Docker
    • 4. Docker和虚拟机的对比
    • 5. Docker相关概念
    • 6. DockerHub
    • 7. Docker架构
  • 二、安装Docker
    • 1. 安装Docker
    • 2. 配置阿里云镜像加速
  • 三、Docker常用命令
    • 1. 帮助命令
    • 2. 镜像操作命令
    • 3. 容器操作命令
    • 4. 练习
      • 4.1 安装Redis
      • 4.2 RabbitMQ单机部署
      • 4.3 安装Ubuntu
  • 四、Docker可视化工具
  • 五、数据卷
    • 1. 创建和查看数据卷
    • 2. 挂载数据卷
    • 3. 挂载目录

在这里插入图片描述


一、Docker概述


1. 什么是容器技术?


容器是一个允许我们在资源隔离的过程中,运行应用程序和其依赖项的 、轻量的 、操作系统级别的虚拟化技术, 运行应用程序所需的所有必要组件都打包为单个镜像,这个镜像是可以重复使用的。当镜像运行时,它是运行在独立的环境中,并不会和其他应用共享主机操作系统的内存、CPU或磁盘。这保证了容器内的进程不会影响到容器外的任何进程。


2. 什么是Docker


Docker官网地址 : https://www.docker.com/

Docker文档地址 : https://docs.docker.com/

Docker镜像仓库地址 : https://hub.docker.com/

在这里插入图片描述

在这里插入图片描述

Docker是一个开源的应用容器引擎,让开发者把他们的应用以及依赖打包到一个可移植的镜像中(打包),然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口(隔离)。Docker底层用的Linux的cgroup和namespace这两项技术来实现应用隔离,一个完整的Docker有以下几个部分组成:

  • Docker Client:客户端。
  • Docker Daemon:守护进程。
  • Docker Image:镜像。
  • Docker Container:容器。

3. 为什么要使用Docker


Docker可以解决项目部署问题,比如 传统方式的项目部署会遇到以下问题:

  • 组件兼容问题。(比如项目依赖jdk8的环境,如果给他降jdk7就会遇到各种兼容问题)
  • 操作系统环境不同问题。(比如测试环境在centos,生产环境迁到ubuntu,就会遇到系统兼容问题)


1、Docker如何解决组件兼容问题?

Docker会将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包。

将每个应用放到一个隔离的容器去运行,避免相互干扰。(沙箱机制)

在这里插入图片描述



2、Docker如何解决操作系统不同问题?

Docker会将应用程序与所需要调用的操作系统函数库一起打包。(会占用很多资源)

Docker运行到不同操作系统时,直接基于打包的系统函数库,借助于操作系统的Linux内核来运行。
在这里插入图片描述

操作系统基本结构:

  • 计算机硬件:例如CPU、内存、硬盘、网卡等
  • 系统内核:所有Linux发行版的内核都是Linux,例如CentOS、Ubuntu、Fedora等。内核可以与计算机硬件进行交互,对外提供内核指令,用于操作计算机硬件。
  • 系统应用:操作系统本身提供的应用、函数库。这些函数库是对内核指令的封装,使用更加方便。

4. Docker和虚拟机的对比


首先两者都是用来做隔离的,Docker作为一种新兴的虚拟化方式, 跟传统的虚拟化方式相比具有众多的优势。

在这里插入图片描述

1、更高效的利用系统资源:

  • 由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker对系统资源的利用 率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。

2、更快速的启动时间:

  • 传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。

3、一致的运行环境:

  • 开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致,导致有些bug并未在开发过程中被发现。而 Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现 「这段代码在我机器上没问题啊」 这类问题。

4、持续交付和部署:

  • 开发和运维(DevOps)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。
  • 使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过 Dockerfile 来进行镜像构建,并结合 持续集成(Continuous Integration) 系统进行集成测试, 而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合 持续部署(Continuous Delivery/Deployment) 系统进行自动部署。
  • 而且使用 Dockerfile 使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便 运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像。

5、更轻松的迁移:

  • 由于Docker确保了执行环境的一致性,使得应用的迁移更加容易。Docker可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的。 因此用户可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行 环境的变化导致应用无法正常运行的情况。

6、更轻松的维护和扩展:

  • Docker 使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,以及应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。此外,Docker 团队同各个开源项目团队一起维护了一大批高质量的官方镜像,既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本。

对比传统虚拟机总结如下:

特性Docker虚拟机
启动秒级分钟级
硬盘使用一般为 MB一般为 GB
性能接近原生性能较差
系统支持量单机支持上千个容器一般几十个

艾玛,真香!!!

搞起来!!!


5. Docker相关概念


镜像、容器、仓库(重点)

镜像(Image):Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。(安装包 )

容器(Container):镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器进程做隔离,对外不可见。

仓库(repository):仓库就是存放镜像的地方!仓库分为公有仓库和私有仓库!

在这里插入图片描述

一切应用最终都是代码组成,都是硬盘中的一个个的字节形成的文件。只有运行时,才会加载到内存,形成进程。

镜像就是把一个应用在硬盘上的文件、及其运行环境、部分系统函数库文件一起打包形成的文件包。这个文件包是只读的。

容器是将这些文件中编写的程序、函数加载到内存中运行,形成进程(就是容器),Docker会给容器进程做隔离(守护进程)。

一个镜像可以启动多个容器。


6. DockerHub


DockerHub镜像仓库地址:https://hub.docker.com/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2yqi1jGl-1676658332218)(docker.assets/image-20230214234712523.png)]

DockerHub:是Docker官方提供的镜像仓库(托管平台)。这样的平台称为Docker Registry。

国内也有类似DockerHub的镜像托管平台:

  • 网易云镜像服务: https://c.163yun.com/hub
  • 阿里云镜像服务:https://cr.console.aliyun.com/
  • 私有云:自己公司用的。
  • 等等

在这里插入图片描述


7. Docker架构


我们要使用Docker来操作镜像、容器,就必须要安装Docker。

Docker是一个CS架构的程序,由两部分组成:

  • 服务端(server):Docker守护进程,负责处理Docker指令,管理镜像、容器等。

  • 客户端(client):通过命令或RestAPI向Docker服务端发送指令。可以在本地或远程向服务端发送指令。

在这里插入图片描述

总结

镜像:类似安装包,它将应用程序及其依赖、环境、配置打包在一起。

容器:镜像运行起来就是容器,一个镜像可以运行多个容器。

Docker结构:

  • 服务端:接收命令或远程请求,操作镜像或容器。

  • 客户端:发送命令或者请求到Docker服务端。

DockerHub:是一个镜像托管的服务器,类似的还有阿里云镜像服务、网易云镜像服务等等,统称为DockerRegistry。


二、安装Docker


1. 安装Docker


环境准备:CentOS7(系统内核要求是3.10以上的)、SSH客户端

帮助文档 : https://docs.docker.com/

在这里插入图片描述
在这里插入图片描述


1、查看系统内核(系统内核要求是3.10以上的)

uname -r

在这里插入图片描述


2、如果之前安装过旧版本的Docker,可以使用下面命令进行卸载Docker:

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

3、安装yum工具

yum install -y yum-utils

4、 设置阿里云镜像源

yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

在这里插入图片描述


5、更新镜像源

sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

在这里插入图片描述


6、 更新yum软件包索引

yum makecache fast

在这里插入图片描述


7、安装docker-ce社区版 ,免费版本 ( ee企业版)

yum install -y docker-ce

在这里插入图片描述


8、关闭防火墙

systemctl stop firewalld  #关闭防火墙
systemctl disable firewalld #禁止开机启动
systemctl status firewalld

9、启动docker

systemctl start docker  # 启动docker服务
systemctl enable docker.service #设置docker开机自动启动
  • 停止docker服务:systemctl stop docker
  • 重启docker服务:systemctl restart docker

在这里插入图片描述


10、查看docker版本号,测试是否启动成功。

docker -v

在这里插入图片描述

ok,docker已经成功运行起来啦!


2. 配置阿里云镜像加速


华为云容器镜像服务 :https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

阿里云镜像加速文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

1、登录阿里云找到容器服务

在这里插入图片描述

2、找到镜像加速地址

在这里插入图片描述

3、配置镜像加速,全选下面的代码执行即可。

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://bbc8rnyr.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

在这里插入图片描述


4、 查看镜像加速配置

cat /etc/docker/daemon.json

在这里插入图片描述

ok,到这里阿里云镜像加速已经配置成功啦!


三、Docker常用命令


帮助文档的地址:https://docs.docker.com/reference/

在这里插入图片描述

1. 帮助命令


docker -v	   # 显示docker的版本号

docker version 	   # 显示docker的版本信息

docker info		   # 显示docker的系统信息,包括镜像和容器的数量

docker [COMMAND] --help  # 帮助命令 (COMMAND,命令),例如 docker save --help

在这里插入图片描述


2. 镜像操作命令


镜名称一般分两部分组成:[repository]:[tag]

  • 镜像名:版本, 例如:mysql:5.7

在这里插入图片描述

如果拉取镜像不指定版本,默认是latest,代表最新版本的镜像。(最好用具体版本的镜像,方便查看版本)

在这里插入图片描述


镜像常用命令:

  • 获取镜像:
    • 本地构建:docker bulid
    • 拉取镜像:docker pull 镜像名称
  • 查看镜像: docker images
  • 删除镜像: docker rmi 镜像名称或镜像id
  • 推送镜像: docker push 镜像名称
  • 导出镜像: docker save -o 文件名.tar 镜像名称
  • 加载镜像: docker load -i 文件名.tar
  • 加载镜像: docker load -i -q 文件名.tar (不输出日志)


1、查看镜像:

docker images

在这里插入图片描述


2、拉取镜像,mysql5.7

docker pull mysql:5.7

在这里插入图片描述


3、将mysql镜像打成压包,如果别的同学网不好,你可以把这个包丢给她。

docker save -o mysql.tar mysql:5.7

在这里插入图片描述


4、删除mysql镜像

docker rmi mysql:5.7 

在这里插入图片描述


5、加载镜像,mysql.tar

 docker load -i mysql.tar 

在这里插入图片描述


3. 容器操作命令


在这里插入图片描述

容器保护三个状态:

  • 运行:进程正常运行
  • 暂停:进程暂停,CPU不再运行,并不释放内存
  • 停止:进程终止,回收进程占用的内存、CPU等资源

容器常用命令:

  • docker run:创建并运行一个容器,处于运行状态。
    • docker run --name [容器名] -p 宿主机端口号:容器内部端口号 -d [镜像名称]
  • docker pause:让一个运行的容器暂停。
  • docker unpause:让一个容器从暂停状态恢复运行。
  • docker stop:停止一个运行的容器。
  • docker start:让一个停止的容器再次运行。
  • docker restart:重启容器。
  • docker rm:删除一个容器。
  • docker rm -f :强制删除容器。
  • docker ps:查看正在运行的容器。
  • docker ps -a:查看所有容器。
  • docker logs 容器名 :查看容器日志。
  • docker logs -f 容器名 :持续查看容器日志。
  • 进入容器:docker exec -it 容器名 bash。(execute,执行)

扩展:

docker run -it IMAGES_NAME  #会创建前台进程,但是会在输入exit后终止进程。

docker attach DOCKER_ID   #会通过连接stdin,连接到容器内输入输出流,会在输入exit后终止进程.

docker exec -it DOCKER_ID /bin/bash #会连接到容器,可以像SSH一样进入容器内部,进行操作,可以通过exit退出容器,不影响容器运行。

#以上几种方式均可通过输入Ctrl+P+Q把前台容器放入后台运行,不终止进程。

示例练习

1、下载nginx镜像,创建并运行一个容器,容器名为nginx1

# 下载最新版的nginx
docker pull nginx

# 创建并运行一个容器,容器名为nginx1,对外提供的端口是800,容器内部端口是80, -d表示后台启动
docker --name nginx1 -p 800:80 nginx
  • docker run :创建并运行一个容器。
  • –name : 给容器起一个名字,比如叫做nginx1。
  • -p :端口映射。
  • -d:后台运行容器。
  • nginx:镜像名称,例如nginx。

在这里插入图片描述

浏览器测试访问:http://192.168.112.129:800/

在这里插入图片描述


2、进入nginx1容器,修改nginx首页内容

docker exec -it nginx1 bash
  • docker exec :进入容器内部,执行一个命令。

  • -it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互。

  • mn :要进入的容器的名称。

  • bash:进入容器后执行的命令,bash是一个linux终端交互命令。

在这里插入图片描述

# 操作文本命令
sed -i -e 's#Welcome to nginx#白豆五欢迎您#g' -e 's#<head>#<head><meta charset="utf-8">#g' index.html
  • -e 执行多个文本替换。

在这里插入图片描述

浏览器再次访问:http://192.168.112.129:800/

在这里插入图片描述

扩展:redis容器启动命令

# 运行redis容器
docker run --name redis1 -p 6379:6379 -d redis:7.0.0 redis-server --appendonly yes

# --appendonly yes   开启AOF(Append Only File)持久化

# 进入容器
docker exec -it redis1 bash

4. 练习


使用Docker安装一些常用软件。

4.1 安装Redis


1、下载redis镜像

在这里插入图片描述

docker pull redis:6.2.8

在这里插入图片描述


2、创建并运行redis容器

docker run --name redis1 -p 6379:6379 -d redis:6.2.8 redis-server --appendonly yes
  • redis-server 启动redis服务
  • –appendonly yes 开启持久化

在这里插入图片描述
在这里插入图片描述

注意:一定要关闭防火墙,或者开放端口(在虚拟机上、或者服务器官网的安全组中添加),不然我们windows主机无法访问docker的redis容器。


3、进入redis容器

docker exec -it redis1 bash

在这里插入图片描述

4、启动redis客户端(命令行工具)

redis-cli 

在这里插入图片描述

ok,到这里redis就安装成功了。


4.2 RabbitMQ单机部署


1、下载RabbitMQ镜像

docker pull rabbitmq:3.8-management

在这里插入图片描述


2、安装RabbitMQ容器

docker run \
 -e RABBITMQ_DEFAULT_USER=admin \
 -e RABBITMQ_DEFAULT_PASS=123456 \
 -v mq-plugins:/plugins \
 --name mq1  \
 --hostname mq1 \
 -p 15672:15672 \
 -p 5672:5672 \
 -d \
 rabbitmq:3.8-management
  • \ 代表换行,要执行多行命令
  • -e 指定环境变量
  • -e RABBITMQ_DEFAULT_USER=admin 用户名
  • -e RABBITMQ_DEFAULT_PASS=123456 密码
  • -v 挂载目录或文件 (数据卷)
  • -p 15672:15672 用于页面使用的端口 (管理员页面)
  • -p 5672:5672 用于生产和消费端使用的端口(通信端口,也就是在代码里使用)
  • -d 后台运行
  • –name mq1 容器名字
  • –hostname mq1 (RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名);

在这里插入图片描述


3、测试访问RabbitMQ管理页面:http://ip:15672

在这里插入图片描述

消息队列模型:

  • 基本模型:简单队列、工作队列(work)模型。
  • 发布/订阅模型:广播、路由、主题。(需要依赖交换机)

4.3 安装Ubuntu


1、拉取镜像

docker pull ubuntu

在这里插入图片描述

2、安装ubuntu容器

docker run -it ubuntu /bin/bash

在这里插入图片描述

3、强制删除运行的容器

docker rm -f 容器名称或容器id

在这里插入图片描述

4、删除镜像

docker rmi ubuntu

在这里插入图片描述



四、Docker可视化工具


Portainer是一个可视化的容器镜像的图形管理工具,利用Portainer可以轻松构建,管理和维护Docker环境。 而且完全免费,基于容器化的安装方式,方便高效部署。

官方安装说明:https://www.portainer.io/installation/

1、安装Portainer

docker run -d -p 9000:9000 \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
--privileged=true \
--name prtainer-test \
portainer/portainer
  • –privileged=true 打开root权限

在这里插入图片描述


2、浏览器访问Docker管理界面:http://192.168.112.129:9000/

① 创建账号:

在这里插入图片描述

设置登录密码,长度最少8位,方便记忆我就设置成12341234啦。


② 选择管理本地docker环境

在这里插入图片描述

③ 进入docker管理面板:
在这里插入图片描述
在这里插入图片描述


五、数据卷


之前修改容器内部文件,需要进入容器里面才能修改,操作非常麻烦。

当我们删除容器时,容器里的数据就丢失了。(容器和数据是耦合在一起的,不可复用,升级维护困难)

解决方案:使用数据卷挂载目录。


数据卷(volume):是一个虚拟目录,指向宿主机文件系统中的某个目录。(然后让容器和数据卷关联)

作用:让容器外面的目录和容器里面的目录进行关联。

在这里插入图片描述

一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录。

这样,我们操作外面的宿主机目录,就等同于操作容器内的目录。

即使我们把容器干掉,数据依然在外面的宿主机目录中保留。


数据卷操作相关的命令:

docker volume 【COMMAND】
  • docker volume create:创建数据卷。
  • docker volume ls:查看所有数据卷。
  • docker volume inspect:查看数据卷详细信息,包括关联的宿主机目录位置。
  • docker volume rm:删除指定数据卷。
  • docker volume prune:删除所有未使用的数据卷。

1. 创建和查看数据卷


示例:创建一个数据卷,并查看数据卷在宿主机的目录位置

创建数据卷:

# 语法docker volume create [数据卷名称]
docker volume create abcd

查看所有数据卷:

docker volume ls

查看数据卷详细信息卷:

docker volume inspect html

在这里插入图片描述


2. 挂载数据卷


我们在创建容器时,可以通过 -v 参数来挂载一个数据卷到某个容器内目录,命令格式如下:

docker run \
  --name mn \
  -v html:/usr/share/nginx/html \
  -p 8080:80
  nginx \

这里的-v就是挂载数据卷的命令:

  • \ :表示多行输入。

  • -v html:/root/htm :把html数据卷挂载到容器内的/usr/share/nginx/html这个目录中。

  • 数据卷不存在时会自动创建。(手动创建数据卷再挂载也可以)

  • 若数据卷中没有文件,会将容器目录中的文件挂载到数据卷中。

  • 若数据卷中有文件,会将数据卷中的文件覆盖容器目录中。


示例:给nginx挂载数据卷

1、启动容器并挂载目录

# 语法:docker run --name 容器名称 -v 数据卷:容器指定目录 -p 80:80 -d 镜像名称或id
docker run --name nginx1 -v html:/usr/share/nginx/html -p 80:80 -d nginx

2、进入html数据卷所在位置,并修改HTML内容

# 查看html数据卷的位置
docker volume inspect html
# 进入该目录
cd /var/lib/docker/volumes/html/_data
# 修改文件
vi index.html

3. 挂载目录


容器不仅仅可以挂载数据卷,也可以直接挂载到宿主机目录上。挂载目录和挂载数据卷类似,语法如下:

  • 挂载数据卷:-v [数据卷名称]:[容器内目录]
  • 目录挂载:-v [宿主机目录]:[容器内目录]
  • 文件挂载:-v [宿主机文件]:[容器内文件]

在这里插入图片描述

数据卷挂载与目录挂载的区别:

  • 数据卷挂载耦合度低(使用目录别名,即数据卷),由docker来管理目录,但是目录较深,不好找。(适合数据量小的)
  • 目录挂载耦合度高(需要写完整目录),需要我们自己管理目录,不过目录更容易查找。(适合数据量大的)

示例:创建并运行一个MySQL容器,将宿主机目录直接挂载到容器指定目录中。

1、下载MySQL镜像

docker pull mysql:5.7

2、创建目录(存mysql数据和配置文件)

mkdir -p /tmp/mysql/data
mkdir -p /tmp/mysql/conf

3、在虚拟机/tmp/mysql/conf目录下,创建hmy.conf文件:

[mysqld]
skip-name-resolve
character_set_server=utf8 
datadir=/var/lib/mysql
  • skip-name-resolve 禁用dns解析。
  • character_set_server=utf8 设置字符集。
  • datadir=/var/lib/mysql 容器内部存数据的目录

3、启动mysql:

docker run \
--name mysql1 \
--restart=always \
-e MYSQL_ROOT_PASSWORD=root \
-e TZ=Asia/Shanghai \
-p 3306:3306 \
-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
-v /tmp/mysql/data:/var/lib/mysql \
-d \
mysql:5.7
  • -p 3306:3306 端口映射。
  • -e MYSQL_ROOT_PASSWORD=root ,密码设置为root。
  • -e TZ=Asia/Shanghai 设置时区。
  • –restart=always 开机自动启动。
  • -v /tmp/mysql/data:/var/lib/mysql 挂载数据存储位置。
  • -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf 挂载配置文件。
  • -d 后台运行。

4、使用navicat或datagrip连接测试。

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

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

相关文章

mysql 8.0 忘记root密码-linux

vim /etc/my.cnf 在[mysqld]最后加上如下语句&#xff1a;skip-grant-tables 并保存退出有的配置是分开的&#xff0c;/etc/my.cnf.d/mysql-server.cnf重启mysql服务 : service mysqld restart免密码登陆: mysql -u root -ppassword校验直接回车select host, user, authenticat…

C#:Krypton控件使用方法详解(第七讲) ——kryptonHeader

今天介绍的Krypton控件中的kryptonHeader&#xff0c;下面开始介绍这个控件的属性&#xff1a;控件的样子如上图所示&#xff0c;从上面控件外观来看&#xff0c;这个控件有三部分组成。第一部分是前面的图片&#xff0c;第二部分是kryptonHeader1文本&#xff0c;第三部分是控…

前端学习第一阶段-第7章 品优购电商项目

7-1 品优购项目介绍及准备工作 01-品优购项目导读 02-网站制作流程 03-品优购项目规划 04-品优购项目搭建 05-品优购项目-样式的模块化开发 06-品优购项目-favicon图标制作 07-品优购项目-TDK三大标签SEO优化 7-2 首页Header区域实现 08-品优购首页-快捷导航shortcut结构搭建 0…

MySQL(三):切分,主从复制,读写分离

文章目录一、切分水平切分垂直切分水平切分策略二、主从复制三、读写分离一、切分 水平切分 水平切分又称为sharding,它是将同一个表中的记录拆分到多个结构相同的表中。当一个表的数据不断增多的时候&#xff0c;sharding是必然的选择&#xff0c;它可以将数据分布到集群的不…

jmap监控工具

在一个JVM进程中会存在有多个对象实例,如果要想获取所有对象的信息,就可以通过JDK提供的jmap工具完成,另外使用该工具还可以直接获取到指定进程的堆内存使用信息,开发者可以通过jmap --help 命令查看该命令相关的参数。 1、查看JVM进程中的对象信息 导致JVM性能问题的核心…

力扣sql简单篇练习(十九)

力扣sql简单篇练习(十九) 1 查询结果的质量和占比 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # 用count是不会统计为null的数据的 SELECT query_name,ROUND(AVG(rating/position),2) quality,ROUND(count(IF(rating<3,rating,null))/count(r…

九龙证券|欧美充电桩市场快速增长 国内“桩企”出海需求旺盛

海外充电桩毛利率水平高、需求增加速&#xff0c;“桩企”出海继续。 在阿里世界站上接连三年火爆的新能源出口行业&#xff0c;本年坚持高增加下&#xff0c;涌现出新商机——新能源车充电桩。阿里世界站最新跨境指数显现&#xff0c;曩昔一年新能源车充电桩的海外商机快速增加…

SpringBoot11:分布式Dubbo、Zookeeper

什么是分布式系统&#xff1f; 建立在网络之上的软件系统&#xff0c;是若干个独立的计算机的集合&#xff0c;但是对用户来说&#xff0c;就像单个系统一样。可以利用更多的机器&#xff0c;处理更多的数据 注意&#xff1a;只有当单个节点不够用的时候&#xff0c;才需要考…

杭州电子科技大学2023年MBA招生考试成绩查询和复查申请的通知

根据往年的情况&#xff0c;2023杭州电子大学MBA考试初试成绩可能将于2月21日公布&#xff0c;最早于20号出来&#xff0c;为了广大考生可以及时查询到自己的分数&#xff0c;杭州达立易考教育为大家汇总了信息。根据教育部和浙江省教育考试院关于硕士研究生招生考试工作的统一…

volatile 关键字的使用

写博客的目的第一是做笔记&#xff0c;第二是在错误的基础上不断刷新认知&#xff0c;这两天会写三篇关于嵌入式容易混淆的知识点&#xff0c;有错误欢迎拍砖&#xff01; 1、volatile关键字的使用 关于volatile 关键字&#xff0c;如果你的理解仅仅是讲“是从内存直接取数据…

CoreDNS

目录 文章目录目录本节实战前言1、环境变量2、DNS1.DNS 解析过程2.根域名服务器3.顶级域名服务器4.权威性域名服务器5.dig 域名3、CoreDNS1.CoreDNS 扩展配置&#xff08;1&#xff09;开开启日志服务&#xff08;2&#xff09;特定域名使用自定义 DNS 服务器&#xff08;3&…

K8s集群部署(二进制安装部署详细手册)

一、简介 K8s部署主要有两种方式&#xff1a;1、Kubeadm Kubeadm是一个K8s部署工具&#xff0c;提供kubeadm init和kubeadm join&#xff0c;用于快速部署Kubernetes集群。 2、二进制 从github下载发行版的二进制包&#xff0c;手动部署每个组件&#xff0c;组成Kubernetes集群…

SSM项目搭建保姆级教程

文章目录1、什么是SSM框架1.1、持久层1.2、业务层1.3、表现层1.4、View层1.5、SpringMVC执行流程1.6、MyBatis2、SSM实战搭建2.1、创建工程2.2、添加依赖2.3、配置spring.xml文件2.4、配置web.xml文件2.5、log4j.properties2.6、准备表2.7、实体类2.8、mapper2.9、service2.10、…

GuLi商城-SpringCloud-OpenFeign测试远程调用

1. Feign 简介 Feign 是一个声明式的 HTTP 客户端&#xff0c;它的目的就是让远程调用更加简单。Feign 提供了HTTP请 求的模板&#xff0c;通过编写简单的接口和插入注解&#xff0c;就可以定义好 HTTP 请求的参数、格式、地址等信 息。Feign 整合了 Ribbon&#xff08;负载…

操作系统 二(进程管理)

一、进程的定义及特征进程的定义由程序、数据、进程控制块三部分组成为了使程序可以并发执行&#xff0c;且可以对并发执行的程序加以描述和控制。不同角度的定义&#xff1a;进程是程序的一次执行&#xff1b;进程是一个程序及其数据在处理机上顺序执行时所发生的活动&#xf…

IDEA Maven Helper插件(详细使用教程)

一、引言 在写Java代码的时候&#xff0c;我们可能会出现Jar包的冲突的问题&#xff0c;这时候就需要我们去解决依赖冲突了&#xff0c;而解决依赖冲突就需要先找到是那些依赖发生了冲突&#xff0c;当项目比较小的时候&#xff0c;还比较依靠IEDA的【Diagrams】查看依赖关系&…

dom基本操作

1、style修改样式 基本语法&#xff1a; 元素.style.样式’值‘ 注意: 1.修改样式通过style属性引出 2.如果属性有-连接符&#xff0c;需要转换为小驼峰命名法 3.赋值的时候&#xff0c;需要的时候不要忘记加css单位 4.后面的值必须是字符串 <div></div> // 1、…

《Hadoop篇》------HDFS与MapReduce

目录 一、HDFS角色职责总结 二、CheckPoint机制 三、Mapreduce序列化 四、Mapper 4.1、官方介绍 4.2、Split计算 4.3、Split和block对应关系 4.4、启发式算法 五、MapTask整体的流程 六、压缩算法 6.1、压缩算法适用场景 6.2、压缩算法选择 6.2.1、Gzip压缩 6.2…

独家 | ChatGPT提高你日常工作的五个特点以及如何使用它来提高代码质量

翻译&#xff1a;陈超 校对&#xff1a;赵茹萱本文约3200字&#xff0c;建议阅读8分钟 本文介绍了ChatGPT提高日常工作的五个特点。ChatGPT已经完全改变了代码开发模式。然而&#xff0c;大多数软件开发者和数据专家们仍然不使用ChatGPT来完善——并简化他们的工作。这就是我们…

【Python】缺失值可视化工具库:missingno

文章目录一、前言二、下载二、使用介绍2.1 绘制缺失值条形图2.2 绘制缺失值热力图2.3 缺失值树状图三、参考资料一、前言 在我们进行机器学习或者深度学习的时候&#xff0c;我们经常会遇到需要处理数据集缺失值的情况&#xff0c;那么如何可视化数据集的缺失情况呢&#xff1…