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

docker中的link和network網(wǎng)絡互連問題

 更新時間:2023年11月10日 09:40:49   作者:GoverChan  
這篇文章主要介紹了docker中的link和network網(wǎng)絡互連問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

原因和問題

docker 的每個容器相當于有個內(nèi)網(wǎng)地址。

比如 mymysql 容器 172.17.0.2,mynginx 容器為 172.17.0.3 ,那么他們的通信機制是連到了 docker0 這個 bridge,大概如下圖:

容器之間互相訪問,一般形式是:ip + 端口,比如:

// 進入容器:
docker run exec -it /bin/bash

// ping 一下端口發(fā)現(xiàn)是通的(得已經(jīng)做了映射到本地)
ping 172.17.0.2:3306

問題:每次部署或啟動,相同容器的 IP 會發(fā)生變化。

解決方法:docker 中采用 link 來為容器起個名字,以后訪問只要名字 + 端口就行了,IP 變化了也沒關系。

link 的使用方法

請注意,這里只是介紹,請不要使用 link,將被廢棄。

第一種:使用 run 的參數(shù)

// 1、創(chuàng)建容器 test1
docker run -d --name test1 nginx

// 2、創(chuàng)建容器 test2并 link 到 test1。
docker run -d --name test2 --link test1 nginx

// 3、進入test2,并 ping test1,發(fā)現(xiàn)是可以 ping 通的。
docker exec -it test2 /bin/sh
ping test1

test2 link 到 test,其實就是修改了 test2 自己的 host 文件和設置了環(huán)境變量而已。

所以 test2 能 ping 通 test1,但是 test1 無法 ping 通 test2

第二種:在 yml 文件中的使用方法

links:
 - db
 - db:database     //連接到 db 服務,并命名為 database
 - redis

使用的別名將會自動在服務容器中的 / etc/hosts 里創(chuàng)建。

例如:

172.12.2.186  db
172.12.2.186  database
172.12.2.187  redis
  • 相應的環(huán)境變量也將被創(chuàng)建。
  • 使用 link 會默認連接到 【目錄_defeat】 網(wǎng)絡中,

關于使用 network 

實際中是非常少使用 link 的,并且下一代版本將會被廢棄。應該使用 network。

將容器連接到自己創(chuàng)建的同一個網(wǎng)絡上,就可以相互 ping 通了。(記住,這里是自己創(chuàng)建的網(wǎng)橋才能 ping 通)

以下是常用的命令:

// 創(chuàng)建一個叫做 my-bridge 的網(wǎng)橋,使用的連接方式是 bridge
docker network create -d bridge my-bridge

// 顯示所有 bridge,可以看到我們剛剛創(chuàng)建的 my-bridge 網(wǎng)絡,id為75e4133b9ab2
docker network ls

// 創(chuàng)建容器mynginx2并添加到 my-bridge 網(wǎng)絡中 
docker run --name mynginx2 --network my-bridge -p 8080:80 -d nginx:latest

// 使用 inspect 查看。NETWORK 顯示的是 my-bridge,且 ID 為75e4133b9ab2。 內(nèi)網(wǎng) IP 為172.18.0.2(之前沒指定都是默認的172.17.xx.xx,即默認的 docker0 )
docker inspect mynginx2

——同理,你也可以通過 docker inspect my-bridge,會發(fā)現(xiàn)自建的 my-bridge 的 containers里面有 mynginx2

//查看 my-bridge 網(wǎng)絡里面的容器
docker inspect my-bridge

//手動將某個容器加入網(wǎng)橋
docker network connect my-bridage test2

使用 docker network ls 的時候,會發(fā)現(xiàn),本來就有三中網(wǎng)絡,分別為 host none bridge,并且這原始的三種是無法刪除的、 

// 在 yml 文件中定義 networks:

version: '3'
services:
  nginx:
    image: nginx:1.15-alpine
    container_name: mynginx
    ports:
      - "80:80"
    volumes:
      - ${DIR_WWW}:${DIR_WWW}:rw
      - ./conf/nginx/conf.d:/etc/nginx/conf.d/:ro
      - ./conf/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
      - ./log/nginx/:/var/log/nginx/:rw
    networks:
      - front

  phpfpm:
    image: raven666/ct-phpfpm:v1
    container_name: myphpfpm
    expose:
      - "9000"
    volumes:
      - ${DIR_WWW}:${DIR_WWW}:rw
      - ./conf/php/php.ini:/usr/local/etc/php/php.ini:ro
      - ./conf/php/php-fpm.d/www.conf:/usr/local/etc/php-fpm.d/www.conf:rw
      - ./conf/supervisor/conf.d:/etc/supervisor/conf.d/:ro
      - ./log/php-fpm/:/var/log/php-fpm/:rw
      - ./log/supervisor/:/var/log/supervisor/:rw
    command: supervisord -n
    networks:
      - front
      - backend
      
  mysql:
    image: mysql:5.7
    container_name: mymysql
    env_file: .env
    ports:
      - "3306:3306"
    volumes:
      - ./conf/mysql/mysql.cnf:/etc/mysql/conf.d/mysql.cnf:ro
      - ${DIR_MYSQL_DATA}:/var/lib/mysql/:rw
      - ./log/mysql/:/var/log/mysql/:rw
    environment:
      MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}"
      MYSQL_DATABASE: "${MYSQL_DATABASE}"
    networks:
      - backend

  redis:
    image: redis:latest
    container_name: myredis
    env_file: .env
    command: redis-server --requirepass "${REDIS_PASSWORD}" --appendonly yes
    ports:
      - "6379:6379"
    volumes:
      - ${DIR_REDIS_DATA}:/data
    networks:
      - backend

networks:
  front:
  backend:
  • 因為我們指定了網(wǎng)絡,所以 up 之后,就會自動生成兩個網(wǎng)絡,分別為【當前目錄名_front】和【當前目錄名_backend】
  • 以上不指定 driver,則會默認使用 bridge。
  • 加入同一個網(wǎng)絡的容器之間可以互聯(lián),比如以上加入 front 的 nginx 和 phpfpm,它們就可以互聯(lián)。同理,php 和 mysql,redis 都加入了 backend,也可以互聯(lián)。

容器之間的訪問可以使用【服務名: 端口】的形式,或者【別名: 端口】的形式。

那么,如何設置別名呢?如下例子:

services:
  phpfpm:
    networks:
      front:
        aliases:
         - fpm
      backend:
        aliases:
         - fpm_back

phpfpm 在 front 網(wǎng)絡中的別名叫做 fpm,所以加入 front 網(wǎng)絡中的容器都可以使用以下兩個方式訪問:

1、【服務名: 端口】   ==>>   【phpfpm:9000】  <<== 我們目前的 nginx 設置的就是這個。

2、【別名: 端口】    ==>>    【fpm:9000】

我目前一般沒有設置別名,都用【服務名: 端口】的形式訪問。

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Docker部署ELK7.3.0日志收集服務最佳實踐

    Docker部署ELK7.3.0日志收集服務最佳實踐

    這篇文章主要介紹了Docker部署ELK7.3.0日志收集服務最佳實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • Docker常用的清除容器鏡像命令小結

    Docker常用的清除容器鏡像命令小結

    這篇文章主要給大家總結了Docker常用的清除容器鏡像命令,相信對大家的學習和工作具有一定的參考借鑒價值,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • Docker容器磁盤占滿的一些情況匯總

    Docker容器磁盤占滿的一些情況匯總

    這篇文章主要給大家介紹了關于Docker容器磁盤占滿的一些情況,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Docker具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-07-07
  • 基于iptables的Docker端口白名單控制實現(xiàn)

    基于iptables的Docker端口白名單控制實現(xiàn)

    本文主要介紹了通過iptables為Docker?Compose部署的容器設置宿主機端口IP白名單,強調(diào)規(guī)則順序與持久化配置,提供單端口和multiport兩種實現(xiàn)方式,感興趣的可以了解一下
    2025-07-07
  • 解決Docker中的error during connect異常情況

    解決Docker中的error during connect異常情況

    這篇文章主要介紹了解決Docker中的error during connect異常情況,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Centos 6.5中安裝docker的步驟(簡潔版)

    Centos 6.5中安裝docker的步驟(簡潔版)

    這篇文章主要介紹了Centos 6.5中安裝docker的步驟(簡潔版),需要的朋友可以參考下
    2016-10-10
  • docker數(shù)據(jù)持久化及配置Volume和mount實踐

    docker數(shù)據(jù)持久化及配置Volume和mount實踐

    文章主要討論了Docker容器的存儲問題,包括只讀層與讀寫層的復制、容器刪除導致的數(shù)據(jù)丟失、以及Docker提供的三種解決方案:bindmount、volume和tmpfs,文章還詳細介紹了volume的優(yōu)點,并提供了一些命令解析和掛載的使用方法
    2026-03-03
  • 如何隔離docker容器中的用戶的方法

    如何隔離docker容器中的用戶的方法

    這篇文章主要介紹了如何隔離docker容器中的用戶的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • CentOS 7 Docker 連接 Docker Hub 失敗解決方案

    CentOS 7 Docker 連接 Docker Hub 

    本文記錄CentOS7系統(tǒng)中Docker無法連接Docker Hub的完整排查過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2026-04-04
  • Docker私服倉庫Harbor安裝的步驟詳解

    Docker私服倉庫Harbor安裝的步驟詳解

    這篇文章主要介紹了Docker私服倉庫Harbor安裝的步驟詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05

最新評論

郧西县| 甘孜| 百色市| 潜山县| 工布江达县| 句容市| 北流市| 胶南市| 东山县| 正蓝旗| 屏东县| 象州县| 基隆市| 钟山县| 广西| 枝江市| 临夏市| 新巴尔虎左旗| 大连市| 东明县| 新兴县| 肇源县| 武川县| 开封县| 平南县| 仁寿县| 琼结县| 盐山县| 方正县| 姜堰市| 镇赉县| 中牟县| 舞钢市| 利辛县| 兴山县| 博罗县| 汝州市| 靖江市| 新巴尔虎左旗| 湖北省| 永春县|