共計 1585 個字符,預計需要花費 4 分鐘才能閱讀完成。
這篇文章將為大家詳細講解有關 docker 中如何把容器連接起來,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
docker 官方的資料中提到用一個 training/postgre 鏡像啟動一個父容器,但是我的不知為啥,容器自己停掉了。我直接 commit 一個新的容器算了
在這里補充一下 commit 容器的做法:
先從 image 啟動容器:
docker run -t -i training/webapp /bin/bash
作為測試,我沒干什么修改,直接返回宿主機 commit:
root@046a0ea81e8a:/opt/webapp# exit
exit
commit 容器:
docker commit -m= Nothing to do -a= Hochikong 046a0ea81e8a newimage/webapp:v1
總之你記住之前的容器的 ID,在 commit 時會用到。- m 作為 commit 的信息補充,- a 指定作者,后面的 newimage/webapp 是新的 image 名,v1 是 tag。
結果如下:
root@workgroup:~# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
newimage/webapp v1 7ef236b535c8 4 seconds ago 278.8 MB
webapp/ntpplus v1 18d60ce37ee5 41 hours ago 316.9 MB
hochikong/erbuntu v1 e3095ca4cf38 13 days ago 368.3 MB
dbehnke/ubuntu1404 latest 31c0939ea86c 5 weeks ago 368.3 MB
training/postgres latest 258105bea10d 11 weeks ago 364.6 MB
training/webapp latest 31fa814ba25a 12 weeks ago 278.8 MB
回到正題:
我們先創建一個基本容器(父容器):
使用 –name 為容器命名(每個容器都的名字都必須是獨一無二的,不可重復)為 base
再運行一個容器,命名為 web,使用 –link 連接到 base 上,wbconc 是這個連接的名稱,同時為了防止端口沖突,我用 - p 使主機的 1000 端口綁定到容器的 5000 端口上:
我還運行了一個(玩玩),名為 web2,連接名稱為 wbconc2:
查看我的容器狀態:
可以看到,在容器 base 的 NAME 一欄,多出 web/wbconc 和 web2/wbconc2 兩項,在 / 前的是子容器的名稱(即 web 和 web2),后面的是這個連接的名稱(wbconc 和 webconc2),他們的父容器是 base。
在這篇翻譯中,???http://www.widuu.com/chinese_docker/userguide/dockerlinks.html
有幾項錯誤和不太相同的地方,我使用 nsenter 連接容器,但是并沒有看到容器的 hosts 文件像原文所說的那樣被修改。問題就出現了。
我先獲取三個容器的 Pid(本人不會 JSON 解析,直接用 grep):
用 nsenter 進入 base 容器(關于安裝 nsenter,請參考我之前一篇博文):
可以看到容器的 IP 地址,雖然 ping 是能 ping 得通其他容器,但是無法為他們設置 hosts,蛋疼啊。有木有人能解決下這個問題,如果不行,需要 DNS 嗎?太麻煩了!
hosts 文件根本就沒有原文提到的內容。不知它何來的 hosts
關于“docker 中如何把容器連接起來”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。