欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker基礎(chǔ) :網(wǎng)絡(luò)配置詳解

 更新時(shí)間:2017年02月15日 09:23:16   作者:sparkdev  
本篇文章將講述 Docker 的網(wǎng)絡(luò)功能,包括使用端口映射機(jī)制來(lái)將容器內(nèi)應(yīng)用服務(wù)提供給外部網(wǎng)絡(luò),以及通過(guò)容器互聯(lián)系統(tǒng)讓多個(gè)容器之間進(jìn)行快捷的網(wǎng)絡(luò)通信,有興趣的可以了解下。

大量的互聯(lián)網(wǎng)應(yīng)用服務(wù)包含多個(gè)服務(wù)組件,這往往需要多個(gè)容器之間通過(guò)網(wǎng)絡(luò)通信進(jìn)行相互配合。Docker 目前提供了映射容器端口到宿主主機(jī)和容器互聯(lián)機(jī)制來(lái)為容器提供網(wǎng)絡(luò)服務(wù)。接下來(lái)我們將講述 Docker 的網(wǎng)絡(luò)功能,包括使用端口映射機(jī)制來(lái)將容器內(nèi)應(yīng)用服務(wù)提供給外部網(wǎng)絡(luò),以及通過(guò)容器互聯(lián)系統(tǒng)讓多個(gè)容器之間進(jìn)行快捷的網(wǎng)絡(luò)通信。

端口映射實(shí)現(xiàn)訪問(wèn)容器

從外部訪問(wèn)容器應(yīng)用

在啟動(dòng)容器的時(shí)候,如果不指定對(duì)應(yīng)的參數(shù),在容器外部是無(wú)法通過(guò)網(wǎng)絡(luò)來(lái)訪問(wèn)容器內(nèi)的網(wǎng)絡(luò)應(yīng)用和服務(wù)的。當(dāng)容器中運(yùn)行了一些網(wǎng)絡(luò)應(yīng)用,要讓外部訪問(wèn)這些應(yīng)用時(shí),可以通過(guò) -P 或 -p 參數(shù)來(lái)指定端口映射。當(dāng)使用 -P 參數(shù)時(shí),Docker 會(huì)隨機(jī)選擇一個(gè)主機(jī)可用的端口映射至容器內(nèi)部開(kāi)放的網(wǎng)絡(luò)端口:

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

使用 docker ps 命令查看一下映射結(jié)果:

我這里主機(jī)的 32768 端口映射到了容器的 5000 端口。此時(shí)訪問(wèn)主機(jī)的 32768 端口就可以訪問(wèn)容器內(nèi) web 應(yīng)用提供的內(nèi)容。
-p (小寫(xiě))參數(shù)則可以指定要映射的主機(jī)端口。注意,在一個(gè)指定的主機(jī)端口上只能綁定一個(gè)容器。我們可以通過(guò)不同的參數(shù)格式映射主機(jī)和容器之間的端口:

Ip:hostPort:containerPort

Ip::containerPort

hostPort:containerPort

映射所有接口地址

使用 hostPort:containerPort 格式將本地的 5000 端口映射到容器的 5000 端口,可以執(zhí)行如下命令:

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

此時(shí)默認(rèn)會(huì)綁定本地所有接口上的所有地址(如果主機(jī)有多個(gè) IP,那么每個(gè) IP 的 5000 端口都映射到了容器的 5000 端口)。

多次使用 -p 參數(shù)可以綁定多個(gè)端口:

$ sudo docker run -d -p 5000:5000 -p 3000:80 training/webapp python app.py

映射到指定地址的指定端口

可以使用 ip:hostPort:containerPort 格式的參數(shù)指定映射使用一個(gè)特定地址,比如 localhost 地址 127.0.0.1:

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

映射到指定地址的任意端口

使用 ip::containerPort 格式的參數(shù)可以綁定 localhost 的任意端口到容器的 5000 端口,本地主機(jī)會(huì)自動(dòng)分配一個(gè)端口:

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

另外還可以使用 udp 標(biāo)記來(lái)指定 udp 端口:

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

查看映射端口配置

使用 docker port 命令可以查看當(dāng)前映射的端口配置,也可以查看到綁定的地址:

上圖中 mad_einstein 是容器的名字,32768 是容器的 5000 端口映射到主機(jī)上的端口。

容器互聯(lián)實(shí)現(xiàn)容器間通信

容器的連接(linking)系統(tǒng)是除了端口映射外另一種可以與容器中應(yīng)用進(jìn)行交互的方式。它會(huì)在源和接收容器之間創(chuàng)建一個(gè)隧道,接收容器可以看到源容器指定的信息。

自定義容器命名

連接系統(tǒng)依據(jù)容器的名稱(chēng)來(lái)執(zhí)行。因此,首先需要自定義一個(gè)好記的容器名稱(chēng)。雖然當(dāng)創(chuàng)建容器的時(shí)候,系統(tǒng)默認(rèn)會(huì)分配一個(gè)名字,但自定義命名容器有兩個(gè)好處:

1.    自定義的名稱(chēng)比較好記。

2.    當(dāng)要連接其他容器的時(shí)候,可以作為一個(gè)有用的參考點(diǎn),比如連接 web 容器到 db 容器。

使用 –name 標(biāo)記可以為容器自定義名稱(chēng):

$ sudo docker run -d -P –name web training/webapp python app.py

使用 docker ps 來(lái)驗(yàn)證設(shè)定的名稱(chēng):

也可以使用 docker inspect 來(lái)查看容器的名稱(chēng):

注意,容器的名稱(chēng)是唯一的。如果已經(jīng)命名了一個(gè)叫 web 的容器,當(dāng)你要再次使用 web 這個(gè)名稱(chēng)的時(shí)候,需要先用 docker rm 來(lái)刪除之前創(chuàng)建的同名容器。在執(zhí)行 docker run 的時(shí)候如果添加 – rm 標(biāo)記,則容器在終止后會(huì)立刻刪除。但 – rm 和 -d 不能同時(shí)使用。

容器互聯(lián)

使用 –link 參數(shù)可以讓容器之間安全的進(jìn)行交互。

下面先創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù)容器:

$ sudo docker run -d –name db training/postgres

刪除之前創(chuàng)建的web容器:

$ sudo docker rm -f web

然后創(chuàng)建一個(gè)新的 web 容器,并將它連接到 db 容器:

$ sudo docker run -d -P –name web –link db:db training/webapp python app.py

此時(shí),db 容器和 web 容器建立互聯(lián)關(guān)系。

--link 參數(shù)的格式為 –link name:alias,其中 name 是要連接的容器的名稱(chēng),alias 是這個(gè)連接的別名。

Docker 在兩個(gè)互聯(lián)的容器之間創(chuàng)建了一個(gè)安全隧道,而且不用映射它們的端口到宿主主機(jī)上。在啟動(dòng) db 容器的時(shí)候沒(méi)有使用 -p 和 -P 標(biāo)記,從而避免了暴露數(shù)據(jù)庫(kù)端口到外部網(wǎng)絡(luò)上。

Docker 通過(guò)兩種方式為容器公開(kāi)連接信息:

1.    環(huán)境變量。

2.    更新 /etc/hosts文件。

使用 env 命令來(lái)查看 web 容器的環(huán)境變量:

$ sudo docker run –rm –name web2 –link db:db training/webapp python app.py env

其中 DB_ 開(kāi)頭的環(huán)境變量是供 web 容器連接 db 容器使用的。

除了環(huán)境變量,Docker 還添加了 host 信息到容器的 /etc/hosts 文件中。下面查看web容器的 hosts 文件:

$ sudo docker run -t -I –rm –link db:db training/webapp /bin/bash

上圖中有兩個(gè) host 信息,第一個(gè)是 db 容器的名稱(chēng) ip 和主機(jī)名。第二個(gè)是 web 容器,web 容器用自己的 id 作為默認(rèn)主機(jī)名。我們可以通過(guò) ping 命令測(cè)試 web 容器到db容器的連接:

如圖所示,名稱(chēng) db 被解析成了 172.17.0.24。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解Docker 國(guó)內(nèi)鏡像的配置及使用

    詳解Docker 國(guó)內(nèi)鏡像的配置及使用

    這篇文章主要介紹了詳解Docker 國(guó)內(nèi)鏡像的配置及使用 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 將strapi打包成docker鏡像的步驟詳解

    將strapi打包成docker鏡像的步驟詳解

    在這個(gè)指南中,我們將學(xué)習(xí)如何將 Strapi 應(yīng)用程序打包成 Docker 鏡像,解決多環(huán)境部署問(wèn)題,文末也會(huì)提供打包好的鏡像地址,讓同學(xué)們能夠直接使用,需要的朋友可以參考下
    2024-01-01
  • Linux環(huán)境下安裝docker環(huán)境(親測(cè)無(wú)坑)

    Linux環(huán)境下安裝docker環(huán)境(親測(cè)無(wú)坑)

    大家好,本篇文章主要講的是Linux環(huán)境下安裝docker環(huán)境(親測(cè)無(wú)坑),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下
    2021-12-12
  • Docker執(zhí)行DockerFile構(gòu)建過(guò)程指令解析

    Docker執(zhí)行DockerFile構(gòu)建過(guò)程指令解析

    這篇文章主要為大家介紹了Docker執(zhí)行DockerFile構(gòu)建過(guò)程及DockerFile的指令解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪<BR>
    2022-04-04
  • 什么是Docker? Docker入門(mén)教程

    什么是Docker? Docker入門(mén)教程

    本文主要涉及Docker的基礎(chǔ)知識(shí):Docker的概述、docker容器以及如何安裝使用Docker。希望大家能夠喜歡
    2017-03-03
  • 解決docker安裝后運(yùn)行hello-world報(bào)錯(cuò)的問(wèn)題

    解決docker安裝后運(yùn)行hello-world報(bào)錯(cuò)的問(wèn)題

    這篇文章主要介紹了解決docker安裝后運(yùn)行hello-world報(bào)錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • 使用Docker Compose搭建 Confluence的教程

    使用Docker Compose搭建 Confluence的教程

    本文將介紹如何使用 Docker Compose 快速搭建 Confluence 、以及如何和 Traefik 一同使用,如果你看過(guò)之前的內(nèi)容,跟隨本文應(yīng)該能在十分鐘內(nèi)解決戰(zhàn)斗,感興趣的朋友快來(lái)看看吧
    2021-06-06
  • Docker 常用命令整理(實(shí)用篇)

    Docker 常用命令整理(實(shí)用篇)

    這篇文章主要介紹了Docker 常用命令整理,需要的朋友可以參考下
    2017-02-02
  • docker-compose?up?-d遇到的問(wèn)題及解決

    docker-compose?up?-d遇到的問(wèn)題及解決

    這篇文章主要介紹了docker-compose?up?-d遇到的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Docker?部署?Nexus?Maven私服的詳細(xì)過(guò)程

    Docker?部署?Nexus?Maven私服的詳細(xì)過(guò)程

    Nexus?是一個(gè)強(qiáng)大的倉(cāng)庫(kù)管理器,廣泛用于管理和組織軟件構(gòu)建過(guò)程中的依賴(lài)項(xiàng)和構(gòu)件,通過(guò)?Docker?部署?Nexus?私服,可以簡(jiǎn)化安裝和管理過(guò)程,并提供更高的靈活性和可擴(kuò)展性,這篇文章主要介紹了Docker?部署?Nexus?Maven私服的詳細(xì)過(guò)程,需要的朋友可以參考下
    2024-08-08

最新評(píng)論