9.Docker网络

文章目录

  • 1、Docker网络简介
  • 2、常用基本命令
  • 3、网络模式对比
    • 举例
    • 3.1、bridge模式
    • 3.2、host模式
    • 3.3、none模式
    • 3.4、container模式
    • 3.5、自定义网络

1、Docker网络简介

作用:

  • 容器间的互联和通信以及端口映射
  • 容器IP变动时候可以通过服务名直接进行网络通信而不受到影响(下面例子证明)

Docker启动后宿主机网络情况如下:

[root@localhost ~]# ifconfig 
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255inet6 fe80::42:f1ff:fee7:6e82  prefixlen 64  scopeid 0x20<link>ether 02:42:f1:e7:6e:82  txqueuelen 0  (Ethernet)RX packets 283  bytes 18529 (18.0 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 249  bytes 26762 (26.1 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.10.101  netmask 255.255.255.0  broadcast 192.168.10.255inet6 fe80::7d22:7ddb:c5c0:943e  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:06:ba:14  txqueuelen 1000  (Ethernet)RX packets 417482  bytes 390510898 (372.4 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 316220  bytes 80580892 (76.8 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1  (Local Loopback)RX packets 24  bytes 1554 (1.5 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 24  bytes 1554 (1.5 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255ether 52:54:00:4b:82:8e  txqueuelen 1000  (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

在CentOS7的安装过程中如果有选择相关虚拟化的的服务安装系统后,启动网卡时会发现有一个以网桥连接的私网地址的virbr0网卡(virbr0网卡:它还有一个固定的默认IP地址192.168.122.1),是做虚拟机网桥的使用的,其作用是为连接其上的虚机网卡提供 NAT访问外网的功能

docker0:bridge模式对应的名称默认为docker0.

默认创建3大网络模式:

[root@localhost ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
44119cc9ea23   bridge    bridge    local
d91b1b0c56a6   host      host      local
b99fab7bcddb   none      null      local

2、常用基本命令

docker network基本命令如下:

[root@localhost ~]# docker network --helpUsage:  docker network COMMANDManage networksCommands:connect     Connect a container to a networkcreate      Create a networkdisconnect  Disconnect a container from a networkinspect     Display detailed information on one or more networksls          List networksprune       Remove all unused networksrm          Remove one or more networks
  1. 查看网络

    [root@localhost ~]# docker network ls
    NETWORK ID     NAME      DRIVER    SCOPE
    44119cc9ea23   bridge    bridge    local
    d91b1b0c56a6   host      host      local
    b99fab7bcddb   none      null      local
    
  2. 查看网络源数据

    [root@localhost ~]# docker network inspect bridge
    [{"Name": "bridge","Id": "44119cc9ea23b265d7a358c044b6347a07eda61e1b950194b1268d80a6a1130f","Created": "2024-05-21T08:10:03.116073617-04:00","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": null,"Config": [{"Subnet": "172.17.0.0/16","Gateway": "172.17.0.1"}]},"Internal": false,"Attachable": false,"Ingress": false,"ConfigFrom": {"Network": ""},"ConfigOnly": false,"Containers": {},"Options": {"com.docker.network.bridge.default_bridge": "true","com.docker.network.bridge.enable_icc": "true","com.docker.network.bridge.enable_ip_masquerade": "true","com.docker.network.bridge.host_binding_ipv4": "0.0.0.0","com.docker.network.bridge.name": "docker0","com.docker.network.driver.mtu": "1500"},"Labels": {}}
    ]
    
  3. 创建和删除网络

    [root@localhost ~]# docker network create aa
    a74705857db0820cb65a4f2bc478dc3076759b5a7227d9c43191a36810c5a8be
    [root@localhost ~]# docker network ls
    NETWORK ID     NAME      DRIVER    SCOPE
    a74705857db0   aa        bridge    local
    44119cc9ea23   bridge    bridge    local
    d91b1b0c56a6   host      host      local
    b99fab7bcddb   none      null      local
    [root@localhost ~]# docker network inspect aa
    [{"Name": "aa","Id": "a74705857db0820cb65a4f2bc478dc3076759b5a7227d9c43191a36810c5a8be","Created": "2024-05-21T08:19:34.484538348-04:00","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": {},"Config": [{"Subnet": "172.18.0.0/16","Gateway": "172.18.0.1"}]},"Internal": false,"Attachable": false,"Ingress": false,"ConfigFrom": {"Network": ""},"ConfigOnly": false,"Containers": {},"Options": {},"Labels": {}}
    ]
    [root@localhost ~]# docker network rm aa
    aa
    [root@localhost ~]# docker network ls
    NETWORK ID     NAME      DRIVER    SCOPE
    44119cc9ea23   bridge    bridge    local
    d91b1b0c56a6   host      host      local
    b99fab7bcddb   none      null      local
    

3、网络模式对比

举例

通过实验验证容器实例内默认网络IP生产规则。

  1. 启动两个ubuntu容器实例

    [root@localhost ~]# docker run -it --name u1 ubuntu bash
    root@08193b3d0329:/# [root@localhost ~]# [root@localhost ~]# docker run -it --name u2 ubuntu bash
    root@4ab9fe4de68c:/#
    root@4ab9fe4de68c:/# [root@localhost ~]# [root@localhost ~]# docker ps
    CONTAINER ID   IMAGE     COMMAND   CREATED          STATUS          PORTS     NAMES
    4ab9fe4de68c   ubuntu    "bash"    16 seconds ago   Up 15 seconds             u2
    08193b3d0329   ubuntu    "bash"    34 seconds ago   Up 33 seconds             u1
    
  2. docker inspect 容器ID/容器名称

    [root@localhost ~]# docker inspect u1 | tail -n 20"bridge": {"IPAMConfig": null,"Links": null,"Aliases": null,"MacAddress": "02:42:ac:11:00:02","NetworkID": "44119cc9ea23b265d7a358c044b6347a07eda61e1b950194b1268d80a6a1130f","EndpointID": "fb78c785caa067f9e1be3f7db8a8f4aa8c5e4fb90c7d036f82397801df5bedf4","Gateway": "172.17.0.1","IPAddress": "172.17.0.2","IPPrefixLen": 16,"IPv6Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"DriverOpts": null,"DNSNames": null}}}}
    ]
    [root@localhost ~]# docker inspect u2 | tail -n 20"bridge": {"IPAMConfig": null,"Links": null,"Aliases": null,"MacAddress": "02:42:ac:11:00:03","NetworkID": "44119cc9ea23b265d7a358c044b6347a07eda61e1b950194b1268d80a6a1130f","EndpointID": "230a54ffdc3efea8bde3989bdee6d4238ec1d3f8eb387c1d1ee099bd3809d0d2","Gateway": "172.17.0.1","IPAddress": "172.17.0.3","IPPrefixLen": 16,"IPv6Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"DriverOpts": null,"DNSNames": null}}}}
    ]
    

    发现u1的IP为172.17.0.2,u2的IP为172.17.0.3

  3. 关闭u2实例,新建u3实例,查看IP变化

    [root@localhost ~]# docker stop u2
    u2
    [root@localhost ~]# docker ps
    CONTAINER ID   IMAGE     COMMAND   CREATED         STATUS         PORTS     NAMES
    08193b3d0329   ubuntu    "bash"    5 minutes ago   Up 5 minutes             u1
    [root@localhost ~]# docker run -it --name u3 ubuntu bash
    root@f68bf70d8921:/# [root@localhost ~]# 
    [root@localhost ~]# docker inspect u3 | tail -n 20"bridge": {"IPAMConfig": null,"Links": null,"Aliases": null,"MacAddress": "02:42:ac:11:00:03","NetworkID": "44119cc9ea23b265d7a358c044b6347a07eda61e1b950194b1268d80a6a1130f","EndpointID": "66087aa062483842ac5e1028e03cbacfde64c6b0a0ee49c586b42f0650db858f","Gateway": "172.17.0.1","IPAddress": "172.17.0.3","IPPrefixLen": 16,"IPv6Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"DriverOpts": null,"DNSNames": null}}}}
    ]
    

    此时u3的IP为172.17.0.3

结论:

docker容器内部的ip是可能会发生变化的。

3.1、bridge模式

使用--network bridge指定,默认使用docker0。

Docker 服务默认会创建一个docker0 网桥(其上有一个 docker0 内部接口),该桥接网络的名称为docker0。它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。Docker默认指定了docker0接口的IP地址和子网掩码,让主机和容器之间可以通过网桥相互通信。

查看 bridge 网络的详细信息,并通过 grep 获取名称项如下:

[root@localhost ~]# docker network inspect bridge | grep name"com.docker.network.bridge.name": "docker0",
[root@localhost ~]# ifconfig | grep docker
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

详细原理:

  1. Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信。
  2. docker run的时候,没有指定network默认使用的网桥模式就是bridge,使用的就是docker0。在宿主机ifconfig就可以看到docker0和自己create的network(后面讲)eth0,eth1,eth2……代表网卡一,网卡二,网卡三……。lo代表127.0.0.1,即localhost。inet addr用来表示网卡的IP地址。
  3. 网桥docker0创建一对对等虚拟设备接口,网桥端叫veth,容器端叫eth0,成对匹配。
    • 整个宿主机的网桥模式都是docker0,类似一个交换机有一堆接口,每个接口叫veth,在本地主机和容器内分别创建一个虚拟接口,并让他们彼此联通(这样一对接口叫veth pair);即docker0上面的每个veth匹配某个容器实例内部的eth0,两两配对,一一匹配。
    • 每个容器实例内部也有一块网卡,每个接口叫eth0。

通过上述,将宿主机上的所有容器都连接到这个内部网络上,两个容器在同一个网络下会从这个网关下各自拿到分配的ip,此时两个容器的网络是互通的。

在这里插入图片描述

实验验证:

[root@localhost ~]# docker run -d -p 8081:8080 --name tomcat81 billygoo/tomcat8-jdk8
3f29cf92d37828ddb82b2d6f14e98a876f007505cee9732a0cc39269bf9e2812
[root@localhost ~]# docker run -d -p 8082:8080 --name tomcat82 billygoo/tomcat8-jdk8
d11c5d7e24f4c749db8fdecec62ba81ba25bc9f565bfb1b8e6267dfdc3181179
[root@localhost ~]# docker exec -it tomcat81 bash
root@3f29cf92d378:/usr/local/tomcat# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
43: eth0@if44: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ac:11:00:04 brd ff:ff:ff:ff:ff:ff link-netnsid 0inet 172.17.0.4/16 brd 172.17.255.255 scope global eth0valid_lft forever preferred_lft foreverinet6 fe80::42:acff:fe11:4/64 scope link valid_lft forever preferred_lft forever
root@3f29cf92d378:/usr/local/tomcat# read escape sequence
[root@localhost ~]# docker exec -it tomcat82 bash
root@d11c5d7e24f4:/usr/local/tomcat# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
45: eth0@if46: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ac:11:00:05 brd ff:ff:ff:ff:ff:ff link-netnsid 0inet 172.17.0.5/16 brd 172.17.255.255 scope global eth0valid_lft forever preferred_lft foreverinet6 fe80::42:acff:fe11:5/64 scope link valid_lft forever preferred_lft forever
root@d11c5d7e24f4:/usr/local/tomcat# read escape sequence
[root@localhost ~]# ip addr | tail -n 8
44: veth73a16b8@if43: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP link/ether a2:fb:75:9a:05:56 brd ff:ff:ff:ff:ff:ff link-netnsid 2inet6 fe80::a0fb:75ff:fe9a:556/64 scope link valid_lft forever preferred_lft forever
46: vethefa7573@if45: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP link/ether 26:50:1f:5e:9d:7e brd ff:ff:ff:ff:ff:ff link-netnsid 3inet6 fe80::2450:1fff:fe5e:9d7e/64 scope link valid_lft forever preferred_lft forever

从宿主机及两个容器的IP信息可验证,在bridge模式下veth和eth0两两匹配。

3.2、host模式

使用--network host指定,该容器与主机IP一致,共用主机端口。

host模式容器直接使用宿主机的 IP 地址与外界进行通信,不再需要额外进行NAT转换。

容器将不会获得一个独立的Network Namespace, 而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡而是使用宿主机的IP和端口。

在这里插入图片描述

实验验证:

命令1:docker run -d -p 8083:8080 --network host --name tomcat83 billygoo/tomcat8-jdk8

在这里插入图片描述

问题:

docke启动时总是遇见标题中的警告

原因:

docker启动时指定–network=host或-net=host,如果还指定了-p映射端口,那这个时候就会有此警告,并且通过-p设置的参数将不会起到任何作用,端口号会以主机端口号为主,重复时则递增。

解决:

解决的办法就是使用docker的其他网络模式,例如–network=bridge,这样就可以解决问题,或者直接无视。

命令2:docker run -d --network host --name tomcat83 billygoo/tomcat8-jdk8

容器详情如下图所示

在这里插入图片描述

​ 通过访问http://宿主机IP:8080/,进行测试。在CentOS里面用默认的火狐浏览器访问容器内的tomcat83看到访问成功,因为此时容器的IP借用主机的,所以容器共享宿主机网络IP,这样的好处是外部主机与容器可以直接通信。

3.3、none模式

使用--network none指定。

在none模式下,并不为Docker容器进行任何网络配置。 也就是说,这个Docker容器没有网卡、IP、路由等信息,只有一个lo(127.0.0.1)需要我们自己为Docker容器添加网卡、配置IP等。

验证实验:

docker run -d -p 8084:8080 --network none --name tomcat84 billygoo/tomcat8-jdk8

进入容器内部查看

在这里插入图片描述

在容器外部查看

在这里插入图片描述

3.4、container模式

使用--network container:Name或者--network container:容器ID指定,该容器和指定容器共用IP和端口

新建的容器和已经存在的一个容器共享一个网络ip配置而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。

在这里插入图片描述

错误案例:

docker run -d -p 8085:8080 --name tomcat85 billygoo/tomcat8-jdk8
docker run -d -p 8086:8080 --network container:tomcat85 --name tomcat86 billygoo/tomcat8-jdk8

报错,相当于tomcat86和tomcat85公用同一个ip同一个端口,导致端口冲突。

本案例使用该镜像演示不适合。

实验验证:

docker run -it --name alpine1 alpine /bin/sh
docker run -it --network container:alpine1 --name alpine1 alpine /bin/sh

运行结果,验证共用搭桥

在这里插入图片描述

假如此时关闭alpine1,再看看alpine2

在这里插入图片描述

结论:依赖容器(alpine2)的网络需要保证该容器(alpine1)的稳定运行,否则依赖容器(alpine2)网络将会瘫痪。

3.5、自定义网络

自己创建一个network并使用。

before实验验证:

docker run -d -p 8081:8080 --name tomcat81 billygoo/tomcat8-jdk8
docker run -d -p 8082:8080 --name tomcat82 billygoo/tomcat8-jdk8

上述成功启动并用docker exec进入各自容器实例内部。

按照IP地址ping是OK的

在这里插入图片描述

按照服务名ping是失败的
在这里插入图片描述

after实验验证:

自定义桥接网络,自定义网络默认使用的是桥接网络bridge

  1. 新建自定义网络
[root@zyn01 ~]# docker network create zzyy_network
7bf416ce963c26e39682b1259694ae7c05bebbb0d97b30b46c9169cf952a9dd8
[root@zyn01 ~]# docker network ls
NETWORK ID     NAME           DRIVER    SCOPE
52da5ad0d3c8   bridge         bridge    local
5068ece9f839   host           host      local
0b3a4f577ba6   none           null      local
7bf416ce963c   zzyy_network   bridge    local
  1. 新建容器加入上一步新建的自定义网络
docker run -d -p 8081:8080 --network zzyy_network --name tomcat81 billygoo/tomcat8-jdk8
docker run -d -p 8082:8080 --network zzyy_network --name tomcat82 billygoo/tomcat8-jdk8
  1. 互相ping测试

在这里插入图片描述

结论:自定义网络本身就维护了主机名和ip的对应关系(ip和域名都能ping通)

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

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

相关文章

# 文件或目录损坏且无法读取 的解决方案

文件或目录损坏且无法读取 的解决方案 一、问题描述&#xff1a; windows 系统下&#xff0c;当对某一个文件或文件夹操作时&#xff0c;出现【文件或目录损坏且无法读取】&#xff0c;这时不管对其进行修改、删除、更改属性等操作&#xff0c;都不能正常进行&#xff0c;在 …

从0开始学统计-t检验

1.什么是t检验&#xff1f; t检验是一种用于比较两个样本均值之间差异是否显著的统计方法。它通常用于以下几种情况&#xff1a; &#xff08;1&#xff09;单样本 t 检验&#xff1a;用于检验一个样本的平均值是否与一个已知的总体平均值&#xff08;或者一个假设的总体平均…

11.jenkins调整上线的脚本实现tag方式上线

jenkins调整上线的脚本实现tag方式上线 多次打标签重新提交到gitlab远程仓库-基于multi-line string parameter 修改脚本html_deploy_tar.sh #!/usr/bin/bashDate$(date %F-%H-%M) web_server"192.168.111.22 192.168.111.23" Name${Date}-${git_version} code_t…

网络模型-路由策略

一、路由策略 路由策略(Routing Policy)作用于路由&#xff0c;主要实现了路由过滤和路由属性设置等功能&#xff0c;它通过改变路由属性(包括可达性)来改变网络流量所经过的路径。目的:设备在发布、接收和引入路由信息时&#xff0c;根据实际组网需要实施一些策略&#xff0c…

笔记89:LeetCode_135_分发糖果

前言&#xff1a; 注&#xff1a;代码随想录中没有很清楚的提起想出方法的思路&#xff0c;只是给出了解决这个问题的大致思路和代码&#xff1b;下面我将介绍一下我的思考过程&#xff0c;并贴出实现代码&#xff1b; a a a a 思考过程&#xff1a; 思路1&#xff1a;为了…

【实际项目精选源码】ehr人力资源管理系统实现案例(java,vue)

一、项目介绍 一款全源码可二开&#xff0c;可基于云部署、私有部署的企业级数字化人力资源管理系统&#xff0c;涵盖了招聘、人事、考勤、绩效、社保、酬薪六大模块&#xff0c;解决了从人事招聘到酬薪计算的全周期人力资源管理&#xff0c;符合当下大中小型企业组织架构管理运…

docker-compose Install homer

homer前言 一个非常简单的静态主页,为您的服务器保持您的服务在手,从一个简单的yaml配置文件。 前提要求 安装 docker docker-compose 参考创建一键安装homer 脚本 homer安装位置/homerhomer 脚本位置/homer/assetshomer logo 图标/home/assets/iconshomer 端口80homer 颜色…

运维 之 大文件分片刻录光盘

需求 因有些企业中涉及设备只能通过光盘介质方式拷贝文件&#xff0c;然而采购的单张光盘又不能确保存放下一些较大的文件&#xff0c;所以只能通过分片的方式逐个光盘存储。 Windows处理 1、安装压缩软件&#xff08;自行选择&#xff0c;这里使用WinRAR&#xff09;、Ultr…

HTML静态网页成品作业(HTML+CSS)——企业酒店官网网页(5个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有5个页面。 二、作品演示 三、代…

FuTalk设计周刊-Vol.053

#AI漫谈 热点捕手 1.Midjourney推出新功能Room 用户可在聊天室中一起创作图像 Midjourney最近推出了一个有趣的新功能——Room&#xff0c;为用户提供了一个协作和社交平台&#xff0c;用户可以一起创建和分享图像&#xff0c;并参与实时聊天。Room促进了用户之间的互动和合作…

C语言 | Leetcode C语言题解之第111题二叉树的最小深度

题目&#xff1a; 题解&#xff1a; typedef struct {int val;struct TreeNode *node;struct queNode *next; } queNode;void init(queNode **p, int val, struct TreeNode *node) {(*p) (queNode *)malloc(sizeof(queNode));(*p)->val val;(*p)->node node;(*p)->…

CentOS 7安装alertmanager

说明&#xff1a;本文介绍如何在CentOS 7安装alertmanager&#xff1b; Step1&#xff1a;下载安装包 访问Github仓库&#xff0c;下载对应版本的alertmanager安装包 https://github.com/prometheus/alertmanager/releases 如何查看自己系统的信息&#xff0c;可参考下图中的…

AI播客下载:The Logan Bartlett Show Podcast(AI创业投资主题)

Logan Bartlett Show Podcast是一个播客&#xff0c;主持人Logan Bartlett与科技界的领导者以及投资者进行对话&#xff0c;讨论他们在运营或投资企业中学到的经验教训&#xff0c;主要集中在科技创投领域。 Logan Bartlett 是 Redpoint Ventures 的投资人&#xff0c;并且在该…

【DZ模板】克米设计APP手机版本地化+完美使用

模版介绍 【DZ模板】价值288克米设计APP手机版DZ模板 数据本地化完美使用 腾讯官方出品discuz论坛DIY的后台设置&#xff0c;功能齐全&#xff0c;论坛功能不亚于葫芦侠&#xff0c;自定义马甲&#xff0c;自定义认证&#xff0c;自定义广告&#xff0c;完全可以打造出自己想…

SW 弯曲找方向

当旋转弯曲轴的时候,半径和角度 越和理论的接近,越接近(只要输入角度,然后旋转弯曲轴,看半径跟随的变化值)

2024Spring> HNU-计算机系统-实验4-Buflab-导引+验收

前言 称不上导引了&#xff0c;因为验收已经结束了。主要是最近比较忙&#xff0c;在准备期末考试。周五晚上才开始看实验&#xff0c;自己跟着做了一遍实验&#xff0c;感觉难度还是比bomblab要低的&#xff0c;但是如果用心做的话对于栈帧的理解确实能上几个档次。 实验参考…

基于antd的DatePicker 组件封装业务组件

先看一下我写的目录结构: 依次来看业务代码; (1)RangeTime.tsx import {useState,uesCallback} from react; import {DatePicker} from antd; import {RangePickerProps as AntdRangePickerProps} from antd/es/date-picker; import {Moment} from moment; import type {Ran…

ROCm上来自Transformers的双向编码器表示(BERT)

14.8. 来自Transformers的双向编码器表示&#xff08;BERT&#xff09; — 动手学深度学习 2.0.0 documentation (d2l.ai) 代码 import torch from torch import nn from d2l import torch as d2l#save def get_tokens_and_segments(tokens_a, tokens_bNone):""&qu…

rk3568_atomic

文章目录 前言一、atomic是什么?二、原子操作API函数1.atomic原子操作2.原子位操作API三、atomic驱动实验总结前言 本文记录的是正点原子rk3568开发板的atomic实验 一、atomic是什么? 不同的线程在进行读写的过程中,可能会冲突乱入,导致会有预想不到的结果。所以为了让数…

开源模型应用落地-LangSmith试炼-入门初体验-数据集评估(三)

一、前言 LangSmith是一个用于构建生产级 LLM 应用程序的平台&#xff0c;它提供了调试、测试、评估和监控基于任何 LLM 框架构建的链和智能代理的功能&#xff0c;并能与LangChain无缝集成。通过使用LangSmith帮助开发者深入了解模型在不同场景下的表现&#xff0c;让开发者能…