首頁 資料庫 mysql教程 Mysql+Tomcat建立Docker多容器連線的方法

Mysql+Tomcat建立Docker多容器連線的方法

Mar 24, 2017 pm 01:11 PM

這篇文章主要介紹了Docker多容器連接(以Tomcat+Mysql為例),Docker提供了多個容器直接存取的方法,可以讓多個容器直接透過網路連接埠進行存取

Docker提供了多個容器直接存取的方法,最簡單的方式是直接使用連接埠映射-p參數指定映射的連接埠或-P來對應所有端口,多個容器直接通過網路連接埠進行存取。

但網路連接埠映射方式並不是Docker中連接多個容器的唯一方式,更安全的方法是可以使用Docker的連接系統(--link)連接多個容器,當容器連接在一起時,接受者容器就可以看到來源容器的資訊。

以Tomcat + Mysql為例,建立容器之間的連線

#在容器直接建立連線要使用--link選項

#--link :alias

這裡我們透過建立一個Tomcat + Mysql 的服務,範例一下如何在兩個或多個容器之間建立連線。

要建立容器連線的話,就要依賴容器的名字了,使用--name指定來源容器的名字為mysql

1

docker run --name mysql -d gsoft/mysql:5.6

登入後複製

接下來建立tomcat容器,並且連線到mysql容器上去

 程式碼如下:

1

docker run --name tomcat -d -p 80:8080 --link mysql:mysql gsoft/tomcat:7.0

登入後複製

這裡透過--link選項指定了要連接的容器是mysql。

容器互通資訊

建立兩個容器之間的連線之後,在接收容器(Recipient)中必然會需要存取來源容器(Source)的資源,我們在為容器建立連接時,來源容器在建立時並沒有使用-p/-P指定要暴露出來的端口,因此如何存取來源容器的資訊呢?

為了可以讓接收容器能夠存取來源容器的信息,Docker提供了兩種方式:

  1. #環境變數

##/etc/hosts檔案

環境變數

Docker在連接容器的時候,會根據--link提供的參數自動的在接收者容器中創建一些環境變量,包括源容器的Dockerfile中使用ENV命令設置的環境變量和源容器啟動時(docker run),使用-e或者- -env, --env-file參數指定的環境變數。

主要包含以下環境變量,這裡假設alias=mysql。

1

2

3

4

5

6

<strong><alias>_PORT

<alias>_PORT_<port>_<protocol>

<alias>_PORT_<port>_<protocol>_ADDR

<alias>_PORT_<port>_<protocol>_PORT

<alias>_PORT_<port>_<protocol>_PROTO

<alias>_NAME</strong>

登入後複製
例如:

1

2

3

4

5

6

7

8

9

10

11

#docker run -i -t --rm --link mysql:mysql ubuntu:14.04 env

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

HOSTNAME=9c74aa611463

TERM=xterm

MYSQL_PORT=tcp://172.17.0.3:3306

MYSQL_PORT_3306_TCP=tcp://172.17.0.3:3306

MYSQL_PORT_3306_TCP_ADDR=172.17.0.3

MYSQL_PORT_3306_TCP_PORT=3306

MYSQL_PORT_3306_TCP_PROTO=tcp

MYSQL_NAME=/desperate_ritchie/mysql

HOME=/root

登入後複製

在上述範例中,指定了容器的別名為msyql,因此所有環境變數都是以MYSQL_開頭。

注意的是,如果來源容器重啟,接收容器中的環境變數資訊並不會自動

更新

,因此,如果要使用來源容器的IP位址,請使用/etc/ hosts中設定的主機資訊。

######/etc/hosts檔案#########除了環境變數之外,Docker也在接收容器的/etc/hosts檔案中更新了hosts資訊。 ###

1

2

3

4

5

6

7

8

9

10

# docker run -i -t --rm --link mysql:mysql ubuntu:14.04 /bin/bash

# cat /etc/hosts

127.0.0.1  localhost

::1  localhost ip6-localhost ip6-loopback

fe00::0  ip6-localnet

ff00::0  ip6-mcastprefix

ff02::1  ip6-allnodes

ff02::2  ip6-allrouters

172.17.0.3  mysql 115346bdb403

172.17.0.5  09bdf7805133

登入後複製
###從上可以看出,在接收容器的hosts檔案中增加了兩條額外的訊息,本機IP和別名以及來源容器的IP和別名(mysql)。 ######與環境變數不同的是,如果來源容器重新啟動了,接收容器中/etc/hosts中的資訊會自動更新。 ###

以上是Mysql+Tomcat建立Docker多容器連線的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1324
25
PHP教程
1272
29
C# 教程
1251
24
MySQL和PhpMyAdmin:核心功能和功能 MySQL和PhpMyAdmin:核心功能和功能 Apr 22, 2025 am 12:12 AM

MySQL和phpMyAdmin是強大的數據庫管理工具。 1)MySQL用於創建數據庫和表、執行DML和SQL查詢。 2)phpMyAdmin提供直觀界面進行數據庫管理、表結構管理、數據操作和用戶權限管理。

容器化技術(例如Docker)如何影響Java平台獨立性的重要性? 容器化技術(例如Docker)如何影響Java平台獨立性的重要性? Apr 22, 2025 pm 06:49 PM

容器化技術如Docker增強而非替代Java的平台獨立性。 1)確保跨環境的一致性,2)管理依賴性,包括特定JVM版本,3)簡化部署過程,使Java應用更具適應性和易管理性。

在MySQL中解釋外鍵的目的。 在MySQL中解釋外鍵的目的。 Apr 25, 2025 am 12:17 AM

在MySQL中,外鍵的作用是建立表與表之間的關係,確保數據的一致性和完整性。外鍵通過引用完整性檢查和級聯操作維護數據的有效性,使用時需注意性能優化和避免常見錯誤。

Linux上的Docker:Linux系統的容器化 Linux上的Docker:Linux系統的容器化 Apr 22, 2025 am 12:03 AM

Docker在Linux上重要,因為Linux是其原生平台,提供了豐富的工具和社區支持。 1.安裝Docker:使用sudoapt-getupdate和sudoapt-getinstalldocker-cedocker-ce-clicontainerd.io。 2.創建和管理容器:使用dockerrun命令,如dockerrun-d--namemynginx-p80:80nginx。 3.編寫Dockerfile:優化鏡像大小,使用多階段構建。 4.優化和調試:使用dockerlogs和dockerex

比較和對比Mysql和Mariadb。 比較和對比Mysql和Mariadb。 Apr 26, 2025 am 12:08 AM

MySQL和MariaDB的主要區別在於性能、功能和許可證:1.MySQL由Oracle開發,MariaDB是其分支。 2.MariaDB在高負載環境中性能可能更好。 3.MariaDB提供了更多的存儲引擎和功能。 4.MySQL採用雙重許可證,MariaDB完全開源。選擇時應考慮現有基礎設施、性能需求、功能需求和許可證成本。

SQL與MySQL:澄清兩者之間的關係 SQL與MySQL:澄清兩者之間的關係 Apr 24, 2025 am 12:02 AM

SQL是一種用於管理關係數據庫的標準語言,而MySQL是一個使用SQL的數據庫管理系統。 SQL定義了與數據庫交互的方式,包括CRUD操作,而MySQL實現了SQL標準並提供了額外的功能,如存儲過程和触發器。

如何安全地將包含函數和正則表達式的JavaScript對象存儲到數據庫並恢復? 如何安全地將包含函數和正則表達式的JavaScript對象存儲到數據庫並恢復? Apr 19, 2025 pm 11:09 PM

安全地處理JSON中的函數和正則表達式在前端開發中,經常需要將JavaScript...

MySQL:數據庫,PHPMYADMIN:管理接口 MySQL:數據庫,PHPMYADMIN:管理接口 Apr 29, 2025 am 12:44 AM

MySQL和phpMyAdmin可以通過以下步驟進行有效管理:1.創建和刪除數據庫:在phpMyAdmin中點擊幾下即可完成。 2.管理表:可以創建表、修改結構、添加索引。 3.數據操作:支持插入、更新、刪除數據和執行SQL查詢。 4.導入導出數據:支持SQL、CSV、XML等格式。 5.優化和監控:使用OPTIMIZETABLE命令優化表,並利用查詢分析器和監控工具解決性能問題。

See all articles