真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Docker中使用0.9.1版Docker會遇到什么問題

這篇文章給大家分享的是有關(guān)Docker中使用0.9.1版Docker會遇到什么問題的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

成都創(chuàng)新互聯(lián)長期為千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為甘州企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計、網(wǎng)站制作、外貿(mào)營銷網(wǎng)站建設(shè),甘州網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

我測試時,使用0.9.1版Docker的問題:

1.Dockerfile創(chuàng)建的image即使添加了-t也無法為新鏡像添加tag和名稱。

2.使用--link參數(shù)但卻在子容器中的/etc/hosts找不到父容器的信息,導(dǎo)致無法直接ping主機名。

問題解決的關(guān)鍵:

安裝最新版docker(看來前面的版本bug多多?。?/p>

安裝步驟(ubuntu)(參考自官網(wǎng)手冊):

1.安裝解析https的輔助工具:

apt-get install apt-transport-https

    我強烈建議你安裝完后重啟機器,不然apt可能會無法解析https的網(wǎng)址!

2.添加key和源:

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
sh -c "echo deb https://get.docker.io/ubuntu docker main\
> /etc/apt/sources.list.d/docker.list"
sudo apt-get update

3.安裝lxc-docker:

apt-get install lxc-docker

4.檢查docker版本:

docker version

顯示版本號如下(1.2.0):

root@docker:~# docker version
Client version: 1.2.0
Client API version: 1.14
Go version (client): go1.3.1
Git commit (client): fa7b24f
OS/Arch (client): linux/amd64
Server version: 1.2.0
Server API version: 1.14
Go version (server): go1.3.1
Git commit (server): fa7b24f

測試Dockerfile:

我pull了一個最小化的ubuntu image:

docker pull dbehnke/ubuntu1404

在本地目錄創(chuàng)建了一個名為Dockerfile的文件,:

vi Dockerfile
#添加以下內(nèi)容

#my test image
FROM dbehnke/ubuntu1404:latest   #從現(xiàn)有的image創(chuàng)建一個新的image
MAINTAINER Hochikong             #維護(hù)者信息
RUN mkdir -p /home/backup        
RUN mv /etc/apt/sources.list /home/backup
RUN wget http://172.16.77.157/sources.list -P /etc/apt        #從宿主機(172.16.77.157)的apache2服務(wù)器下載本地化的sources.list文件,因為國外源太慢
RUN apt-get update

執(zhí)行build:

docker build -t="hochikong/local:v1" .          
#不要忘了后面的那一點,指代本地的Dockerfile文件;另外hochikong必須小寫,之前我輸入的是大寫提示"only [a-z0-9_] are allowed, size between 4 and 30"

看看我的image有沒有被創(chuàng)建好:

Docker中使用0.9.1版Docker會遇到什么問題

之前這篇的問題終于被解決了

測試--link參數(shù)的使用:

先啟動一個名為base的容器(父容器):

docker run -d -p 1000:5000 --name base training/webapp python app.py

查看狀態(tài):

root@docker:~# docker ps
CONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS              PORTS                    NAMES
928ebabc26eb        training/webapp:latest   "python app.py"     32 seconds ago      Up 31 seconds       0.0.0.0:1000->5000/tcp   base

可以看到容器已經(jīng)啟動,主機的1000端口被綁定到容器的5000端口,容器名為base

再啟動一個名為web的子容器:

docker run -d -p 2000:5000 --name web --link base:base training/webapp python app.py

再次檢查狀態(tài):

root@docker:~# docker ps
CONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS              PORTS                    NAMES
21f82b33c27a        training/webapp:latest   "python app.py"     30 seconds ago      Up 29 seconds       0.0.0.0:2000->5000/tcp   web                 
928ebabc26eb        training/webapp:latest   "python app.py"     2 minutes ago       Up 2 minutes        0.0.0.0:1000->5000/tcp   base,web/base

可以看到,web容器已經(jīng)啟動。同時base容器的NAMES一欄多了web/base這個內(nèi)容,實際上,"web/base"中,web指的是連接到base的子容器,但是"/"后面的是這個鏈接的別名(推薦和父容器的容器名相同,接下來你會知道為什么)

我再啟動一個名為web2的子容器,同樣連接到base上:

docker run -d -p 3000:5000 --name web2 --link base:connection2 training/webapp python app.py

看看docker ps的結(jié)果:

root@docker:~# docker ps
CONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS              PORTS                    NAMES
d180046639f4        training/webapp:latest   "python app.py"     57 seconds ago      Up 56 seconds       0.0.0.0:3000->5000/tcp   web2                             
21f82b33c27a        training/webapp:latest   "python app.py"     5 minutes ago       Up 5 minutes        0.0.0.0:2000->5000/tcp   web                              
928ebabc26eb        training/webapp:latest   "python app.py"     8 minutes ago       Up 8 minutes        0.0.0.0:1000->5000/tcp   base,web/base,web2/connection2

在base的NAMES欄多了"web2/connection2"(對此你可以參考https://docs.docker.com/userguide/dockerlinks/,看看"--link name:alias"的含義)

我們通過nsenter連接一下web2,先獲取PID號:

root@docker:~# docker inspect web2 | grep Pid                      #docker inspect CONTAINERNAME能以JSON格式輸出指定容器的詳細(xì)信息,我直接用grep過濾出來
        "Pid": 21275,

連接web2:

nsenter --target 21275 --mount --uts --net --ipc --pid                     #使用那個PID值

查看該容器的/etc/hosts文件:

Docker中使用0.9.1版Docker會遇到什么問題

我再查看下base的IP地址:

root@docker:~# docker inspect base | grep IP
        "IPAddress": "172.17.0.11",
        "IPPrefixLen": 16,

你是不是覺得很殘念!實際上,172.17.0.11正是base的IP地址,但是在web2中,顯示的卻是該鏈接的名稱,你ping主機connection2實際上是ping容器base。但是我認(rèn)為這很不合理!為什么hosts文件寫的不是父容器的容器名而是鏈接的名稱?

ping下base容器:

Docker中使用0.9.1版Docker會遇到什么問題

ping是ping得通。

正是因為不合理,我才強烈建議你這樣寫:

docker run -d -p 2000:5000 --name web --link base:base training/webapp python app.py

使鏈接的名(":"后的base)和父容器名(":"前的base)相同!

連接上web容器,可以看到hosts中的信息,這樣的話,ping父容器名也更合理:

Docker中使用0.9.1版Docker會遇到什么問題

注意:

在base容器中不包含子容器的信息:

Docker中使用0.9.1版Docker會遇到什么問題

在設(shè)計應(yīng)用的時候,尤其要注意這一點(不可能使web服務(wù)為父容器,數(shù)據(jù)庫為子容器吧?)

感謝各位的閱讀!關(guān)于“Docker中使用0.9.1版Docker會遇到什么問題”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!


分享標(biāo)題:Docker中使用0.9.1版Docker會遇到什么問題
標(biāo)題鏈接:http://weahome.cn/article/gejeoj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部