跟我一塊兒學docker(七)--網絡

1.容器對外服務mysql


當容器內運行一些網絡應用,要讓外部訪問這些應用時,能夠經過 -P 或 -p 參數來指定端口映射。web

使用 -P 映射時,Docker會隨機映射一個49000 ~49900 的端口至容器內部開放的端口:sql

docker run -d -P --namemysql mysql:5.6docker

經過docker ps能夠看到端口映射關係。能夠經過映射在宿主機的端口來訪問對應容器內的服務。數據庫

進入docker的官網下載mysql鏡像ubuntu




tag是mysql的版本號,這裏我們選擇mysql5.6tomcat



映射到指定宿主機的端口:安全

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag網絡

-e 是環境變量的意思 運行容器內的環境變量設置mysql的密碼app


容器裏面的mysql已經啓動了如今我們爲了映射端口的話刪除這個mysql容器


映射到指定地址的指定端口,爲例:

docker run -d -p 3306:3306 --name mysql mysql:5.6

外部訪問虛擬機的3306直接映射到容器的3306鏈接到數據庫



映射到指定地址的指定端口,以127.0.0.1爲例:

docker run -d -p127.0.0.1:3306:3306 --name mysql mysql:5.6




映射到指定地址的任意端口,以127.0.0.1爲例:

docker run -d -p 127.0.0.1::3306 --name mysqlmysql:5.6

查看映射端口配置:

docker port mysql 3306


2.容器間相互通訊

經過映射宿主機的端口實現容器的互聯。


容器的鏈接(link)除了端口映射外的另外一種能夠與容器中應用進行交互的方式。


使用 --link 參數能夠讓容器之間安全的進行交互。

建立一個數據庫容器:

docker run -d --namemysqldb mysql:5.6

建立一個web容器並和數據庫容器創建鏈接:

docker run -d --name Webapp–p 8000:8080 --link mysqldb:MySQL tomcat

上邊的MySQL別名就相似dns解析的方式,我給這個容器起了個別名叫MySQL,我就經過這個別名就能夠找到對應的這個mysqldb容器

mysqldb容器和web容器創建互聯關係。

--link參數的格式爲--link name:alias,其中name是要鏈接的容器名稱,alias是這個鏈接的別名。

能夠使用docker ps(PORT字段)來查看容器的鏈接。

Docker在兩個容器之間建立了安全隧道,並且不用映射它們的端口到宿主機上。在啓動mysqldb的時候並無使用-p和-P標記,從而避免的了暴露數據庫的端口到外部的網絡上。

link就是容器直接互相通訊的






Docker經過兩種方式爲容器公開鏈接信息:

1 環境變量:

使用env命令來查看。

EX:

docker run --rm --name test--link dblink:dblink ubuntu env

2 更新/etc/hosts文件

查看/etc/hosts文件。

往期docker學習:

認識docker

核心概念和安裝

鏡像的經常使用操做

容器的基本操做

倉庫

數據管理

相關文章
相關標籤/搜索