MariaDB docker从主机Windows 10与Linux进行访问

MariaDB docker从主机Windows 10与Linux进行访问,docker,mariadb,Docker,Mariadb,事实证明,下面询问的Docker/Windows问题的原因是我这边的Hyper-V存在本地网络问题。因此,这与Windows和Linux上的Docker之间的区别无关,也与MariaDB无关。我想删除这个问题,但不想这样做,因为它已经得到了答案 我不熟悉docker,但不熟悉MySQL。我想在Docker和MariaDB一起玩。我在Windows10和Ubuntu上创建了Docker安装 对于MariaDB容器,我遵循这里的描述,因为它似乎比下面更准确: 我使用以下方法创建了一个MariaDB

事实证明,下面询问的Docker/Windows问题的原因是我这边的Hyper-V存在本地网络问题。因此,这与Windows和Linux上的Docker之间的区别无关,也与MariaDB无关。我想删除这个问题,但不想这样做,因为它已经得到了答案


我不熟悉docker,但不熟悉MySQL。我想在Docker和MariaDB一起玩。我在Windows10和Ubuntu上创建了Docker安装

对于MariaDB容器,我遵循这里的描述,因为它似乎比下面更准确:

我使用以下方法创建了一个MariaDB容器:

docker run --name mariadb -e MYSQL_ROOT_PASSWORD=test -d mariadb:latest
“最新”的ADB服务器10.5.8

我验证了my.cnf中启用了通过端口3306的tcp访问

[client-server]
port=3306
从容器内部运行MySQL客户端是可行的

docker exec -it MariaDB MySQL -u root -p
从主机运行MySQL客户端

mysql -h 172.17.0.2 -u root -p
适用于我的Ubuntu主机,但不适用于我的Windows 10主机。在Windows上,命令会在一段时间后返回,但不会显示任何消息

你能告诉我为什么并帮助我吗?

更新你的命令,在Ubuntu系统的docker内部运行mysql: 在Windows和Linux中检查WSL网络适配器的IPv4地址 打开powershell并执行
ifconfig
命令,然后查找WSL网络适配器:

Ethernet adapter vEthernet (WSL):

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::e96c:c3d6:464e:2a3b%72
   IPv4 Address. . . . . . . . . . . : 172.20.240.1
   Subnet Mask . . . . . . . . . . . : 255.255.240.0
   Default Gateway . . . . . . . . . :
您的Windows IP是
172.20.240.1

现在使用
ipa
命令计算Linux主机IP,并查看与Windows在同一网络中的IP:

5: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:ce:28:8e brd ff:ff:ff:ff:ff:ff
    inet 172.20.252.177/20 brd 172.20.255.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::215:5dff:fece:288e/64 scope link
       valid_lft forever preferred_lft forever

5:eth0:mtu 1500 qdisc mq状态上限组默认qlen 1000
链接/以太00:15:5d:ce:28:8e brd ff:ff:ff:ff:ff:ff:ff:ff
inet 172.20.252.177/20 brd 172.20.255.255范围全局eth0
永远有效\u lft首选\u lft永远有效
inet6 fe80::215:5dff:fece:288e/64范围链接
永远有效\u lft首选\u lft永远有效
从windows连接到linux服务器
mysql-u root-h172.20.252.177-p3306-p

linux与Windows上的Docker Linux上的docker在您的系统中以本机方式工作。Windows没有正式的docker版本。这意味着您需要在Windows(以及MacOS)中模拟linux机器,并在那里运行docker守护程序

当您模拟linux时,虚拟机监控程序会为您的模拟系统创建新的网络,因此docker不会在本地主机上运行

作为用户,您的主要区别在于,您无法访问docker中运行的应用程序(如localhost),因为它运行在VM中,VM有自己的网络IP

另一个区别是资源可用性。 在linux中,docker deamon可以访问您的所有资源(CPU、内存、HDD、网络等)。当然,您可以为它创建配额,但目前不需要担心

在Windows中,您运行VM并为模拟Linux分配一些有限的资源。例如,20 GB Hdd、1vCPU和2GB Ram。这对于提高应用程序的性能非常重要。在windows中,它们将比在Linux中慢(如果需要更多的资源)


然而,当我在Windows上工作时。我喜欢它,因为我可以创建docker VM的快照,并且可以将其复制到另一台计算机上。这太神奇了,因为安装或更换计算机时不需要配置系统。

我的问题不是从Windows机器访问Docker/Ubuntu上的MariaDB。这是关于比较两个安装的主机访问。实际上,我想在Windows上使用Docker,但这里的主机访问不适用于我,如教程中所述。另一方面,在Ubuntu Docker上,它立即起作用。我已经更新了主要区别。差别不大。主要区别在于,Windows没有Docker。您可以在windows中使用它,但实际上它是在Linux虚拟机上运行的。谢谢您的解释。我不知道该怎么处理这个问题,也不知道我是否应该删除它。我的问题原因是一个本地网络问题,除非我将问题集中在这个网络问题上,否则不会引起普遍关注。建议?我想我在office PC上遇到了一个网络问题。从中我了解到,在Windows上,我必须使用-p端口映射。我已经试过了,但没有成功。现在,我在另一台电脑(我的家用电脑)上安装了Docker和MariaDB容器,它立即工作了。我想我应该删除这个问题,创建一个与MariaDB无关的新的更通用的网络问题。
5: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:ce:28:8e brd ff:ff:ff:ff:ff:ff
    inet 172.20.252.177/20 brd 172.20.255.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::215:5dff:fece:288e/64 scope link
       valid_lft forever preferred_lft forever