容器编排学习(一)容器技术

一  容器

1  Linux 容器的起源

容器的起源可以追溯到1979年 UNIX 系统中提供的chroot命令,容器的最初的设计目标是为了隔离计算机中的各类资源以便降低软件开发、测试阶段的风险,或者充当蜜罐,吸引黑客的攻击,以便监视黑客的行为。最初的容器是以chroot为代表的文件隔离技术,但这并不完美,如主机名、网络、系统进程、用户等都无法隔离

2 名称空间和控制组

为了实现完美的隔离机制,2002年 Linux引入了一种由内核直接提供的全局资源封装的全新隔离机制(名称空间)用来解决隔离的问题,至2009年,Linux内核已经支持了UTSPC、PID、NETWORK、MOUNT等多个名称空间。

Linux解决资源配额的方案是控制组 (Cgroups),它与名称空间一样直接由内核提供功能,用于隔离或者说分配并限制某个进程组能够使用的资源量,包括占用 CPU 时间、内存大小、磁盘 1/0 速度,等等

3  容器的诞生

当文件系统、访问、资源都可以被隔离后,容器已经有它降生所需的全部条件,Linux内核开始提供Cgroups的同一时间就马上发布了名为 LXC的系统级虚拟化功能

LXC 带着令人瞩目的光环登场,可惜的是,LXC 在设定自己的发展目标时,被前辈们的影响所局限住。LXC 眼中的容器是一种封装系统的轻量级虚拟机。这种局限的思想也决定了LXC不可能形成今天的容器生态的,所以,接下来舞台的聚光灯终于落到了 Docker 身上。

二 docker

1  概述

2013年3月,一个名为 Docker 的项目宣布开源

当时的人们并没有意识到这款软件将要带来怎样的技术变革

它的出现促使“容器”从一个阳春白雪的只流传于极客口中的技术词汇,逐渐走向整个IT舞台的中央短短数年时间,就已成为开发、测试、部署等各个环节都难以或缺的基础支撑。是什么样的魔力让 Docker 可以从一问世就惊艳世间

2  理念

促使 Docker的一问世就惊艳世间的,不是什么黑科技式的秘密武器,而是其符合历史潮流的创意与设计理念,还有充分开放的生态环境。

早期的容器技术是一种封装系统的轻量级虚拟化,Docker眼中“容器技术”是一种以应用为核心,对程序文件、运行时环境、软件依赖包都可以封装打包、部署的技术手段

Docker 的容器中没有系统

2014年,Docker开源了自己用 Golang开发的 Libcontainer

2015年,在Docker的主导和倡议下,多家公司联合制定“开放容器交互标准”(0CI),这是一个关于容器格式和运行时的规范文件,其中包含:

  • 运行时标准(RUNTIME-SPEC)
  • 容器镜像标准(IMAGE-SPEC)
  • 镜像分发标准(DISTRIBUTION-SPEC)

3  三大概念

容器:容器是一个运行在隔离环境中的程序

镜像:镜像是只读的模板,包含了创建容器所需的所有文件和配置信息

仓库:仓库是用来存储、分发、管理镜像的地方

三  安装部署

1  配置Yum仓库

把 docker 软件包添加到跳板机的自定义 yum 仓库中

[root@docker ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
主机名IP地址最低配置
docker-0001192.168.1.312CPU,4G内存
docker-0002192.168.1.322CPU,4G内存

2  系统管理命令

命令说明
docker version查看服务器与客户端版本
docker info查看 docker 服务配置信息

3  安装部署

# 开启路由转发
[root@docker ~]# echo 'net.ipv4.ip_forward = 1' >>/etc/sysctl.conf
[root@docker ~]# sysctl -p
[root@docker ~]# dnf install -y docker-ce
[root@docker ~]# systemctl enable --now docker
# 查看服务器与客户端版本
[root@docker ~]# docker version
Client: Docker Engine - CommunityVersion:           20.10.10... ...
Server: Docker Engine - CommunityEngine:Version:          20.10.10

4  添加镜像加速

[root@docker ~]# vim /etc/docker/daemon.json
{"registry-mirrors": ["这里配置镜像仓库加速器地址"],"insecure-registries":[]
}
[root@docker ~]# systemctl restart docker
# 查看 docker 服务配置信息
[root@docker ~]# docker info
... ...Insecure Registries:127.0.0.0/8Registry Mirrors:https://镜像仓库加速器/Live Restore Enabled: false

四  镜像

1  概述

  • 镜像是创建容器的核心
  • 镜像使用CoW技术
  • 镜像采用分层设计
  • 镜像始终都是只读的

如何创建容器?

首先使用 Cow 为镜像创建一个读写层,容器在读写层运行

这种方式可以让一个镜像创建无数个容器

2  获取镜像

镜像可以从官方镜像仓库下载,也可以自己制作

官方镜像仓库:https://hub.docker.com

从官方下载较慢,可以使用国内的镜像站加速

添加配置文件: /etc/docker/daemon.json
{

        "reqistry-mirrors":["这里配置镜像加速器地址”]

        "insecure-registries":[ ]

}

[root@docker ~]# vim /etc/docker/daemon.json
{"registry-mirrors": ["这里配置镜像仓库加速器地址"],"insecure-registries":[]
}[root@docker ~]# systemctl restart docker
# 查看 docker 服务配置信息[root@docker ~]# docker info
... ...Insecure Registries:127.0.0.0/8Registry Mirrors:https://镜像仓库加速器/Live Restore Enabled: false

3  镜像管理命令

镜像管理命令说明备注
docker images查看本机镜像
docker pull 镜像名称:标签下载镜像
docker save 镜像名称:标签 -o 备份文件名称备份镜像为tar包备份文件是 tar 格式
docker load -i 备份文件名称导入备份的镜像文件备份文件 tar 或 tar.xx 格式
docker history 镜像名称:标签查看镜像的制作历史

镜像管理案例

pull、images、history

# 下载 busybox:latest 镜像
[root@docker ~]# docker pull busybox:latest
# 查看本机镜像
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
busybox      latest    66ba00ad3de8   5 weeks ago     4.87MB
# 查看镜像的制作历史
[root@docker ~]# docker history busybox:latest
IMAGE          CREATED      CREATED BY                                 SIZE
b539af69bc01   9 days ago   /bin/sh -c #(nop)  CMD ["sh"]              0B        
<missing>      9 days ago   /bin/sh -c #(nop) ADD file:069460fea045…   4.86MB 

指定镜像的方法

  • 每一个镜像都对应唯一的镜像 id
  • 镜像名称 + 标签 = 唯一
  • 每一个镜像都有标签,默认标签 latest我们在调用镜像的时候,如果没有指定标签也是 latest

镜像的备份与恢复

save、load

# 备份 rockylinux:8.5 镜像为 tar 包
[root@docker ~]# docker save busybox:latest -o busybox.tar
# 使用备份文件恢复镜像
[root@docker ~]# docker load -i myos.tar.xz
Loaded image: rockylinux:8.5
Loaded image: myos:8.5
Loaded image: myos:php-fpm
Loaded image: myos:nginx
Loaded image: myos:httpd
Loaded image: myos:latest
# 查看本机镜像
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
myos         php-fpm   7124977c0b21   12 days ago     275MB
myos         latest    1de38c85c2d1   3 weeks ago     4.67MB
myos         nginx     5e45400d8e76   3 weeks ago     274MB
myos         httpd     9245e660f88f   3 weeks ago     299MB
myos         8.5       621bfd7f9b46   3 weeks ago     249MB
busybox      latest    66ba00ad3de8   5 weeks ago     4.87MB
rockylinux   8.5       210996f98b85   14 months ago   205MB
[root@docker-0001 ~]# docker load -i myos.tar.xz
[root@docker-0001 ~]# docker save rockylinux:8.5 -o rockylinux.tar
[root@docker-0001 ~]# scp rockylinux.tar 192.168.1.32:/root/
#-------------------------------------------------------------------#
[root@docker-0001 ~]# docker load -i rockylinux.tar
[root@docker-0001 ~]# docker history rockylinux:8.5

 

五  容器管理

1  容器管理命令

容器管理命令说明
docker run -it(d) 镜像名称:标签创建容器
docker ps查看容器的信息
docker inspect 镜像名称|容器名称查询(容器/镜像)的详细信息
docker [start|stop|restart] 容器id启动、停止、重启容器
docker exec -it 容器ID 启动命令在容器内执行命令
docker cp 路径1 路径2拷贝文件:路径格式(本机路径、容器ID/路径)

2  容器管理案例

run

查看 run 的参数

  • docker help run
  • man docker-run

docker run 常用参数

  • 参数 -i 交互式
  • 参数 -t 分配终端
  • 参数 -d 后台运行
  • 参数 --name 容器名字
  • 参数 --rm 容器结束后自动删除
  • 转入后台快捷键 (ctrl-p + ctrl-g)
# 创建一个容器
[root@docker ~]# docker run -it myos:8.5
[root@3aa1df05b795 /]# hostname
3aa1df05b795
[root@3aa1df05b795 /]# ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 15:13 pts/0    00:00:00 /bin/bash
root          19       1  0 15:13 pts/0    00:00:00 ps -ef
[root@3aa1df05b795 /]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@3aa1df05b795 /]# exit
# 创建后台容器
[root@docker ~]# docker run -itd myos:httpd
6d6884244a995791f8171efa3ce81be1e9e51bedf25c3a5a67bac8bb7bc019b0
# 创建名为web1的后台容器
[root@docker ~]# docker run -itd --name web1 myos:httpd
14b669a75a95e9ba590c37137abc9d828d2c769d46f69c35fb0e8cc98cc544c4 

ps

docker ps 常用参数

  • -a 显示所有容器
  • -p 只显示ID
# 查询容器状态
[root@docker ~]# docker ps
CONTAINER ID   IMAGE        ... ...  STATUS          PORTS     NAMES
14b669a75a95   myos:httpd   ... ...  Up 25 minutes   80/tcp    web1
6d6884244a99   myos:httpd   ... ...  Up 25 minutes   80/tcp    hawking
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE        ... ...  STATUS          PORTS     NAMES
14b669a75a95   myos:httpd   ... ...  Up 25 minutes   80/tcp    web1
6d6884244a99   myos:httpd   ... ...  Up 25 minutes   80/tcp    hawking
47ded92f442f   myos:8.5     ... ...  Exited (0)                yonath
[root@docker ~]# docker ps -aq
14b669a75a95
6d6884244a99
47ded92f442f

start、stop、restart

[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE        ... ...  STATUS          PORTS     NAMES
14b669a75a95   myos:httpd   ... ...  Up 25 minutes   80/tcp    web1
6d6884244a99   myos:httpd   ... ...  Up 25 minutes   80/tcp    hawking
47ded92f442f   myos:8.5     ... ...  Exited (0)                yonath
# 停止容器
[root@docker ~]# docker stop web1 6d6884244a99
web1
6d6884244a99
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE        ... ...  STATUS          PORTS     NAMES
14b669a75a95   myos:httpd   ... ...  Exited (0)                web1
6d6884244a99   myos:httpd   ... ...  Exited (0)                hawking
47ded92f442f   myos:8.5     ... ...  Exited (0)                yonath
# 启动容器
[root@docker ~]# docker start web1 
web1
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE        ... ...  STATUS          PORTS     NAMES
14b669a75a95   myos:httpd   ... ...  Up 6 seconds    80/tcp    web1
6d6884244a99   myos:httpd   ... ...  Exited (0)                hawking
47ded92f442f   myos:8.5     ... ...  Exited (0)                yonath
# 重启容器
[root@docker ~]# docker restart 6d6884244a99 
6d6884244a99
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE        ... ...  STATUS          PORTS     NAMES
14b669a75a95   myos:httpd   ... ...  Up 18 seconds   80/tcp    web1
6d6884244a99   myos:httpd   ... ...  Up 3 seconds    80/tcp    hawking
47ded92f442f   myos:8.5     ... ...  Exited (0)                yonath

inspect

# 查询镜像的详细信息
[root@docker ~]# docker inspect myos:httpd
{   ......"Cmd": ["httpd","-DFOREGROUND"],......
}
# 查询容器的详细信息
[root@docker ~]# docker inspect 6d6884244a99 web1
[{ ... ..."Gateway": "172.17.0.1","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"IPAddress": "172.17.0.3","IPPrefixLen": 16,... ...

exec、cp

拷贝文件

  • 上传:docker cp 本机文件路径 容器id:容器内路径
  • 下载:docker cp 容器id:容器内路径 本机文件路径
# 在容器内执行非交互命令
[root@docker ~]# docker exec -it web1 /bin/ls
index.html    info.php
# 在容器内执行交互命令
[root@docker ~]# docker exec -it web1 /bin/bash 
[root@487e19bb4ca3 ~]# exit
# 从容器内拷贝文件出来
[root@docker ~]# docker cp web1:/etc/httpd/conf/httpd.conf ./
[root@docker ~]# sed -ri "s,(Listen )80,\18080," httpd.conf
# 把文件拷贝到容器内
[root@docker ~]# docker cp httpd.conf web1:/etc/httpd/conf/
# 重启容器
[root@docker ~]# docker restart web1
# 查询容器详细信息
[root@docker ~]# docker inspect web1
{   "Networks": {"bridge": {"IPAddress": "172.17.0.2",......
}
[root@docker ~]# curl http://172.17.0.2:8080/
Welcome to The Apache.

3  其他管理命令

管理命令说明
docker rm 容器ID删除容器
docker logs 容器ID查看容器日志
docker tag 镜像ID:标签 镜像名称:新的标签创建新的镜像名称和标签
docker rmi 镜像名称:标签删除镜像(必须先删除该镜像启动的所有容器)

管理命令案例

rm、logs

# 删除容器
[root@docker ~]# docker rm 47ded92f442f
# 强制删除容器
[root@docker ~]# docker rm -f web1
# 删除所有容器
[root@docker ~]# docker rm -f $(docker ps -aq)
# 创建容器
[root@docker ~]# docker run -itd --name web myos:nginx
# 访问容器
[root@docker ~]# docker inspect web |grep IPAddress
[root@docker ~]# curl http://172.17.0.2/info.php
# 查看容器日志
[root@docker ~]# docker logs web
2023/01/17 15:51:49 [error] 6#0: *1 open() "/usr/local/nginx/html/info.php" failed (2: No such file or directory), client: 172.17.0.1, server: localhost, request: "GET /info.php HTTP/1.1", host: "172.17.0.2"

rmi、tag

# 删除一个镜像
[root@docker ~]# docker rmi busybox:latest
Untagged: busybox:latest
# 已经创建容器的镜像无法删除
[root@docker ~]# docker rmi -f myos:nginx
Untagged: myos:nginx
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
myos         php-fpm   7124977c0b21   12 days ago     275MB
myos         latest    1de38c85c2d1   3 weeks ago     4.67MB
<none>       <none>    5e45400d8e76   3 weeks ago     274MB
myos         httpd     9245e660f88f   3 weeks ago     299MB
myos         8.5       621bfd7f9b46   3 weeks ago     249MB
rockylinux   8.5       210996f98b85   14 months ago   205MB
# 给镜像设置一个新的名称标签
[root@docker ~]# docker tag 5e45400d8e76 myos:nginx
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
myos         php-fpm   7124977c0b21   12 days ago     275MB
myos         latest    1de38c85c2d1   3 weeks ago     4.67MB
myos         nginx     5e45400d8e76   3 weeks ago     274MB
myos         httpd     9245e660f88f   3 weeks ago     299MB
myos         8.5       621bfd7f9b46   3 weeks ago     249MB
rockylinux   8.5       210996f98b85   14 months ago   205MB

六  自定义镜像

  • 镜像采用分层设计
  • 创建读写层
  • 修改配置
  • 重新打包

简单镜像制作

# 使用基础镜像创建一个容器
[root@docker ~]# docker run -itd --name linux rockylinux:8.5
# 删除容器内的Yum配置文件
[root@docker ~]# docker exec -it linux rm -rf /etc/yum.repos.d
# 拷贝宿主机的Yum配置文件到容器内
[root@docker ~]# docker cp /etc/yum.repos.d linux:/etc/
# 在容器内安装工具软件包
[root@docker ~]# docker exec -it linux dnf install -y net-tools vim-enhanced tree bash-completion iproute procps-ng psmisc
# 清理缓存文件
[root@docker ~]# docker exec -it linux dnf clean all
# 停止容器
[root@docker ~]# docker stop linux
# 把容器制作成镜像
[root@docker ~]# docker commit linux mylinux:latest
sha256:7a4449e20f4c59d1f6c4db838b4724cbf63c8f4195513c5f17d053c7752891d5
# 查看新制作的镜像
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
mylinux      latest    b64da40467ae   3 seconds ago   249MB
rockylinux   8.5       210996f98b85   13 months ago   205MB
# 删除制作镜像的容器
[root@docker ~]# docker rm -f linux 
linux

七  容器部署应用

在容器中安装部署 apache 服务

如何在容器内启动服务?

  • 由于容器内没有 systemd,参考服务文件手工执行启动程序
  • 服务文件路径 /usr/lib/systemd/system/httpd.service
  • 查看服务文件,设置环境变量执行服务启动程序
  • 如果没有 service文件,参考官方手册配置、启动服务

1  安装部署 apache 服务

# 删除所有容器
[root@docker ~]# docker rm -f $(docker ps -aq)
# 创建一个名为 myweb 的容器
[root@docker ~]# docker run -it --rm --name myweb mylinux:latest
#-----------------------------------------------------------
# 在容器内安装部署 apache
[root@a7f9d0c3e3e2 /]# dnf install -y httpd
[root@a7f9d0c3e3e2 /]# echo "Hello World ." >/var/www/html/index.html
[root@a7f9d0c3e3e2 /]# cat /usr/lib/systemd/system/httpd.service
[root@a7f9d0c3e3e2 /]# export LANG=C
[root@a7f9d0c3e3e2 /]# /usr/sbin/httpd -DFOREGROUND
# 在另一个终端完成访问验证

2  为 apache 添加解析 php 文件支持

# ctrl + c 终止 httpd 服务运行
[root@a7f9d0c3e3e2 /]# dnf install -y php
[root@a7f9d0c3e3e2 /]# vim /etc/httpd/conf.modules.d/00-mpm.conf
11: LoadModule mpm_prefork_module ... ... # 去掉注释 
17: # LoadModule mpm_event_module ... ... # 注释配置 
[root@a7f9d0c3e3e2 /]# /usr/sbin/httpd -DFOREGROUND
# 服务不要关闭,在其他终端完成测试

3  验证配置

# 在另一个终端拷贝 public/info.php 到 docker 主机
[root@docker ~]# docker cp info.php myweb:/var/www/html/
[root@docker ~]# curl http://172.17.0.2/info.php
<pre>
Array
([REMOTE_ADDR] => 172.17.0.1[REQUEST_METHOD] => GET[HTTP_USER_AGENT] => curl/7.61.1[REQUEST_URI] => /info.php
)
php_host:   616e75df56ae
1229

八  容器服务原理

1  什么是上帝进程?

简单的说就是系统创建之初产生的第一个进程

2  特点

  • 没有父进程,PID = 1
  • 是所有程序的根进程
  • 上帝进程死亡系统实例也就关闭了

3  容器有没有上帝进程?

容器的启动进程就是上帝进程

如果容器的启动进程关闭等同于容器关闭

4  前台服务 VS后台服务?

前台服务是占有控制终端的进程,可以在终端与用户交互式的访问与操作,一旦终端关闭,这个进程也随之消失。

后台进程也叫守护进程,不受终端控制,它不需要交互;后台进程的本质是向系统托管进程服务

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

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

相关文章

Logstash--logstash-syslog-putput插件安装及使用

这篇文章讲的是如何在Linux服务器上安装logstash-syslog-output插件及使用&#xff0c;是集网上之大成&#xff0c;择选出一条正确有效简短的路。 安装 插件logstash-syslog-output&#xff0c;如果你的logstash没有&#xff0c;则需要安装。 查看logstash是否含有这个插件的…

二分搜索树节点的查找(Java 实例代码)

目录 二分搜索树节点的查找 Java 实例代码 src/runoob/binary/BinarySearchTreeSearch.java 文件代码&#xff1a; 二分搜索树节点的查找 二分搜索树没有下标, 所以针对二分搜索树的查找操作, 这里定义一个 contain 方法, 判断二分搜索树是否包含某个元素, 返回一个布尔型变…

SpringMVC之CRUD------增删改查

目录 前言 配置文件 pom.xml文件 web.xml文件 spring-context.xml spring-mvc.xml spring-MyBatis.xml jdbc.properties数据库配置文件 generatorConfig.xml log4j2日志文件 后台 PageBaen.java PageTag.java 切面类 biz层 定义一个接口 再写一个实现类 …

C++设计模式_03_模板方法Template Method

文章目录 1. 设计模式分类1.1 GOF-23 模式分类1.2 从封装变化角度对模式分类 2. 重构&#xff08;使用模式的方法&#xff09;2.1 重构获得模式 Refactoring to Patterns2.2 重构关键技法 3. “组件协作”模式4. Template Method 模式4.1 动机&#xff08; Motivation&#xff…

【Linux从入门到精通】通信 | 共享内存(System V)

本篇文章接着上篇文章通信 | 管道通信&#xff08;匿名管道 & 命名管道&#xff09;进行讲解。本篇文章的中点内容是共享内存。 文章目录 一、初识与创建共享内存 1、1 什么是共享内存 1、2 共享内存函数 1、2、1 创建共享内存 shmget 1、2、2 ftok 生成 key 1、2、3 获取共…

YOLO目标检测——红火蚂蚁识别数据集+已标注yolo格式标签下载分享

实际项目应用&#xff1a;目标检测红火蚂蚁识别数据集在农业、生态学、环境保护、城市管理和学术研究等领域都有着广泛的应用。通过准确识别和定位红火蚂蚁&#xff0c;可以帮助我们更好地了解和管理这一入侵物种&#xff0c;从而减少其对环境和经济的负面影响。数据集说明&…

一文看懂微信小程序新版隐私协议(附带弹窗组件)

一、前言 微信小程序近期又迎来了一次改革–9月15日之后如果小程序涉及调用微信的隐私接口获取用户的信息的&#xff0c;需要用户手动同意协议后才可正常调用接口&#xff0c;否则会返回报错信息。 隐私接口目前常用的有&#xff1a;手机号快捷获取、读取照片、获取用户的头像…

【爬虫】实验项目三:验证码处理与识别

目录 一、实验目的 二、实验预习提示 三、实验内容 实验要求 基本要求&#xff1a; 改进要求A&#xff1a; 改进要求B&#xff1a; 四、实验过程 基本要求 五、源码如下 六、资料 一、实验目的 部分网站可能会使用验证机制来阻止用户无效登录或者是验证用户不是用程…

自己设计CPU学习之路——基于《Xilinx FPGA应用开发》

1. 一个32组位宽为32的寄存器堆 框图 代码 regfile.h ifndef __FEGFILE_HEADER__define __REGFILE_HEADER__define HIGH 1b1define LOW 1b0define ENABLE_ 1b0define DISABLE_ 1b1define DATA_W 32define DataBus 31:0define DATA_D 32d…

socket编程

网络协议指的是计算机网络中互相通信的对等实体之间交换信息时所必须遵守的规则的集合。一般系统网络协议包括五个部分&#xff1a;通信环境&#xff0c;传输服务&#xff0c;词汇表&#xff0c;信息的编码格式&#xff0c;时序、规则和过程。 Socket是应用层和TIP/IP协议簇通…

Middleware ❀ Kafka功能与使用详解

文章目录 1. 概述1.1. 消息队列1.2. 应用场景1.3. 工作模式1.4. 基础结构1.4.1. 结构组件1.4.2. 数据同步1.4.3. ACK机制1.4.4. 分区机制1.4.4.1. 使用Partition Key写入1.4.4.2. 轮询写入 - 默认规则1.4.4.3. 指定Partition写入 1.4.5. Offset偏移量1.4.5.1. 消息顺序性1.4.5.…

linux系统中驱动框架基本分析

大家好&#xff0c;今天分享一篇Linux驱动软件设计思想的文章。由于文章较长&#xff0c;可以先收藏后再慢慢看。 一、Linux驱动的软件架构 1.1 出发点 为适应多种体系架构的硬件&#xff0c;增强系统的可重用和跨平台能力。 1.2 分离思想 为达到一个驱动最好一行都不改就…

Apache DolphinScheduler - 快速扩展 TaskPlugin 从入门到放弃

目前在大数据生态中&#xff0c;调度系统是不可或缺的一个重要组件。Apache DolphinScheduler 作为一个顶级的 Apache 项目&#xff0c;其稳定性和易用性也可以说是名列前茅的。而对于一个调度系统来说&#xff0c;能够支持的可调度的任务类型同样是一个非常重要的因素&#xf…

国内访问香港服务器选择什么路线?

​  国内访问香港服务器可以选择多种路线。首先&#xff0c;我们了解下各个线路的速度延迟。 一、CN2直连&#xff1a;解决了不同互联网服务提供商之间访问的难题&#xff0c;不需要绕到国际网络再从中国的三个网络入口进入。 二、优化直连&#xff1a;全国平均延迟60ms&…

Ubuntu----Linux命令-----防火墙(查看、关闭、启动)

一、查看防火墙状态 命令&#xff1a;ufw status 说明&#xff1a; 活动&#xff1a;防火墙是开启的 不活动&#xff1a;防火墙是关闭的 二、开启防火墙 命令&#xff1a;sudo ufw enable 开启防火墙后&#xff0c;可以查看防火墙状态 三、关闭防火墙 命令&#xff1a;sud…

如何通过构建遥感光谱反射信号与地表参数之间的关系模型来准确估算植被参数?植被参数光学遥感反演方法(Python)及遥感与生态模型数据同化算法

目录 专题一 植被参数遥感反演理论 专题二 植被叶片及冠层反射率模拟与处理 专题三 植被遥感模型参数敏感性分析 专题四 基于查找表(LUT)方法反演植被参数 专题五 基于优化算法反演植被参数 专题六 基于机器学习反演植被参数 专题七 遥感数据同化理论 专题八 同化遥感反…

单目标应用:基于成长优化算法(Growth Optimizer,GO)的微电网优化调度MATLAB

一、微网系统运行优化模型 微电网是由分布式电源、储能装置和能量转换装置等组成的小型发配电系统&#xff0c;具有成本低、电压低、污染小等特点。由于环保和能源压力&#xff0c;清洁可再生能源和分布式能源工业发展潜力巨大。微电网控制器可实现对电网的集中控制&#xff0…

Canonical 发布公告,Ubuntu可以在 Windows 10 商店找到

导读Canonical 前几天正式发布公告称&#xff0c;“Windows 10 Loves Ubuntu”&#xff0c;其 Ubuntu 16.04 LTS 在 Windows 10 商店中以应用的方式出现&#xff0c;这是继 openSUSE 及 SLES 之后&#xff0c;又一款可以从 Windows 10 商店中下载的 Linux 操作系统。 一些用户已…

GO语言网络编程(并发编程)并发介绍,Goroutine

GO语言网络编程&#xff08;并发编程&#xff09;并发介绍&#xff0c;Goroutine 1、并发介绍 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。 B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更…

Apache Linki 1.3.1+DataSphereStudio+正常启动+微服务+端口号

我使用的是一键部署容器化版本&#xff0c;官方文章 默认会启动6个 Linkis 微服务&#xff0c;其中下图linkis-cg-engineconn服务为运行任务才会启动,一共七个 LINKIS-CG-ENGINECONN:38681 LINKIS-CG-ENGINECONNMANAGER:9102 引擎管理服务 LINKIS-CG-ENTRANCE:9104 计算治理入…