亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

[afterCode] docker 速成班 5: 組合 container

neuSnail / 884人閱讀

摘要:到現(xiàn)在為止我們會(huì)從拉取自己需要的文件并執(zhí)行起來還會(huì)基于已有的來制作自己特殊需要的但是如果我們完成一個(gè)功能需要多個(gè)組合起來使用該怎么辦呢雖然可以通過來制作一個(gè)這樣的但是如果所有的功能都做在一個(gè)中如果有一個(gè)模塊需呀改變的話就需要重新構(gòu)建整個(gè)作為

到現(xiàn)在為止,我們會(huì)從 docker hub 拉取自己需要的 image 文件并執(zhí)行起來. 還會(huì)基于已有的 image 來制作自己特殊需要的 image . 但是如果我們完成一個(gè)功能需要多個(gè) image 組合起來使用該怎么辦呢?
雖然可以通過 Dockerfile 來制作一個(gè)這樣的 image , 但是如果所有的功能都做在一個(gè) image 中, 如果有一個(gè)模塊需呀改變的話就需要重新構(gòu)建整個(gè) image.
作為一個(gè)程序員你知道,如果把所有的功能做到一個(gè) image 里面相當(dāng)于不斷的"繼承" 不同 image 的功能, 顯然這個(gè)而不是一個(gè)好方法. 而且有前人告訴我們 "組合優(yōu)于繼承"!

那我們就試試如何組合使用 container.

在前一節(jié),我們做好了一個(gè) hello world 的 http 服務(wù)器工作在3000端口上. 現(xiàn)在我想用 nginx
作為反向代理到8080端口上訪問這個(gè)服務(wù).

如何將兩個(gè) container 組合起來呢? 通過網(wǎng)絡(luò). docker 安裝之后應(yīng)創(chuàng)建一些 network

$docker network ls
NETWORK ID          NAME                     DRIVER              SCOPE
a3ccacd179e5        bridge                   bridge              local
10768aaf02ae        host                     host                local
c2df063c31ab        none                     null                local

其中最常用的就是這個(gè)叫 bridge 的網(wǎng)絡(luò). 通過命令 docker network inspect bridge 來查看 network 的具體情況. 可以發(fā)現(xiàn)默認(rèn)方式啟動(dòng)的 continer 都是在這個(gè) bridge 的網(wǎng)絡(luò)下. 而這些container 之間是相同的. 只是相互之間訪問必須才用 ip 的方式來訪問, 而且每次 container 啟動(dòng)的時(shí)候 ip 地址會(huì)是變化的. 所以要在 bridge network 下相互訪問網(wǎng)路服務(wù)非常的麻煩.

$docker network inspect bridge
[
    {
        "Name": "bridge",
# 忽略....
        "Containers": {
            "91c3adde0212956c4cc2800dc9795165b1aea2a59547f74b441ec27e2427ac5a": {
                "Name": "graphite",
                "EndpointID": "f1e4c35371035e7149d80b9bb567282e686ae99cb118bc81bb6e7996efbe1993",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            },
            "d7ae7809b8530b4ee473991bd65cb6446c382c462e7d4702b7b81b8ec58b4362": {
                "Name": "grafana",
                "EndpointID": "9341a8a43bff28fb9077ba1a3d2b6609fd6a91214109e075658acbd9ba7ef840",
                "MacAddress": "02:42:ac:11:00:03",
                "IPv4Address": "172.17.0.3/16",
                "IPv6Address": ""
            }
        },
# 忽略...
    }
]

好在 docker 在用戶自己創(chuàng)建的網(wǎng)絡(luò)中提供了從 container 名字到對(duì)應(yīng) ip 的解析. 換句話說, 可以直接通過 container 的名字來訪問需要的服務(wù).

完成剛才的例子

首先我們?yōu)槲覀兊?nginx 和 helloworld 網(wǎng)絡(luò)服務(wù)器創(chuàng)建一個(gè)叫 "supernet" 的網(wǎng)絡(luò).

$docker network create supernet

然后通過--network--name 啟動(dòng)一個(gè)加入到 supernet 網(wǎng)絡(luò)的 hello world 網(wǎng)路服務(wù).

$ docker  run --network supernet --name hello  --rm  pshu/helloworld:1.0.0

接著創(chuàng)建一個(gè) default.conf 文件作為 nginx 服務(wù)器的反向代理配置文件, 將所有http 請(qǐng)求代理到 hello 容器的3000端口上.

server {
    listen       8080;
    server_name  localhost;

    location / {
        proxy_pass   http://hello:3000;
    }
}

同樣采用 --network 將運(yùn)行 nginx 的容器也加入到 supernet 的網(wǎng)絡(luò)中去;同時(shí)映射對(duì)應(yīng)的配置文件和端口.

$docker run -it --rm  --network supernet  
            -v $PWD/conf.d:/etc/nginx/conf.d -p 8080:8080 nginx

最后我就能通過 http://127.0.0.0:8080 訪問到來自 hello container 中的 http 服務(wù)了.

希望大家喜歡.

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/27080.html

相關(guān)文章

  • [afterCode] docker 成班 6: docker-compose

    摘要:通過的我們可以將多個(gè)有機(jī)的組合起來構(gòu)建出自己需要的服務(wù)但是這里有幾個(gè)小問題就是不利于分享步驟麻煩需要自己創(chuàng)建指定使用那如何解決上面的兩個(gè)問題呢第節(jié)例子中的服務(wù)可以通過創(chuàng)建一個(gè)這樣的文件來解決通過下面的命令就能將所有需要的啟動(dòng)起來 通過docker 的 network我們可以將多個(gè) container 有機(jī)的組合起來構(gòu)建出自己需要的服務(wù). 但是這里有幾個(gè)小問題就是 不利于分享. 步驟麻...

    Integ 評(píng)論0 收藏0
  • [afterCode] docker 成班 7: 實(shí)戰(zhàn) 構(gòu)建基于graphtie/grafana監(jiān)

    摘要:由于公司沒有運(yùn)維又需要監(jiān)控服務(wù)器的一些數(shù)據(jù)信息想盡快的啟動(dòng)一個(gè)數(shù)值監(jiān)控系統(tǒng)技術(shù)評(píng)估了下打算的方式來建設(shè)是一個(gè)時(shí)間數(shù)列數(shù)據(jù)庫并且自帶一些簡單圖形展示功能雖然展示方面不是很完美但是在收集時(shí)間數(shù)據(jù)上非常的方便和簡單根據(jù)官網(wǎng)的例子只需要一個(gè)連接就能 由于公司沒有運(yùn)維, 又需要監(jiān)控服務(wù)器的一些數(shù)據(jù)信息, 想盡快的啟動(dòng)一個(gè)數(shù)值監(jiān)控系統(tǒng). 技術(shù)評(píng)估了下打算 graphite + grafana 的...

    jhhfft 評(píng)論0 收藏0
  • [afterCode] docker 成班 3: 使用 container 中的功能

    摘要:通過將執(zhí)行起來了不是為了看看容器的狀態(tài)而是想使用中的功能介紹兩種方式來使用容器中的功能通過端口訪問中的服務(wù)通過端口的方式來使用提供的服務(wù)是最簡單的了只要通過或者選項(xiàng)來向宿主機(jī)暴露服務(wù)端口就可以了比如我們可以這樣在后臺(tái)啟動(dòng)一個(gè)服務(wù)并將中 通過docker 將 container 執(zhí)行起來了,不是為了看看容器的狀態(tài),而是想使用 container 中的功能.介紹兩種方式來使用容器中的功能....

    Rainie 評(píng)論0 收藏0
  • [afterCode] docker 成班 2: container

    摘要:本來想在一篇里面就寫完所有的內(nèi)容的但是考慮考慮到文章太長會(huì)和風(fēng)格相背離所以就按連載的形式來容器是物質(zhì)基礎(chǔ)有了這個(gè)才能讓能運(yùn)行起來運(yùn)行起來的稱之為容器它使用中的一等公民直接啟動(dòng)使用啟動(dòng)一個(gè)容器如果你沒有下載過的話會(huì)自動(dòng)下載一個(gè)的指定方法和刪除 本來想在一篇 blog 里面就寫完所有的內(nèi)容的,但是考慮考慮到文章太長會(huì)和 egghead 風(fēng)格相背離,所以就按連載的形式來. 容器 contai...

    stormjun 評(píng)論0 收藏0
  • [afterCode] docker 成班 4: 自建 Image

    摘要:通過能獲得很多別人定制好的但是如果自己想制作一個(gè)自己容器該怎么弄呢用就像一個(gè)腳本文件告訴如何創(chuàng)建一個(gè)新的下面舉例來用來制作一個(gè)服務(wù)器的指令剛才提到了社區(qū)已經(jīng)有很多很好用的那我們要構(gòu)建自己的的話就可以在這些的基礎(chǔ)上來做我們要做一個(gè)基于的服務(wù)器 通過 docker hub 能獲得很多別人定制好的image, 但是如果自己想制作一個(gè)自己容器該怎么弄呢? 用 Dockerfile Docker...

    Charles 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<