Docker 容器連接

Docker 容器連接

容器間的鏈接有兩種方法,你選擇其一即可

網絡端口映射

    docker run -d -P  
    docker run -d -p
    -P :是容器內部端口隨機映射到主機的高端口。
    -p : 是容器內部端口綁定到指定的主機端口。

例如:

    docker run -d -P training/webapp python app.py

上面的命令運行完成後,要通過ps查看可以看到對應的容器端口和主機端口的映射關係。

    docker run -d -p 5001:5000 training/webapp python app.py

這樣我們就可以通過訪問 127.0.0.1:5001(主機) 來訪問容器的 5000 端口。這裏面默認都是綁定TCP要綁定UDP如下命令:

    docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py

Docker容器連接

端口映射並不是唯一把 docker 連接到另一個容器的方法。

docker 有一個連接系統允許將多個容器連接在一起,共享連接信息。

docker 連接會創建一個父子關係,其中父容器可以看到子容器的信息。

容器命名

    docker run -d -P --name runoob training/webapp python app.py

通過--name設定容器名字

    docker inspect -f "{{ .Name }}" aed84ee21bde
通過上述命令可以返回涌入名字。

容器不可以重名,一次要修改名字,需要停止容器後刪除。

容器連接

如果要連接1個容器,需要先創建容器,然後通過--link連接。

    docker run -d --name db training/postgres
    創建數據庫容器
    docker run -d -P --name web --link db:db training/webapp python app.py
    這樣就完成了Web容器和DB容器連接到了一起。
    --link name:alias
    name是我們連接容器的名字,alias是link的別名。讓我們看如何使用alias。

下面,我們通過ps查看一下:

    $ docker ps
        CONTAINER ID  IMAGE                     COMMAND               CREATED             STATUS             PORTS                    NAMES
        349169744e49  training/postgres:latest  su postgres -c '/usr  About a minute ago  Up About a minute  5432/tcp                 db
        aed84ee21bde  training/webapp:latest    python app.py         16 hours ago        Up 2 minutes       0.0.0.0:49154->5000/tcp  db/web,web

這裏面在Names我們可以看到db/web,這說明db/web的父/子關係。這裏的父容器是db可以訪問子容器web。爲此docker在容器之間打開一個安全連接隧道不需要暴露任何端口在容器外部。你會注意到當你啓動db容器的時候我們沒有使用-P或者-p標識。我們連接容器的時候我們不需要通過網絡給PostgreSQL數據庫開放端口。

這樣我們可以通過查詢Docker的環境變量就可以看到相關信息了(env命令查看容器的環境變量)

    docker run --rm --name web2 --link db:db training/webapp env

這樣就可以通過容器Names來引用對應容器。

PS:容器中往往沒有ping,因此要自己添加apt-get install -yqq inetutils-ping

        root@aed84ee21bde:/opt/webapp# ping db
        PING db (172.17.0.5): 48 data bytes
        56 bytes from 172.17.0.5: icmp_seq=0 ttl=64 time=0.267 ms
        56 bytes from 172.17.0.5: icmp_seq=1 ttl=64 time=0.250 ms
        56 bytes from 172.17.0.5: icmp_seq=2 ttl=64 time=0.256 ms




    

關注我,關注測試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章