Docker容器的程序連接宿主機(jī)的MySQL全過程
Docker容器的程序連接宿主機(jī)的MySQL
docker里面的代碼生成的數(shù)據(jù)需要寫入到宿主機(jī)的Mysql
服務(wù)器上,想要用本地的數(shù)據(jù)庫測試自己的代碼正確性,項(xiàng)目程序安裝在docker容器中,于是必定要在docker容器里訪問到本地的數(shù)據(jù)庫。
(1)在docker容器里localhost并不是指宿主機(jī)的localhost
因此不能在容器中通過localhost:3306訪問到宿主機(jī)的mysql,也不可以通過127.0.0.1訪問。
(2)docker在運(yùn)行時(shí)就建立了虛擬網(wǎng)卡
并命名為docker0,可以在宿主機(jī)上運(yùn)行ifconfig看到它,這就是宿主機(jī)建立的網(wǎng)橋,用于與各個(gè)容器之間通信。
[root@VM-8-15-centos ~]# ifconfig docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255 inet6 fe80::42:53ff:fed0:4c11 prefixlen 64 scopeid 0x20<link> ether 02:42:53:d0:4c:11 txqueuelen 0 (Ethernet) RX packets 4489 bytes 6944799 (6.6 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 3379 bytes 999348 (975.9 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ifconfig 為什么看不到 docker0
在最近的 Docker 版本中,docker0 網(wǎng)絡(luò)接口已經(jīng)被棄用,因此您在使用最新版本的 Docker 時(shí)可能看不到該接口。
相反,Docker 現(xiàn)在使用名為 bridge 的網(wǎng)絡(luò)驅(qū)動(dòng)程序來管理 Docker 容器的網(wǎng)絡(luò)連接。您可以使用 ip addr 命令來查看當(dāng)前正在運(yùn)行的 Docker 網(wǎng)絡(luò):
$ ip addr show docker0
(3)宿主機(jī)在與容器同一局域網(wǎng)的IP地址
一般是docker0對(duì)應(yīng)的IP地址段的首個(gè)地址(如172.17.0.1),因此,可以在容器里通過172.17.0.1:3306訪問到宿主機(jī)的mysql服務(wù)器。
mysql服務(wù)器默認(rèn)的設(shè)置為允許127.0.0.1段的ip地址訪問
如果用172.17.0.1:3306仍然無法訪問到宿主機(jī)的話,需要設(shè)置一下mysql的訪問權(quán)限:
如果用的是寶塔面板,可以給nacos這個(gè)數(shù)據(jù)庫設(shè)置權(quán)限為所有人
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '12345678' WITH GRANT OPTION; mysql>flush privileges; // 其中各字符的含義: // *.* 對(duì)任意數(shù)據(jù)庫任意表有效 // "root" "12345678" 是數(shù)據(jù)庫用戶名和密碼 // '%' 允許訪問數(shù)據(jù)庫的IP地址,%意思是任意IP,也可以指定IP // flush privileges 刷新權(quán)限信息
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
docker容器分配固定ip的實(shí)現(xiàn)示例
如果不固定ip,每次主機(jī)重啟后,docker會(huì)動(dòng)態(tài)給容器分配ip,導(dǎo)致redis容器的IP自動(dòng)換了 ,然后還得去改配置就很煩,本文主要介紹了docker容器分配固定ip的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12基于Docker部署Tomcat集群、 Nginx負(fù)載均衡的問題小結(jié)
這篇文章主要介紹了基于Docker部署 Tomcat集群、 Nginx負(fù)載均衡,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09詳解如何優(yōu)雅的給Docker配置網(wǎng)絡(luò)代理
有時(shí)因?yàn)榫W(wǎng)絡(luò)原因,比如公司 NAT,或其它啥的,需要使用代理,這篇文章主要為大家詳細(xì)介紹了如何優(yōu)雅的給Docker配置網(wǎng)絡(luò)代理,需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01Docker安裝MySql8并遠(yuǎn)程訪問的實(shí)現(xiàn)
本文主要介紹了Docker安裝MySql8并遠(yuǎn)程訪問的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07Docker搭建MySQL5.7主從復(fù)制的實(shí)現(xiàn)
本文主要介紹了Docker搭建MySQL5.7主從復(fù)制的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06使用Docker搭建本地開發(fā)環(huán)境的詳細(xì)指南
這篇文章主要介紹了使用Docker搭建本地開發(fā)環(huán)境的詳細(xì)指南,涵蓋了從基礎(chǔ)Docker準(zhǔn)備到多容器管理、安全強(qiáng)化等各個(gè)方面,通過使用Docker,可以確保開發(fā)環(huán)境的一致性、可移植性和可版本控制,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-04-04