除了暴露埠的通訊方式,還可以通過容器連線來實現容器間的通訊。–link 容器名:別名
//建立乙個容器
docker run -d --name dbdata training/postgres
**連線是相對於直接連線的。直接連線是在同一臺 宿主機上的,docker為了實現跨主機的容器連線提供了ambassador模式。
原來的同一宿主機容器連線:比如redis的client連線到redis的server,如果client要連線到另一台server上必須重啟容器。
這種連線的缺點:不能跨宿主機,耦合性高。
**連線:redis的client先連線到ambassador1容器上,由ambassador1通過暴露網路介面連線到server上的ambassador2容器, 而ambassador2與redis的server連線,這樣就做到了客]]]]戶端與伺服器的解耦。
具體流程:客戶機redis-client -> ambassador1->(網路)->伺服器ambassador2->redis-server
舉個例子:
在執行通訊的時候,用的是上述順序,在構建的時候則是,相反的。
//首先在server上建立乙個redis-server
sudo docker run -d --name redis crosbymichael/redis
//啟動ambassador1來連線容器redis-server並暴露網路介面給客戶端來連線
sudo docker run -d --link redis:redis --name ambassador1 -p 6379:6379 ambassador
//再在client建立ambassador2
docker run -d --name ambassador2 --expose 6379 -e redis_port_6379_tcp=tcp: svendowideit/ambassador
//這裡的x.x.x.x是server的ip位址
//再建立乙個redis-server連線ambassador2
docker run -it --rm --link ambassador2:redis relateiq/redis-cli
tony@ubuntu:~$ sudo docker run -it --rm --link ambassador2:redis relateiq/redis-cli
redis 172.17.0.2:6379> ping
pong
redis 172.17.0.2:6379>
docker 容器連線
通過埠連線到乙個docker容器 網路埠對映 建立乙個python應用的容器 使用docker ps可以看到容器埠5000繫結主機埠32768 p 是容器內部埠隨機對映到主機的高階口 p 是容器內部埠繫結到指定的主機埠 還可以指定容器繫結的網路位址,如繫結127.0.0.1 可以通過訪問127.0....
docker教程 Docker 容器連線
前面我們實現了通過網路埠來訪問執行在docker容器內的服務。下面我們來實現通過埠連線到乙個docker容器。首先我們建立乙個 python 應用的容器。我們也可以使用 p 標識來指定容器埠繫結到主機埠。兩種方式的區別是 另外,我們可以指定容器繫結的網路位址,比如繫結127.0.0.1。這樣我們就可...
通過nsenter連線docker容器
通常連線docker容器並與其進行互動有四種方法。詳情見 下面摘錄nsenter連線的方式。root localhost whereis nsenter nsenter usr bin nsenter usr share man man1 nsenter.1.gz 如果沒安裝可建立install.s...