<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    方槍槍的java世界

    不要因?yàn)轱L(fēng)雨飄落就停止了你的腳步,真正的得失就在你的心中。 做喜歡做的事,不輕言放棄!

    Docker學(xué)習(xí)筆記(七)鏈接容器

    九、鏈接容器

    docker 允許把多個容器連接在一起,相互交互信息。docker 鏈接會創(chuàng)建一種容器父子級別的關(guān)系,其中父容器可以看到其子容器提供的信息。

    9.1 容器命名

    在創(chuàng)建容器時,如果不指定容器的名字,則默認(rèn)會自動創(chuàng)建一個名字,這里推薦給容器命名:

    • 1、給容器命名方便記憶,如命名運(yùn)行 web 應(yīng)用的容器為 web
    • 2、為 docker 容器提供一個參考,允許方便其他容器調(diào)用,如把容器 web 鏈接到容器 db

    可以通過--name選項給容器自定義命名:

    $ sudo docker run -d -t -i --name test ubuntu:14.04 bash              
    $ sudo docker  inspect --format="{{ .Nmae }}" test
    /test

    注:容器名稱必須唯一,即你只能命名一個叫test的容器。如果你想復(fù)用容器名,則必須在創(chuàng)建新的容器前通過docker rm刪除舊的容器或者創(chuàng)建容器時添加--rm選項。

    9.2 鏈接容器

    鏈接允許容器間安全通信,使用--link選項創(chuàng)建鏈接。

    $ sudo docker run -d --name db training/postgres

    基于 training/postgres 鏡像創(chuàng)建一個名為 db 的容器,然后下面創(chuàng)建一個叫做 web 的容器,并且將它與 db 相互連接在一起

    $ sudo docker run -d -P --name web --link db:db training/webapp python app.py

    --link <name or id>:alias選項指定鏈接到的容器。

    查看 web 容器的鏈接關(guān)系:

    $ sudo docker inspect -f "{{ .HostConfig.Links }}" web
    [/db:/web/db]

    可以看到 web 容器被鏈接到 db 容器為/web/db,這允許 web 容器訪問 db 容器的信息。

    容器之間的鏈接實(shí)際做了什么?一個鏈接允許一個源容器提供信息訪問給一個接收容器。在本例中,web 容器作為一個接收者,允許訪問源容器 db 的相關(guān)服務(wù)信息。Docker 創(chuàng)建了一個安全隧道而不需要對外公開任何端口給外部容器,因此不需要在創(chuàng)建容器的時候添加-p或-P指定對外公開的端口,這也是鏈接容器的最大好處,本例為 PostgreSQL 數(shù)據(jù)庫。

    Docker 主要通過以下兩個方式提供連接信息給接收容器:

    • 環(huán)境變量
    • 更新/etc/hosts文件

    環(huán)境變量

    當(dāng)兩個容器鏈接,Docker 會在目標(biāo)容器上設(shè)置一些環(huán)境變量,以獲取源容器的相關(guān)信息。

    首先,Docker 會在每個通過--link選項指定別名的目標(biāo)容器上設(shè)置一個<alias>_NAME環(huán)境變量。如果一個名為 web 的容器通過--link db:webdb被鏈接到一個名為 db 的數(shù)據(jù)庫容器,那么 web 容器上會設(shè)置一個環(huán)境變量為WEBDB_NAME=/web/webdb.

    以之前的為例,Docker 還會設(shè)置端口變量:

    $ sudo docker run --rm --name web2 --link db:db training/webapp env
    . . .
    DB_NAME=/web2/db
    DB_PORT=tcp://172.17.0.5:5432           
    DB_PORT_5432_TCP=tcp://172.17.0.5:5432  # <name>_PORT_<port>_<protocol> 協(xié)議可以是 TCP 或 UDP
    DB_PORT_5432_TCP_PROTO=tcp
    DB_PORT_5432_TCP_PORT=5432
    DB_PORT_5432_TCP_ADDR=172.17.0.5
    . . .

    注:這些環(huán)境變量只設(shè)置給容器中的第一個進(jìn)程,類似一些守護(hù)進(jìn)程 (如 sshd ) 當(dāng)他們派生 shells 時會清除這些變量

    更新/etc/hosts文件

    除了環(huán)境變量,Docker 會在目標(biāo)容器上添加相關(guān)主機(jī)條目到/etc/hosts中,上例中就是 web 容器。

    $ sudo docker run -t -i --rm --link db:db training/webapp /bin/bash
    root@aed84ee21bde:/opt/webapp# cat /etc/hosts
    172.17.0.7  aed84ee21bde
    . . .
    172.17.0.5  db

    /etc/host文件在源容器被重啟之后會自動更新 IP 地址,而環(huán)境變量中的 IP 地址則不會自動更新的。

    posted on 2016-12-27 21:40 做強(qiáng)大的自己 閱讀(141) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲AV无码一区二区三区DV| 久久亚洲熟女cc98cm| 国内精品免费视频精选在线观看 | 在线天堂免费观看.WWW| 色欲aⅴ亚洲情无码AV| 亚洲尤码不卡AV麻豆| 国产成人A在线观看视频免费| aa午夜免费剧场| 一本色道久久88—综合亚洲精品| 亚洲国产精品自在自线观看 | 亚洲AV一区二区三区四区| 亚洲熟妇中文字幕五十中出| 69av免费视频| 一级毛片免费在线| 亚洲欧洲精品成人久久曰影片| 99精品视频免费在线观看| 美女视频黄频a免费大全视频| 亚洲网红精品大秀在线观看| 免费少妇a级毛片| 成年在线观看网站免费| 国内精品免费久久影院| 亚洲精品国产摄像头| 亚洲精品私拍国产福利在线| 亚洲AV无码一区二区三区国产| 国产亚洲情侣久久精品| 亚洲理论片在线中文字幕| 国产偷窥女洗浴在线观看亚洲| 成人免费看吃奶视频网站| 亚洲AV无码一区二区三区牲色| 亚洲日韩久久综合中文字幕| 亚洲 国产 图片| 歪歪漫画在线观看官网免费阅读| 久久国产乱子伦精品免费强| 麻豆91免费视频| 亚洲国产一区二区三区在线观看 | 亚洲天堂一区二区三区四区| 狠狠热精品免费观看| 亚洲精品免费网站| 亚洲电影在线免费观看| 亚洲阿v天堂在线| 国产一区二区免费视频|