最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker?容器連接的具體實(shí)現(xiàn)

 更新時(shí)間:2023年03月28日 08:30:23   作者:海棠贈(zèng)微雨.  
本文主要介紹了Docker?容器連接的具體實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前面我們實(shí)現(xiàn)了通過(guò)網(wǎng)絡(luò)端口來(lái)訪問(wèn)運(yùn)行在 docker 容器內(nèi)的服務(wù)。

容器中可以運(yùn)行一些網(wǎng)絡(luò)應(yīng)用,要讓外部也可以訪問(wèn)這些應(yīng)用,可以通過(guò) -P-p 參數(shù)來(lái)指定端口映射。

下面我們來(lái)實(shí)現(xiàn)通過(guò)端口連接到一個(gè) docker 容器。

網(wǎng)絡(luò)端口映射

我們創(chuàng)建了一個(gè) python 應(yīng)用的容器。

csdn@csdn:~$ docker run -d -P training/webapp python app.py
fce072cc88cee71b1cdceb57c2821d054a4a59f67da6b416fceb5593f059fc6d

另外,我們可以指定容器綁定的網(wǎng)絡(luò)地址,比如綁定 127.0.0.1。

我們使用 -P 綁定端口號(hào),使用 docker ps 可以看到容器端口 5000 綁定主機(jī)端口 32768。

csdn@csdn:~$ docker ps
CONTAINER ID    IMAGE               COMMAND            ...           PORTS                     NAMES
fce072cc88ce    training/webapp     "python app.py"    ...     0.0.0.0:32768->5000/tcp   grave_hopper

我們也可以使用 -p 標(biāo)識(shí)來(lái)指定容器端口綁定到主機(jī)端口。

兩種方式的區(qū)別是:

  • -P :是容器內(nèi)部端口隨機(jī)映射到主機(jī)的端口。
  • -p : 是容器內(nèi)部端口綁定到指定的主機(jī)端口。
csdn@csdn:~$ docker run -d -p 5000:5000 training/webapp python app.py
33e4523d30aaf0258915c368e66e03b49535de0ef20317d3f639d40222ba6bc0
csdn@csdn:~$ docker ps
CONTAINER ID        IMAGE               COMMAND           ...           PORTS                     NAMES
33e4523d30aa        training/webapp     "python app.py"   ...   0.0.0.0:5000->5000/tcp    berserk_bartik
fce072cc88ce        training/webapp     "python app.py"   ...   0.0.0.0:32768->5000/tcp   grave_hopper

另外,我們可以指定容器綁定的網(wǎng)絡(luò)地址,比如綁定 127.0.0.1。

csdn@csdn:~$ docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py
95c6ceef88ca3e71eaf303c2833fd6701d8d1b2572b5613b5a932dfdfe8a857c
csdn@csdn:~$ docker ps
CONTAINER ID        IMAGE               COMMAND           ...     PORTS                                NAMES
95c6ceef88ca        training/webapp     "python app.py"   ...  5000/tcp, 127.0.0.1:5001->5000/tcp   adoring_stonebraker
33e4523d30aa        training/webapp     "python app.py"   ...  0.0.0.0:5000->5000/tcp               berserk_bartik
fce072cc88ce        training/webapp     "python app.py"   ...    0.0.0.0:32768->5000/tcp              grave_hopper

這樣我們就可以通過(guò)訪問(wèn) 127.0.0.1:5001 來(lái)訪問(wèn)容器的 5000 端口。

上面的例子中,默認(rèn)都是綁定 tcp 端口,如果要綁定 UDP 端口,可以在端口后面加上 /udp。

csdn@csdn:~$ docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
6779686f06f6204579c1d655dd8b2b31e8e809b245a97b2d3a8e35abe9dcd22a
csdn@csdn:~$ docker ps
CONTAINER ID        IMAGE               COMMAND           ...   PORTS                                NAMES
6779686f06f6        training/webapp     "python app.py"   ...   5000/tcp, 127.0.0.1:5000->5000/udp   drunk_visvesvaraya
95c6ceef88ca        training/webapp     "python app.py"   ...    5000/tcp, 127.0.0.1:5001->5000/tcp   adoring_stonebraker
33e4523d30aa        training/webapp     "python app.py"   ...     0.0.0.0:5000->5000/tcp               berserk_bartik
fce072cc88ce        training/webapp     "python app.py"   ...    0.0.0.0:32768->5000/tcp              grave_hopper

docker port 命令可以讓我們快捷地查看端口的綁定情況。

csdn@csdn:~$ docker port adoring_stonebraker 5000
127.0.0.1:5001

Docker 容器互聯(lián)

端口映射并不是唯一把 docker 連接到另一個(gè)容器的方法。

docker 有一個(gè)連接系統(tǒng)允許將多個(gè)容器連接在一起,共享連接信息。

docker 連接會(huì)創(chuàng)建一個(gè)父子關(guān)系,其中父容器可以看到子容器的信息。

容器命名

當(dāng)我們創(chuàng)建一個(gè)容器的時(shí)候,docker 會(huì)自動(dòng)對(duì)它進(jìn)行命名。另外,我們也可以使用 --name 標(biāo)識(shí)來(lái)命名容器,例如:

csdn@csdn:~$  docker run -d -P --name csdn training/webapp python app.py
43780a6eabaaf14e590b6e849235c75f3012995403f97749775e38436db9a441

我們可以使用 docker ps 命令來(lái)查看容器名稱。

csdn@csdn:~$ docker ps -l
CONTAINER ID     IMAGE            COMMAND           ...    PORTS                     NAMES
43780a6eabaa     training/webapp   "python app.py"  ...     0.0.0.0:32769->5000/tcp   csdn

新建網(wǎng)絡(luò)
下面先創(chuàng)建一個(gè)新的 Docker 網(wǎng)絡(luò)。

$ docker network create -d bridge test-net

在這里插入圖片描述

參數(shù)說(shuō)明:

-d:參數(shù)指定 Docker 網(wǎng)絡(luò)類型,有 bridge、overlay。

其中 overlay 網(wǎng)絡(luò)類型用于 Swarm mode,在本小節(jié)中你可以忽略它。

連接容器
運(yùn)行一個(gè)容器并連接到新建的 test-net 網(wǎng)絡(luò):

$ docker run -itd --name test1 --network test-net ubuntu /bin/bash

打開(kāi)新的終端,再運(yùn)行一個(gè)容器并加入到 test-net 網(wǎng)絡(luò):

$ docker run -itd --name test2 --network test-net ubuntu /bin/bash

點(diǎn)擊圖片查看大圖:

在這里插入圖片描述

下面通過(guò) ping 來(lái)證明 test1 容器和 test2 容器建立了互聯(lián)關(guān)系。

如果 test1、test2 容器內(nèi)中無(wú) ping 命令,則在容器內(nèi)執(zhí)行以下命令安裝 ping(即學(xué)即用:可以在一個(gè)容器里安裝好,提交容器到鏡像,在以新的鏡像重新運(yùn)行以上倆個(gè)容器)。

apt-get update
apt install iputils-ping

在 test1 容器輸入以下命令:

點(diǎn)擊圖片查看大圖:

在這里插入圖片描述

同理在 test2 容器也會(huì)成功連接到:

點(diǎn)擊圖片查看大圖:

在這里插入圖片描述

這樣,test1 容器和 test2 容器建立了互聯(lián)關(guān)系。

如果你有多個(gè)容器之間需要互相連接,推薦使用 Docker Compose,后面會(huì)介紹。

配置 DNS
我們可以在宿主機(jī)的 /etc/docker/daemon.json 文件中增加以下內(nèi)容來(lái)設(shè)置全部容器的 DNS:

{
  "dns" : [
    "114.114.114.114",
    "8.8.8.8"
  ]
}

設(shè)置后,啟動(dòng)容器的 DNS 會(huì)自動(dòng)配置為 114.114.114.114 和 8.8.8.8。

配置完,需要重啟 docker 才能生效。

查看容器的 DNS 是否生效可以使用以下命令,它會(huì)輸出容器的 DNS 信息:

$ docker run -it --rm ubuntu cat etc/resolv.conf

點(diǎn)擊圖片查看大圖:

在這里插入圖片描述

手動(dòng)指定容器的配置

如果只想在指定的容器設(shè)置 DNS,則可以使用以下命令:

$ docker run -it --rm -h host_ubuntu --dns=114.114.114.114 --dns-search=test.com ubuntu

參數(shù)說(shuō)明:

  • --rm:容器退出時(shí)自動(dòng)清理容器內(nèi)部的文件系統(tǒng)。
  • -h HOSTNAME 或者 --hostname=HOSTNAME: 設(shè)定容器的主機(jī)名,它會(huì)被寫(xiě)到容器內(nèi)的 /etc/hostname 和 /etc/hosts。

--dns=IP_ADDRESS: 添加 DNS 服務(wù)器到容器的 /etc/resolv.conf 中,讓容器用這個(gè)服務(wù)器來(lái)解析所有不在 /etc/hosts 中的主機(jī)名。

--dns-search=DOMAIN: 設(shè)定容器的搜索域,當(dāng)設(shè)定搜索域?yàn)?.example.com 時(shí),在搜索一個(gè)名為 host 的主機(jī)時(shí),DNS 不僅搜索 host,還會(huì)搜索 host.example.com。

點(diǎn)擊圖片查看大圖:

在這里插入圖片描述

如果在容器啟動(dòng)時(shí)沒(méi)有指定 --dns 和 –dns-search,Docker 會(huì)默認(rèn)用宿主主機(jī)上的 /etc/resolv.conf 來(lái)配置容器的 DNS。

解決Windows系統(tǒng)無(wú)法對(duì)docker容器進(jìn)行端口映射的問(wèn)題

1、問(wèn)題:

在Windows家庭版下安裝了docker,并嘗試在其中運(yùn)行jupyter notebook等服務(wù),但映射完畢之后,在主機(jī)的瀏覽器中,打開(kāi)localhost:port無(wú)法訪問(wèn)對(duì)應(yīng)的服務(wù)。

2、問(wèn)題出現(xiàn)的原因:

The reason you’re having this, is because on Linux, the docker daemon (and your containers) run on the Linux machine itself, so “localhost” is also the host that the container is running on, and the ports are mapped to.

On Windows (and OS X), the docker daemon, and your containers cannot run natively, so only the docker client is running on your Windows machine, but the daemon (and your containers) run in a VirtualBox Virtual Machine, that runs Linux.

因?yàn)閐ocker是運(yùn)行在Linux上的,在Windows中運(yùn)行docker,實(shí)際上還是在Windows下先安裝了一個(gè)Linux環(huán)境,然后在這個(gè)系統(tǒng)中運(yùn)行的docker。也就是說(shuō),服務(wù)中使用的localhost指的是這個(gè)Linux環(huán)境的地址,而不是我們的宿主環(huán)境Windows。

3、解決方法:

通過(guò)命令:

docker-machine ip default # 其中,default 是docker-machine的name,可以通過(guò)docker-machine -ls 查看

找到這個(gè)Linux的ip地址,一般情況下這個(gè)地址是192.168.99.100,然后在Windows的瀏覽器中,輸入這個(gè)地址,加上服務(wù)的端口即可啟用了。

比如,首先運(yùn)行一個(gè)docker 容器:

docker run -it -p 8888:8888 conda:v1

其中,conda:v1是我的容器名稱。然后在容器中開(kāi)啟jupyter notebook 服務(wù):

jupyter notebook --no-browser --port=8888 --ip=172.17.0.2 --allow-root

其中的ip參數(shù)為我的容器的ip地址,可以通過(guò)如下命令獲得:

docker inspect container_id

最后在Windows瀏覽器中測(cè)試結(jié)果:http://192.168.99.100:8888

到此這篇關(guān)于Docker 容器連接的具體實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Docker 容器連接內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 手把手教你docker部署(使用docker-compose)教程

    手把手教你docker部署(使用docker-compose)教程

    使用 Docker Compose 可以輕松、高效的管理容器,下面這篇文章主要給大家介紹了關(guān)于手把手教你docker部署(使用docker-compose)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • docker之如何搭建VXXXN

    docker之如何搭建VXXXN

    文章介紹了如何快速搭建IPsec-vvv-server并配置以啟動(dòng)和運(yùn)行,首先在服務(wù)器上執(zhí)行相關(guān)命令,然后查看運(yùn)行情況并配置安全組開(kāi)放指定端口,測(cè)試使用Win10系統(tǒng)自帶的VXXXN應(yīng)用連接失敗,但手機(jī)連接成功,文章提供了一定的配置指導(dǎo),并鼓勵(lì)大家參考和支持
    2025-01-01
  • docker容器無(wú)法stop的解決辦法

    docker容器無(wú)法stop的解決辦法

    在本篇文章里小編給大家整理了關(guān)于docker容器無(wú)法stop的解決辦法,有需要的朋友們可以參考下。
    2020-03-03
  • Docker安裝(Ubuntu 64bit)的方法步驟

    Docker安裝(Ubuntu 64bit)的方法步驟

    本篇文章主要介紹了 Docker安裝 Ubuntu 64bit的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Docker使用、容器遷移的方案詳解

    Docker使用、容器遷移的方案詳解

    Docker 是一個(gè)開(kāi)源的容器化平臺(tái),用于打包、部署和運(yùn)行應(yīng)用程序及其依賴環(huán)境,本文給大家介紹Docker使用、容器遷移的方案,感興趣的朋友一起看看吧
    2025-04-04
  • docker-compose部署Yapi的方法

    docker-compose部署Yapi的方法

    這篇文章主要介紹了docker-compose部署Yapi,需要的朋友可以參考下
    2022-04-04
  • 使用Docker安裝detectron2的配置方法

    使用Docker安裝detectron2的配置方法

    Detectron2 是一個(gè)用于目標(biāo)檢測(cè)、分割和其他視覺(jué)識(shí)別任務(wù)的平臺(tái),下面采用 docker 方式在 windows 上安裝,對(duì)Docker安裝detectron2的配置方法感興趣的朋友一起看看吧
    2024-03-03
  • Docker進(jìn)階之快速擴(kuò)容的方法

    Docker進(jìn)階之快速擴(kuò)容的方法

    這篇文章主要介紹了Docker進(jìn)階之快速擴(kuò)容的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Docker?Login?登錄憑證安全存儲(chǔ)方式

    Docker?Login?登錄憑證安全存儲(chǔ)方式

    本文主要探討Docker鏡像倉(cāng)庫(kù)登錄憑證的存儲(chǔ)問(wèn)題,Docker利用docker login命令校驗(yàn)用戶鏡像倉(cāng)庫(kù)的登錄憑證,正確的用戶名密碼會(huì)以base64編碼格式保存在Docker配置文件中,這種方式極易泄露且不安全
    2024-09-09
  • docker?容器中安裝mysql服務(wù)的方法

    docker?容器中安裝mysql服務(wù)的方法

    這篇文章主要介紹了docker容器中安裝mysql服務(wù)的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07

最新評(píng)論

阜宁县| 惠东县| 巴东县| 苗栗市| 昌乐县| 桑日县| 喀喇沁旗| 利津县| 太白县| 玉林市| 云安县| 宜都市| 莱阳市| 景德镇市| 隆安县| 安溪县| 富川| 卢龙县| 剑河县| 年辖:市辖区| 万山特区| 灵丘县| 大理市| 华蓥市| 孝义市| 壤塘县| 乡宁县| 桐梓县| 高碑店市| 攀枝花市| 东山县| 九寨沟县| 黑河市| 屯门区| 衡山县| 葵青区| 绥化市| 天等县| 白银市| 梧州市| 洛隆县|