Docker网络模型以及容器网络初探(一)

news2024/12/22 18:04:28

〇、前言

安装Docker时,它会自动创建三个网络,默认bridge网桥(创建容器默认连接到此网络)、 nonehost。各个方式有各自的特点,它们有着特定的差距,比如网络性能等,一般按照实际应用方式手动指定(或者选用默认)一个网络,或者使用命令自己添加一个自己定义的网络。

一、关于Docker0

Docker0 是 Docker 引擎创建的默认网络接口。当 Docker 引擎安装和启动时,它会自动创建一个名为 docker0 的虚拟网络接口,本质上是一个虚拟网桥。

Docker0 接口用于连接 Docker 容器宿主机之间的通信。它是一个虚拟以太网桥接口,用于在 Docker 主机和容器之间进行数据传输。

Docker0 接口有以下特点:

  • IP 地址:默认情况下,Docker0 接口会自动分配一个 IP 地址,通常是 172.17.0.1。这个 IP 地址用作 Docker 主机上运行的容器的网关地址

  • 网络连接:Docker0 接口会与宿主机的物理网卡(通常是 eth0)进行连接,通过桥接的方式实现容器和宿主机之间的通信。

  • 网络转发:Docker0 接口负责将从容器发出的网络流量转发到宿主机的物理网卡,以及将从宿主机发出的网络流量转发给容器。

  • 网络配置:Docker0 接口的网络配置可以通过 Docker 引擎的配置文件进行调整,如修改 IP 地址范围、子网掩码等。

需要注意的是,Docker0 接口是与宿主机网络环境紧密相关的,每个 Docker 主机只有一个 Docker0 接口。在 Docker 容器之间通信时,可以通过 Docker0 接口进行转发,但如果需要与外部网络通信,还需要进行端口映射或使用其他网络模式

罗素说过,我们不管听到多么复杂的概念和事物,我们应该及时的问自己,这个概念或事物真正说了些什么,或者事实究竟是什么。

那么 Docker0 到底是什么呢?

启动两个容器看看。

二、容器网络分析

1、获取两个镜像

docker pull archlinux
docker pull ubuntu

2、以默认方式启动镜像

以下命令以默认方式(bridge网络)创建并启动以及运行了容器里面的bash 程序(最好打开多个终端窗口,每个窗口运行不同的容器,不用来回切换),这样能直接进入容器里面:

docker run -it --name=arch2 archlinux /bin/bash 
docker run -it --name=ubuntu2 ubuntu /bin/bash 

在另一个终端(宿主机)上看看:

root@**********:~# docker ps
CONTAINER ID   IMAGE       COMMAND       CREATED        STATUS          PORTS     NAMES
30f913d8e3ff   ubuntu      "/bin/bash"   14 hours ago   Up 35 minutes             ubuntu2
ec0ca9aedc9f   archlinux   "/bin/bash"   14 hours ago   Up 36 minutes             arch2

可以看到确实有两个容器正在运行。

3、查看容器网络

root@********:~# docker network ls
NETWORK ID     NAME           DRIVER    SCOPE
da149ecc5bf3   bridge         bridge    local
5c60928659e8   host           host      local
1c8eeab72508   none           null      local

可以看到本地确实有 3 个网络,因为这是以默认方式启动的,直接查看 bridge 网络信息:

root@*******:~# docker network inspect bridge 
[
    {
        "Name": "bridge",
        "Id": "da149ecc5bf3de9eef56945b6061cc512e78e909cde4c53b8a80cc6fb0ad3015",
        "Created": "2023-07-03T23:29:11.078138805+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "30f913d8e3fffbc5e03df7be0e99c7d43dc52c5f761638e8deae6da30933ab06": {
                "Name": "ubuntu2",
                "EndpointID": "b51799e6235505d0c571595cc210a004933822ab7d0c164353b6ceab562e1eb4",
                "MacAddress": "02:42:ac:12:00:03",
                "IPv4Address": "172.18.0.3/16",
                "IPv6Address": ""
            },
            "ec0ca9aedc9fff82688a5590d8b3243cb60b33bd745962cb94ea5848bc170525": {
                "Name": "arch2",
                "EndpointID": "e4bdf03a6363a2b7aa80af73aba71f6f5c775025d61164dccc4474376520663f",
                "MacAddress": "02:42:ac:12:00:02",
                "IPv4Address": "172.18.0.2/16",
                "IPv6Address": ""
            }
        },
        "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": {}
    }
]

只需要把目光放到关于 bridgecontainers 的信息上来:

"IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },

可以看到 bridge 网关为 172.18.0.1,子网掩码为172.18.0.0/16

 "Containers": {
            "30f913d8e3fffbc5e03df7be0e99c7d43dc52c5f761638e8deae6da30933ab06": {
                "Name": "ubuntu2",
                "EndpointID": "b51799e6235505d0c571595cc210a004933822ab7d0c164353b6ceab562e1eb4",
                "MacAddress": "02:42:ac:12:00:03",
                "IPv4Address": "172.18.0.3/16",
                "IPv6Address": ""
            },
            "ec0ca9aedc9fff82688a5590d8b3243cb60b33bd745962cb94ea5848bc170525": {
                "Name": "arch2",
                "EndpointID": "e4bdf03a6363a2b7aa80af73aba71f6f5c775025d61164dccc4474376520663f",
                "MacAddress": "02:42:ac:12:00:02",
                "IPv4Address": "172.18.0.2/16",
                "IPv6Address": ""
            }
        },

对于 ubuntu2,它的 Mac 地址为:02:42:ac:12:00:03,ipv4为:172.18.0.3/16
对于 arch2,它的 Mac 地址为:02:42:ac:12:00:02,ipv4 为:172.18.0.2/16

这两项信息非常重要,因为一会儿要验证。

4、宿主机网络配置

我们通过以下命令查看本机网络(这里夹杂了一个自定义的网络,可以忽略):

root@********:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:16:3e:00:7c:2d brd ff:ff:ff:ff:ff:ff
    inet 172.17.9.165/18 brd 172.17.63.255 scope global dynamic eth0
       valid_lft 314697479sec preferred_lft 314697479sec
    inet6 fe80::216:3eff:fe00:7c2d/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:2c:62:19:d9 brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.1/16 brd 172.18.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:2cff:fe62:19d9/64 scope link 
       valid_lft forever preferred_lft forever
4: br-b1e26274afd7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:8e:59:43:24 brd ff:ff:ff:ff:ff:ff
    inet 172.19.0.1/16 brd 172.19.255.255 scope global br-b1e26274afd7
       valid_lft forever preferred_lft forever
    inet6 fe80::42:8eff:fe59:4324/64 scope link 
       valid_lft forever preferred_lft forever
14: veth7958290@if13: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether 5e:67:bd:18:47:4d brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::5c67:bdff:fe18:474d/64 scope link 
       valid_lft forever preferred_lft forever
16: vetha2319a1@if15: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-b1e26274afd7 state UP group default 
    link/ether 0e:28:d3:40:1e:97 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::c28:d3ff:fe40:1e97/64 scope link 
       valid_lft forever preferred_lft forever
18: veth23c3fd5@if17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether 56:a1:a5:02:37:0b brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet6 fe80::54a1:a5ff:fe02:370b/64 scope link 
       valid_lft forever preferred_lft forever
20: veth952254a@if19: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-b1e26274afd7 state UP group default 
    link/ether 42:83:4d:c3:7d:f8 brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet6 fe80::4083:4dff:fec3:7df8/64 scope link 
       valid_lft forever preferred_lft forever

重点关注 docker0 上的信息:

3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:2c:62:19:d9 brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.1/16 brd 172.18.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:2cff:fe62:19d9/64 scope link 
       valid_lft forever preferred_lft forever
     valid_lft forever preferred_lft forever
       
14: veth7958290@if13: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether 5e:67:bd:18:47:4d brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::5c67:bdff:fe18:474d/64 scope link 
       valid_lft forever preferred_lft forever
     
18: veth23c3fd5@if17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether 56:a1:a5:02:37:0b brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet6 fe80::54a1:a5ff:fe02:370b/64 scope link 
       valid_lft forever preferred_lft forever

解释一下就是:

  • docker0:这是 Docker 默认创建的虚拟网桥接口,用于连接 Docker 主机和容器。它的状态为 UP,表示已启用。它的 IP 地址是 172.18.0.1,子网掩码为 16。它的 MAC 地址是 02:42:2c:62:19:d9。这个接口的主要作用是实现 Docker 主机和容器之间的网络通信。
  • veth7958290@if13:这是一个虚拟以太网设备,与 docker0 网桥相连。它的状态为 UP,表示已启用。它的 MAC 地址是 5e:67:bd:18:47:4d。它的 IPv6 地址是 fe80::5c67:bdff:fe18:474d。这个接口是连接到 docker0 网桥的容器的一部分。
  • veth23c3fd5@if17:这是另一个虚拟以太网设备,与 docker0 网桥相连。它的状态为 UP,表示已启用。它的 MAC 地址是 56:a1:a5:02:37:0b。它的 IPv6 地址是 fe80::54a1:a5ff:fe02:370b。这个接口也是连接到 docker0 网桥的容器的一部分。

这些接口是 Docker 在创建和管理容器时自动创建的虚拟网络设备,用于容器之间和容器与主机之间的通信。每个容器都有自己的虚拟网络接口,并且通过网桥与主机和其他容器连接起来。这样,容器之间可以进行网络通信。

现在一个清晰的图景被描述出来了:
在这里插入图片描述

为了获得一个完整的图景,进入容器再研究研究。

5、ubuntu2、arch2网络配置

ubuntu2 网络信息:

root@*******:/# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
17: eth0@if18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:12:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.18.0.3/16 brd 172.18.255.255 scope global eth0
       valid_lft forever preferred_lft forever

解释一下就是:

  • 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    这是回环接口(loopback interface),用于本地主机内部通信。
    <LOOPBACK,UP,LOWER_UP> 表示接口是一个回环接口,并且处于启用状态。
    mtu 65536 表示最大传输单元的大小。
    qdisc noqueue 表示没有队列机制,即无需排队即可传输数据。
    eth0@if18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default

  • 这是第一个以太网接口(Ethernet interface),标记为 eth0。
    <BROADCAST,MULTICAST,UP,LOWER_UP> 表示接口支持广播和多播,并且处于启用状态。
    mtu 1500 表示最大传输单元的大小为1500字节。
    qdisc noqueue 表示没有队列机制,即无需排队即可传输数据。
    state UP 表示接口处于启用状态。
    link/ether 02:42:ac:12:00:03 表示接口的物理地址(MAC 地址)为 02:42:ac:12:00:03。
    inet 172.18.0.3/16 表示接口的 IPv4 地址为 172.18.0.3,子网掩码为 /16。
    brd 172.18.255.255 表示广播地址。
    scope global 表示接口的地址在全局范围内可达。

arch2 网络信息:

[root@******* /]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
13: eth0@if14: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.18.0.2/16 brd 172.18.255.255 scope global eth0
       valid_lft forever preferred_lft forever

6、完整的网络拓扑图景

通过以上的分析,就能轻而易举地得到这个图:

在这里插入图片描述

三、结论

1、ubuntu2、arch2是共用的一个路由器(网桥):docker0

2、所有的容器启动时,如果不指定网络的情况下,都是docker0路由的;

3、docker0 通过 NAT 穿透连到 host 主机的物理网卡上(补充)。

四、测试

通过 arch2 去 ping ubuntu1:

root@******** /]# ping 172.18.0.3
PING 172.18.0.3 (172.18.0.3) 56(84) bytes of data.
64 bytes from 172.18.0.3: icmp_seq=1 ttl=64 time=0.095 ms
64 bytes from 172.18.0.3: icmp_seq=2 ttl=64 time=0.123 ms
64 bytes from 172.18.0.3: icmp_seq=3 ttl=64 time=0.160 ms
......

这是没问题的,因为它们位于同一个内网,当然 ping 的通。

[root@******** /]# ping baidu.com
PING baidu.com (110.242.68.66) 56(84) bytes of data.
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=1 ttl=48 time=28.2 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=2 ttl=48 time=28.2 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=3 ttl=48 time=28.2 ms
......

这是 ping 互联网的服务器,当然也 ping 的通,就像你手机连接 wifi,肯定可以上网。

本节完,感谢你的阅读。

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

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

相关文章

大数据之数据采集项目总结——hadoop,hive,openresty,frcp,nginx,flume

1、前期准备 2、数据收集 1、开启openresty&#xff0c;nginx和frcp内网穿透 2、编辑并启动定时器 3、查看是否收集到了数据 数据收集阶段结束&#xff0c;进入下一个阶段 2、将收集到的切分好的数据上传到hdfs 使用的工具&#xff1a;flume flume像一个管道一样&#xff0c…

三十九、动态规划——线性DP问题-例题题解

线性DP问题的例题状态划分 一、问题&#xff1a;数字三角形1、题目内容2、状态划分1&#xff09;状态编号 f[i][j]2&#xff09;状态划分 3、题解 二、最长上升子序列1、题目内容2、状态划分1&#xff09;状态编号 f[i]2&#xff09;状态划分 3、题解 三、最长公共子序列1、题目…

【二维偏序+双指针】ABC245 E

E - Wrapping Chocolate (atcoder.jp) 题意&#xff1a; 思路&#xff1a; 因为两个数组都是无序的&#xff0c;因此可以考虑给这两个数组都排个序 将物品和盒子都按照两个维度去排序 我们可以先去枚举物品&#xff0c;然后去选对应的盒子 在选盒子的过程中&#xff0c;注…

【王道·操作系统】第四章 文件管理(下)

一、文件系统 1.1 文件系统的层次结构 用户需要通过操作系统提供的接口发出上述请求——用户接口由于用户提供的是文件的存放路径&#xff0c;因此需要操作系统一层一层地查找目录&#xff0c;找到对应的目录项——文件目录系统不同的用户对文件有不同的操作权限&#xff0c;因…

c++读取字符串字符时出错

这是我做的一个c爬虫程序但是在抓取网页的时候string类型传递出现了问题 以下是图片代码 url的值是 "http://desk.zol.com.cn/" 我不知道为什么数据传递会出问题 请大佬指教

Java 串口通信(RS232/485)

Java 串口通信&#xff08;RS232/485&#xff09; 一.串口通信页面二.串口服务实现1.Java 串口通信配置1.扩展包和依赖库2.Pom配置 2.启动类3.工具包类1.Common2.Crc16Modbus3.SerialUtil 4.WebSocket 配置1.启动配置2.监听配置 5.UI交互类1.串口配置对象2.串口信息获取接口3.R…

HOT39-对称二叉树

leetcode原题链接&#xff1a;对称二叉树 题目描述 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&a…

JVM03-优化垃圾回收

JVM的内存区域中&#xff0c;程序计数器、虚拟机栈和本地方法栈这3个区域是线程私有的&#xff0c;随着线程的创建而创建&#xff0c;销毁而销毁&#xff1b;栈中的栈帧随着方法的进入和退出进行入栈和出栈操作&#xff0c;每个栈帧中分配多少内存基本是在类结构确定下来的时候…

消息中间件面试题详解

RabbitMQ 如何保证消息不丢失 消息的重复消费问题如何解决 rabbitmq中死信交换机&#xff08;RabbitMQ延迟队列有了解吗&#xff09; 延迟队列&#xff1a;进入队列的消息会被延迟消费的队列 场景&#xff1a;超时订单&#xff0c;限时优惠&#xff0c;定时发布 延迟队列 …

【Linux】-第一个小程序(进度条)

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树 &#x1f389;作者宣言&#xff1a;认真写好每一篇博客 &#x1f38a;作者gitee:gitee &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法 如 果 你 喜 欢 作 者 的 文 章 &#xff0c;就 给 作…

Activiti modoler 整合后报错 TypeError: Cannot read property ‘namespace‘ of undefined

之前在Demo整合过没问题&#xff0c;结果好不容易整合到现在的项目&#xff0c;结果出现成这个鬼样子……问题找了好久&#xff0c;一直以为是SpringSecurity请求限制没放开&#xff0c;所以找SpringSecurity的debug日志&#xff0c;浏览器请求有没有404、500、502等&#xff0…

将OpenAI和ChatGPT模型与LearnDash线上学习平台结合使用

人工智能革命来了&#xff01;&#xff08;以尽可能最好的方式。&#xff09;了解如何使用 Uncanny Automator 通过 OpenAI 和 ChatGPT 模型为您的线上学习和LearnDash LMS提供动力。 当人们听到“人工智能”这个词时&#xff0c;他们往往会想到流氓机器人、无政府状态的机器人…

科技项目验收测试报告包括哪些内容?

科技项目验收测试报告是评估科技项目质量和可靠性的重要文件。通过全面的测试和评估&#xff0c;可以确保项目的质量&#xff0c;提高用户满意度&#xff0c;降低项目风险。 一、科技项目验收测试报告的内容 1. 项目概述&#xff1a;介绍项目的背景、目标和范围&#xff0c;…

从 AI 增强到大模型,企业使用数据的方式又将如何变化?

AI&#xff08;Artificial Intelligence&#xff0c;人工智能&#xff09;的发展不过百年&#xff0c;却已经深刻影响着人们的思维和见解&#xff0c;并逐渐关联到每个人生活和工作的方方面面。从最初的规则引擎和引入统计学方法&#xff0c;到基于知识表示和推理机制的专家系统…

瓴羊QuickBI数据门户帮助企业高效管理和展示数据,使其更加明确易懂

随着信息技术时代的到来&#xff0c;越来越多的企业意识到商业信息是其最宝贵的资产之一。对于获取商业信息&#xff0c;需要专业的数据分析。因此&#xff0c;商业智能BI工具&#xff0c;如瓴羊QuickBI已经成为企业信息化中必不可少的工具。它拥有卓越的数据管理和展示功能&am…

VS2019中WebService实现发布、调用以及问题汇总

VS2019中WebService实现发布、调用以及问题汇总 前言一、WebService是什么&#xff0c;意义有哪些&#xff1f;二、创建二.发布三.访问问题总结1.不是专用连接2.HTTP错误 403.14 - Forbidden3.HTTP 错误 404.3 - Not Found4.应用程序种服务器错误 前言 在对接工厂Mes的过程中&…

图书馆流量监控性能分析案例

前言 图书馆信息中心老师反应&#xff0c;用户反馈系统有访问慢的情况&#xff0c;需要通过流量分析系统来了解图书馆系统的运行情况&#xff0c;此报告专门针对图书馆系统的性能数据做了分析。 图书馆已部署NetInside流量分析系统&#xff0c;使用流量分析系统提供实时和历史…

springboot 整合mybatis plus,使用druid 切换多数据源实现单数据库事务,附赠项目源码地址

项目源码地址 GitHub - liyanlei58/ssm: springboot druid mybatis plus 事务 最近想搭一套spring cloud开发环境&#xff0c;各种不顺利吧&#xff0c;先是spring cloud的组件某些功能不好用&#xff0c;是版本自身的bug。后来又碰到了事务无法回滚&#xff0c;这个搞了好几个…

银河麒麟服务器v10 sp1 安装mysql

可以先用 dpkg --list|grep mysql 查看自己的mysql有哪些依赖&#xff1a; 上图已经是安装后的截图&#xff0c;然后再卸载 sudo apt-get autoremove --purge mysql-common 本文在没有安装之前&#xff0c;只有mysql-common包&#xff0c;再用dpkg --list|grep mysql查看&…

[MySQL]在搭载Linux系统(centos7)的云服务上安装MySQL

[MySQL]MySQL 在 Centos 7环境安装 安装与卸载中&#xff0c;用户全部切换成为root&#xff0c;⼀旦安装&#xff0c;普通用户也能够使用。 文章目录 [MySQL]MySQL 在 Centos 7环境安装1. 卸载不要的环境2. 获取MySQL官方yum源3. 安装mysql yum 源&#xff0c;对比前后yum源4.…