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學習: