docker基础用法-2

news2025/1/11 6:53:58

文章目录

    • 什么是docker
    • OCI&OCF
      • OCI
      • OCF
    • docker架构
    • docker镜像与镜像仓库
    • docker对象
    • 安装及使用docker
      • docker安装
      • docker加速
      • docker常用操作
      • docker event state
      • 防火墙状态及规则

什么是docker

docker中的容器:

  • lxc --> libcontainer --> runC

docker最开始是使用LXC做存储引擎,然后淘汰了LXC自己研发了libcontainer做存储引擎,再后来就用到了runC。

管理容器的工具。


在这里插入图片描述

OCI&OCF

OCI

开放容器的规范

  • 由Linux基金会主导于2015年6月创立
  • 旨在围绕容器格式和运行时制定一个开放的工业化标准
  • 包含两个规范
    • 运行时规范(runtime-spec)
    • 镜象规范(image-spec)

OCF

开放容器格式

runC是一个CLI工具,用于根据OCI规范生成和运行容器

  • 容器作为runC的子进程启动,可以嵌入到其他各种系统中,而不需要运行守护进程
  • runC构建在libcontainer之上,同样的容器技术支撑着数以百万计的Docker引擎安装

docker提供了一个专门容纳容器镜像的站点:https://hub.docker.com

私有仓库Harbor

Docker容器应用的开发和运行离不开可靠的镜像的管理,虽然Docker官方也提供了公共的镜像仓库【https://hub.docker.com】,但从安全和效率等方面考虑,部署公司私有环境内的 Registry 是非常必要的。之前介绍了Docker私有仓库Registry,在Kubernetes集群中,推荐使用Harbor仓库环境。

docker架构


在这里插入图片描述

docker架构:简单理解就是在client(客户端)运行命令,
Client(客户端)跟Docker_hos(docker主机)在一台主机上面。客户端就是docker的一些命令,就是装了docker之后就有命令,通常情况下客户端跟docker主机是同一主机上的。当然也可以在另一台主机上弄客户端,但是平时不会这样做。
运行容器需要镜像

Client
docker bulid  # 构建
docker pull   # 拉镜像
docker run    # 运行容器

DOCKER_HOST
docker daemon docker的守护进程。就是装完docker之后要启动的一个服务。在client执行命令之后要交给某一个服务处理,会找这个服务(docker daemon)向它提交请求,运行容器,docker daemon 就会处理请求。docker守护进程就会查看要启动什么容器,在本地是否有所需的镜像,如果有直接启动,如果没有就会去镜像仓库里面拉下来在启动。
  举例:比如你要启动apache服务
首先在客户端执行启动apache服务命令,然后docker守护进程会处理,查看本地是否有apache的镜像,如果有直接启动,如果没有会去镜像仓库拉下来再启动。  
docker容器要设置为开机自启

docker镜像与镜像仓库

为什么镜像仓库名字是 Registry 而不是 repository ?在docker中仓库的名字是以应用的名称取名的。


在这里插入图片描述

镜像是静态的,而容器是动态的,容器有其生命周期,镜像与容器的关系类似于程序与进程的关系。镜像类似于文件系统中的程序文件,而容器则类似于将一个程序运行起来的状态,也即进程。所以容器是可以删除的,容器被删除后其镜像是不会被删除的。

docker对象

当你使用docker时,你是在创建和使用镜像、容器、网络、卷、插件和其他对象。

  • 镜像
    • 镜像是一个只读模板,用来创建 docker 容器的。
    • 通常情况下,一个镜像基于另一个镜像,并添加一些额外的定制。
    • 您可以创建自己的镜像,也可以使用其他人创建好的镜像并在注册表(Registry)中发布你自己的镜像。
  • 容器
    • 容器是镜像的可运行实例。
    • 您可以使用docker API(API是开发人员用程序来操作)或CLI(使用命令来控制)来创建、运行、停止、移动或删除容器。
    • 您可以将一个容器连接到一个或多个网络,将存储附加到它里面去,甚至根据它的当前状态创建一个新的镜像。

安装及使用docker

docker安装

阿里云镜像官网 https://developer.aliyun.com/


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

cd /etc/yum.repos.d/
# 下载docker镜像
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 下载docker
yum -y install docker-ce

docker加速

docker-ce 的配置文件是/etc/docker/daemon.json,此文件默认不存在,需要我们手动创建并进行配置,而docker的加速就是通过配置此文件来实现的。

docker的加速有多种方式:

  • docker cn
  • 中国科技大学加速器
  • 阿里云加速器(需要通过阿里云开发者平台注册帐号,免费使用个人私有的加速器)<— 在这里使用阿里云的加速器

登录阿里云网址


点击控制台
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


mkdir -p /etc/docker
systemctl start docker # 启动docker

cat > /etc/docker/daemon.json <<EOF
{
    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"]
}
EOF
systemctl daemon-reload # 重新加载程序
systemctl restart docker # 重启docker

docker version # 查看版本
docker info # 查看信息
# 查看信息,以下内容翻译成中文,原文是英文 
[root@localhost ~]# docker info
Client: Docker Engine - Community
 Version:    25.0.4    # docker版本
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.13.0
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.24.7
    Path:     /usr/libexec/docker/cli-plugins/docker-compose
    Server:
 Containers: 5  # 有多少个容器5个
  Running: 1    # 正在运行的容器有1个
  Paused: 0
  Stopped: 4    # 停止的容器有4个
 Images: 5      # 有5个镜像
......省略N
Kernel Version: 3.10.0-1160.71.1.el7.x86_64  # Linux内核
 Operating System: CentOS Linux 7 (Core)  # 操作系统
 OSType: linux
 Architecture: x86_64  # 架构
 CPUs: 2     # CPU 核数
 Total Memory: 1.777GiB
 Name: k8s-node02     # 主机名
 ID: 4da00c4c-a26e-44ad-919d-f4b9404a269e
 Docker Root Dir: /var/lib/docker  # docker 存放数据位置
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Registry Mirrors:
  https://1izcbhll.mirror.aliyuncs.com/
 Live Restore Enabled: false

docker常用操作

命令功能
docker search在Docker Hub上搜索镜像
docker pull从Docker Hub中提取镜像
docker images查看镜像
docker create创建一个新容器
docker start启动容器
docker run在新容器中运行命令
docker attach连接到运行的容器
docker ps列出正在运行的容器 (加上-a就是列出运行和没有运行的)
docker logs获取容器日志
docker restart重启容器
docker stop停止一个或多个运行中的容器
docker kill杀死一个或多个运行中的容器
docker rm移除一个或多个容器
docker exec在运行的容器中运行命令
docker info查看信息
docker inspect返回Docker对象的低级信息
docker push推 镜像到镜像仓库中
build从Dockerfile构建镜像
# 查看docker 命令用法
[root@localhost ~]# docker --help
......省略N
Commands:
  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile  # 从Dockerfile构建镜像
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem # 在容器和本地文件系统之间复制文件/文件夹
  create      Create a new container # 创建一个新容器
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers  # 列出容器
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry  # 将镜像像或存储库推送到注册表
  rename      Rename a container
  restart     Restart one or more containers   # 重新启动一个或多个容器
  rm          Remove one or more containers    # 移除一个或多个容器
......省略N
# 使用search命令跟在docker仓库直接搜索httpd是一样的
[root@localhost ~]# docker search httpd
NAME     DESCRIPTION            STARS     OFFICIAL   AUTOMATED
httpd    The Apache HTTP Server Project    4090       [OK]
......省略N

# 拉取镜像,不指定版本就是拉取最新版latest
[root@localhost ~]# docker pull httpd
Using default tag: latest
latest: Pulling from library/httpd
a2abf6c4d29d: Pull complete
dcc4698797c8: Pull complete
41c22baa66ec: Pull complete
67283bbdd4a0: Pull complete
d982c879c57e: Pull complete
# 有五层,层次越少越好。

# 查看本地有哪些镜像
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
httpd        latest    dabbfbe0c57b   7 months ago   144MB
[root@localhost ~]#


# 使用httpd镜像创建一个新的容器
注意:这样创建的容器是停止状态
[root@localhost ~]# docker create --name web httpd
61dc31d6aab05055dc5c0fab0cfd2ab8dba3768e89960e2a82d2b48313a83b61

# docker ps 是查看容器状态,加上-a 是查看正在运行的和没有在运行的容器
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND          CREATED       STATUS    PORTS NAMES
61dc31d6aab0   httpd  "httpd-foreground" 6 seconds ago  Created          web

# 启动web容器、如果在创建时没有指定名字,则用容器id来启动:61dc31d6aab0
[root@localhost ~]# docker start web  # docker start 61dc31d6aab0
web
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND              CREATED         STATUS      PORTS     NAMES
61dc31d6aab0   httpd     "httpd-foreground"   7 minutes ago   Up About a minute   80/tcp    web

# 停止web
[root@localhost ~]# docker stop web
web
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost ~]#

# 重启web
[root@localhost ~]# docker restart web
web
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND              CREATED         STATUSPORTS     NAMES
61dc31d6aab0   httpd     "httpd-foreground"   8 minutes ago   Up 1 second80/tcp    web
[root@localhost ~]#

# 杀死web,跟杀死进程一样
[root@localhost ~]# docker kill web
web
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND              CREATED          STATUS                PORTS     NAMES
61dc31d6aab0   httpd     "httpd-foreground"   29 minutes ago   Exited (137)3 seconds ago             web
[root@localhost ~]#

# 删除一个正在运行的容器
[root@localhost ~]# docker start web
[root@localhost ~]# docker rm -f web
web
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost ~]#

# 注意删除容器镜像还在的
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
httpd        latest    dabbfbe0c57b   7 months ago   144MB
[root@localhost ~]#

# docker run就是执行docker pull、docker create和docker start,如果本地没有所需的镜像,会从镜像仓库里拉取下来,启动成容器。如果本地有容器直接docker start就OK了

# it交互模式。在新容器中运行命令/bin/sh
[root@localhost ~]# docker run -it --name test busybox /bin/sh
Unable to find image 'busybox:latest' locally
latest: Pulling from library/busybox
5cc84ad355aa: Pull complete
Digest: sha256:5acba83a746c7608ed544dc1533b87c737a0b0fb730301639a0179f9344b1678
Status: Downloaded newer image for busybox:latest
/ # ip addr show  eth0 # 查看容器里的ip
12: eth0@if13: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
/ #
# 如果使用exit退出容器,这个容器就会停止。
/ # exit
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND     CREATED         STATUS    PORTS     NAMES
4beeb9550425   busybox   "/bin/sh"   5 minutes ago   Exited (0) 9 seconds ago             test
[root@localhost ~]#

# 使用attach命令进入容器,有一个缺点就是用exit退出容器后就会停止容器
[root@localhost ~]# docker start test
[root@localhost ~]# docker attach test
/ #
# 使用exit命令退出就会停止容器
/ # exit
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND     CREATED          STATUS     PORTS     NAMES
4beeb9550425   busybox   "/bin/sh"   16 minutes ago   Exited (0) 3 seconds ago             test
[root@localhost ~]#

# 推荐使用exec命令进入容器,因为就算使用exit退出容器也不会停止容器
[root@localhost ~]# docker start test
[root@localhost ~]# docker exec -it test /bin/sh
/ # exit
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND     CREATED          STATUS              PORTS     NAMES
4beeb9550425   busybox   "/bin/sh"   23 minutes ago   Up About a minute        test
[root@localhost ~]#

# 返回Docker对象的低级信息
[root@localhost ~]# docker inspect test
.....省略N
                    "Gateway": "172.17.0.1",  # 网关
                    "IPAddress": "172.17.0.2", # ip 地址
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02",
                    "DriverOpts": null
...... 省略N

# 加上-q 是取出所有正在运行的容器ID
[root@localhost ~]# docker ps -q
b10ced22fc07
daa8fc40249e
371980f52bb1
db450ac87a4a
029edca838fb
a1726d4849a6
e063df0b9040
24f5a6b7ed86

docker event state


在这里插入图片描述

防火墙状态及规则

1、查看防火墙状态:firewall-cmd --state

[root@localhost ~]# firewall-cmd --state 
running
[root@localhost ~]# 

2、查看防火墙:firewall-cmd --list-all

[root@localhost ~]# firewall-cmd --list-all

3、防火墙放行协议

[root@localhost ~]# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=0.0.0.0/0 service name=http accept' --permanent
注意:在centos8/redhat8版本里不设置防火墙放行是访问不的



--permanent   //  表示永久添加  

如果要删除的话,把add改为remove,其他不变
[root@localhost ~]# firewall-cmd --remove-rich-rule 'rule family=ipv4 source address=0.0.0.0/0 service name=http accept' --permanent

4、防火墙有好几种

iptables
firewalld
ebtables
主流是iptables跟firewalld
iptables  # 默认放行
firewalld # 默认拒绝

# 查看防火墙规则命令用法
[root@localhost ~]# firewall-cmd --help

Usage: firewall-cmd [OPTIONS...]

General Options
  -h, --help           Prints a short help text and exists
  -V, --version        Print the version string of firewalld
  -q, --quiet          Do not print status messages
........省略

5、防火墙放行规则


在这里插入图片描述


使用httpd镜像创建成容器,使用母机的浏览器访问

# 查看有哪些容器正在运行
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost ~]#
#选项解释: 
run: 运行容器 
-d: 后台运行容器 
--name: 指定容器的名字 
-p: 指定宿主机和容器的端口映射,宿主机端口:容器端口 
-v: 指定挂载映射,宿主机路径:容器路径
-it:交互模式
案例
docker run -d --name web -p 8080:8080 -v ~/container_journal:/var/log/journal:Z 镜像
后面的Z是docker将Selinux的container_file_t的标签值应用到宿主机的目录上,以便容器可以访问宿主机的目录。

# 创建跟容器映射目录data
[root@localhost ~]# mkdir -p /opt/data

#创建容器名叫web、-p是把容器的80端口映射到真机上,-v是将宿主机目录跟容器的目录关联,用httpd镜像创容器
[root@localhost ~]# docker run -d --name web -p 80:80 -v /opt/data/:/usr/local/apache2/htdocs:Z httpd
7ef195d60c63c4196e82ee793f2b347ab38332d90380687264875e06716095d0
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND              CREATED         STATUS         PORTS                               NAMES
7ef195d60c63   httpd     "httpd-foreground"   3 seconds ago   Up 2 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   web
[root@localhost ~]#

# 去百度搜索源码之家,把网站下载到/opt/data目录下面来
# 把网站放到/opt/data下面
[root@localhost data]# ls
qadmin-1.3.zip

# 解压
dnf -y install unzip # 下载解压命令
[root@localhost data]# unzip qadmin-1.3.zip
[root@localhost data]# ls
qadmin  qadmin-1.3.zip

[root@localhost data]# ls
article_add.html    db_backup.html     index.html      pages_component.html  static           user_index.html
article_index.html  db_reduction.html  login.html      pages_model.html      type_add.html    web_cache.html
base.html           flink_add.html     nav_add.html    pages_msg.html        type_index.html  web_index.html
data                flink_index.html   nav_index.html  README.md             user_add.html    web_pwd.html


# 防火墙放行协议
[root@localhost ~]# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=0.0.0.0/0 service name=http accept' --permanent

#重新加载
[root@localhost ~]# firewall-cmd --reload

#查看状态
[root@localhost ~]# firewall-cmd --list-all
........省略
	rule family="ipv4" source address="0.0.0.0/0" service name="http" accept #看到这个就可以在真机里访问

#注意:在centos8/redhat8版本里不设置防火墙放行是访问不的

[root@localhost ~]# ip addr show ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:1c:4f:61 brd ff:ff:ff:ff:ff:ff
    inet 192.168.229.146/24 brd 192.168.229.255 scope global dynamic noprefixroute ens160
       valid_lft 1037sec preferred_lft 1037sec
    inet6 fe80::20c:29ff:fe1c:4f61/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
[root@localhost ~]#

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

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

相关文章

嵌入式学习之Linux系统编程篇笔记——系统编程初探

配套视频学习链接&#xff1a;https://www.bilibili.com/video/BV1zV411e7Cy?p2&vd_sourced488bc722b90657aaa06a1e8647eddfc 目录 Linux系统编程的基本认识 什么是Linux系统编程? 什么是系统编程 系统编程的作用 怎么学习Linux系统编程? Linux系统编程基本程序框…

数据可视化学习:Matplotlib概述

一、图表的常用设置 1.基本绘图主要函数 (1).matplotlib.pyplot.plot(x,y,format_string,**kwargs) 2.参数说明 (1).x:x轴数据 (2).y:y轴数据 (3).format_string:控制曲线格式的字符串&#xff0c;包括颜色、线条样式和标记样式 (4)**kwargs:键值参数&#xff0c;相当于…

IDEA : 已经有一个永久破解版的IDEA2019版本,现在又想安装最新版本的,俩版本共存,发现新版本打不开的解决方案

在新文件的目录下&#xff0c;注释掉一行19版本的地址 地址&#xff1a;C:\Users\23999\AppData\Roaming\JetBrains\IntelliJIdea2023.2 (不同电脑Users后边的一个地址的注释会不一样) 然后找到该目录下的indea64.exe.vmoptions 用 记事本 打开 在-javaagent 那一栏里会自动给…

如何学习一个大型分布式Java项目

前言 很多同学在没有实习经验的时候看到一个多模块分布式项目总是有一种老虎吃天的无力感&#xff0c;就像我刚毕业去到公司接触项目的时候一样&#xff0c;模块多的夸张&#xff0c;想学都不知道从哪开始学&#xff0c;那么我们拿到一份代码后如何从头开始学习一个新项目呢。…

ThingsBoard Edge 设备控制

文章目录 一、RPC 功能1.服务端 RPC2.客户端 RPC3.MQTT RPC API3.1.服务端RPC3.2.客户端RPC 二、设备控制1.环境准备2.创建设备3.服务端PRC3.1.RPC消息主题3.2.程序源码3.3.创建仪表板3.4.边缘分配仪表板3.5.测试 4.客户端RPC4.1.RPC消息主题4.2.程序源码4.3.规则链4.4.测试 Th…

Selenium-webdriver_manager判断是否已经下载过驱动(复用缓存驱动)

1,谷歌浏览器默认位置 2&#xff0c;ChromeDriverManager 下载的驱动位置 其中admin为机器的用户名 def installDriver(self):"""判断是否需要下载driver""""""找到本机谷歌浏览器版本""""""C:\P…

软考81-上午题-【面向对象技术3-设计模式】-行为型设计模式01

一、行为型设计模式一览 二、责任链模式 2-1、意图 使多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链&#xff0c;并沿着这条链传递该请求&#xff0c;直到有一个对象处理它为止。 1-2、结构 1-3、代码实现 1-4、适…

Kubectl常用命令

管理资源&#xff08;查看、创建、更新、删除&#xff09; 查看node资源 kubectl get nodes查看命名空间 kubectl get ns查看service资源 -n 指明所属的命名空间&#xff0c;不写默认看命名空间为default下的所有service kubectl get svc -n default查看pod资源 -n 指明所…

万界星空科技商业开源MES,技术支持+项目合作

商业开源的一套超有价值的JAVA制造执行MES系统源码 亲测 带本地部署搭建教程 教你如何在本地运行运行起来。 开发环境&#xff1a;jdk11tomcatmysql8springbootmaven 可以免费使用&#xff0c;需要源码价格便宜&#xff0c;私信我获取。 一、系统概述&#xff1a; MES制造执…

网络安全实训Day5

写在前面 昨天忘更新了......讲的内容不多&#xff0c;就一个NAT。 之前记的NAT的内容&#xff1a;blog.csdn.net/Yisitelz/article/details/131840119 网络安全实训-网络工程 NAT 公网地址与私网地址 公网地址 可以在互联网上被寻址&#xff0c;由运营商统一分配全球唯一的I…

Coursera上Golang专项课程2:Functions, Methods, and Interfaces in Go 学习笔记

Functions, Methods, and Interfaces in Go Course Certificate 本文是学习 Functions, Methods, and Interfaces in Go 这门课的学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。 文章目录 Functions, Methods, and Interfaces in GoMODULE 1: FUNCTIONS AND ORGANIZ…

云原生部署手册02:将本地应用部署至k8s集群

&#xff08;一&#xff09;部署集群镜像仓库 1. 集群配置 首先看一下集群配置&#xff1a; (base) ➜ ~ multipass ls Name State IPv4 Image master Running 192.168.64.5 Ubuntu 22.04 LTS1…

多进程数据库不适合作为hive的元数据库

简介 “今天发现一个比较奇怪的现象&#xff0c;因为博主不熟悉mysql&#xff0c;所以在安装hive的使用了postgresql作为hive的元数据库&#xff0c;在测试几个连接工具对hive进行链接&#xff0c;后面再测试的时候发现链接不上了&#xff0c;并且报错日志如下&#xff1a;” …

利用生成式人工智能进行功能管理测试

就 DevOps 而言&#xff0c;生成式 AI与功能管理测试的新兴集成标志着一次重大演变。我们将认真研究这项技术如何彻底改变我们创建测试环境的方式。 使用人工智能生成测试使我们能够模拟大量的用户场景和环境&#xff0c;这意味着我们可以开发和部署不仅好而且很棒的功能&…

django实现api接口

&#xff08;前期准备&#xff09;第一步&#xff1a;虚拟环境 在windows上使用virtualenvwrapper。 pip install virtualenvwrapper-win 接着&#xff0c;添加环境变量。 echo %WORKON_HOME% 接下来就是创建虚拟环境&#xff0c;假如创建myenv mkvirtualenv myenv 进入…

线程的基本使用

线程 使用线程方法 继承Thread类&#xff0c;重写run方法实现Runnable接口&#xff0c;重写run方法 继承Thread vs 实现Runnable的区别 从java的设计来看&#xff0c;通过继承Thread或者实现Runnable接口来创建线程本质上没有区别,从jdk帮助文档可以看到Thread类本身就实现…

如何在不带备份的情况下恢复 Android 手机照片?

你的 Android 手机出了什么问题&#xff1f; Android 手机上的垃圾文件过多。 您的 Android 手机屏幕黑屏。 您的手机蓝屏死机。 您的设备卡在启动屏幕上。 电话停止工作。 手机一直关机。 ... 您是否遇到过以上情况并将您的 Android 手机恢复出厂设置&#xff1f;如果是这样&…

最后的挣扎 - Qt For Android on HuaWei Mate 60Pro (v4.0.0)

简介 为什么叫最后的挣扎, 其实都知道即将到来的 HarmonyOS NEXT 将抛弃Android支持&#xff0c;纯血HarmonyOS 将上线&#xff0c; 此时再说Qt for android支持Huawei HarmonyOS的设备其实并没有多少意思&#xff0c; 但恐怕在大多数基础软件完成兼容前&#xff0c; 很多人还是…

【Godot 4.2】常见几何图形、网格、刻度线点求取函数及原理总结

概述 本篇为ShapePoints静态函数库的补充和辅助文档。ShapePoints函数库是一个用于生成常见几何图形顶点数据&#xff08;PackedVector2Array&#xff09;的静态函数库。生成的数据可用于_draw和Line2D、Polygon2D等进行绘制和显示。因为不断地持续扩展&#xff0c;ShapePoint…

定位及解决OOM

一、定义 内存溢出&#xff1a;OutOfMemoryError&#xff0c;是指因内存不够&#xff0c;导致操作新对象没有剩余空间。会导致频繁fullgc出现STW从而导致性能下降。 内存泄漏&#xff1a;指用malloc或new申请了一块内存&#xff0c;但是没有通过free或delete将内存释放&#…