首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从主机Windows10与Linux访问MariaDB扩展坞

问从主机Windows10与Linux访问MariaDB扩展坞
EN

Stack Overflow用户
提问于 2021-02-13 02:37:48
回答 1查看 90关注 0票数 0

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

我是docker新手,但不是MySQL新手。我想在Docker里玩MariaDB。我在Windows10和Ubuntu上创建了Docker安装。

对于MariaDB容器,我遵循这里的描述https://mariadb.com/kb/en/installing-and-using-mariadb-via-docker/,因为它似乎比这个更准确:https://hub.docker.com/_/mariadb。

我使用以下命令创建了一个MariaDB容器:

代码语言:javascript
复制
docker run --name mariadb -e MYSQL_ROOT_PASSWORD=test -d mariadb:latest

最新的MariaDB服务器10.5.8。

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

代码语言:javascript
复制
[client-server]
port=3306

从容器内部运行MySQL客户端是可行的

代码语言:javascript
复制
docker exec -it MariaDB MySQL -u root -p

从主机运行MySQL客户端

代码语言:javascript
复制
mysql -h 172.17.0.2 -u root -p

可以在我的Ubuntu主机上运行,但不能在我的Windows10主机上运行。在Windows上,该命令在一段时间后返回,没有任何消息。

你能告诉我原因并帮助我吗?

EN

回答 1

Stack Overflow用户

发布于 2021-02-13 02:53:29

更新您的命令,在Ubuntu系统的docker中运行mysql:

代码语言:javascript
复制
docker run --name mariadb -e MYSQL_ROOT_PASSWORD=test -d mariadb:latest --port 3306:3306

在Windows和Linux中检查WSL网络适配器的IPv4地址

打开powershell并执行ifconfig命令,然后找到WSL网络适配器:

代码语言:javascript
复制
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是172.20.240.1

现在使用ip a命令找出Linux主机的IP地址,并查看与Windows相同网络中的IP地址:

代码语言:javascript
复制
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

从windows连接到linux服务器

mysql -u root -h 172.20.252.177 -P 3306 -p

linux与Windows上的Docker

在Linux上,docker在您的系统中以本机方式工作。目前还没有针对Windows的官方docker版本。这意味着你需要在Windows(以及MacOS )中模拟linux机器,并在那里运行docker守护进程。

在模拟linux时,系统管理程序会为模拟的系统创建新的网络,因此docker不会在localhost上运行。

对于用户来说,主要的区别是,您不能访问在docker中运行的应用程序,因为它运行在VM中,而VM有自己的网络IP。

另一个区别是资源的可用性。在linux中,docker守护程序可以访问您的所有资源(CPU、内存、硬盘、网络等)。当然,您可以为它创建配额,但目前并不关心它。

在Windows中,您运行VM并将一些有限的资源分配给模拟的Linux。例如,20 GB硬盘、1vCPU和2 GB Ram。这在影响应用程序性能的情况下是很重要的。在windows中,它们将比在Linux中慢(如果需要更多的资源)。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66177297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档