<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] ## 橋接網絡 Bridge Network docker的橋接網絡使用虛擬網橋,bridge網絡用于同一主機上的docker容器相互通信,連接到同一個網橋的docker容器可以相互通信,當我們啟動docke時,會自動創建一個默認bridge網絡,除非我們進行另外的配置,新創建的容器都會自動連接到這個網絡,我們也可以自定義自己的bridge網絡,docker文檔建議使用自定義bridge網絡,默認的bridge網絡具有一定的缺陷 <br> ### 相關操作命令 * #### 創建一個自定義網絡 `docker network create [net-name]` * #### 實例化容器到自定義網絡:`docker run --network [net-name] [CONTAINER]` * #### 運行容器加入到自定義網絡`docker network connect [net-name] [CONTAINER]` * #### 離開用戶自定義網絡`docker network disconnect [net-name] [CONTAINER]` * #### 查看當前網絡模式 `docker network ls` * #### 移除自定義網絡:`docker network rm [net-name]` >[warning]*ps:移除自定義網絡前先移除該網絡上的所有容器* ### 實例演示:容器之間通過自定義bridge通訊 1. 創建自定義網絡test-bridge ``` docker network create test-bridge ``` 2. 初始化容器mysql_bridge,加入到自定義網絡test-bridge ``` docker run -d --name mysql_bridge --network test-bridge -e MYSQL_ROOT_PASSWORD=root mysql:5.7 ``` >[success]*ps:我們這里的mysql服務沒有發布端口,依然可以在bridge網絡內暴露使用* 3. 初始化容器redis_bridge,加入到自定義網絡test-bridge中,并發布端口6397 ``` docker run -d --name redis_bridge --network test-bridge -p 16397:6397 redis:5.0 ``` 4. 檢查mysql_bridge與redis_bridge網絡 ``` root@ubuntu:/home/guanfuchang# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 607aa323a3a2 mysql:5.7 "docker-entrypoint.s…" 4 seconds ago Up 3 seconds 3306/tcp, 33060/tcp mysql_bridge b9b2ca3e0cff redis:5.0 "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 6379/tcp, 0.0.0.0:16397->6397/tcp redis_bridge ``` 從redis容器中測試連接mysql ``` root@ubuntu:/home/guanfuchang# docker exec -it redis_bridge /bin/bash root@b9b2ca3e0cff:/data# root@b9b2ca3e0cff:/data# ping mysql_bridge PING mysql_bridge (172.19.0.3) 56(84) bytes of data. 64 bytes from mysql_bridge.test-bridge (172.19.0.3): icmp_seq=1 ttl=64 time=0.125 ms 64 bytes from mysql_bridge.test-bridge (172.19.0.3): icmp_seq=2 ttl=64 time=0.137 ms 64 bytes from mysql_bridge.test-bridge (172.19.0.3): icmp_seq=3 ttl=64 time=0.131 ms ^C --- mysql_bridge ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2043ms rtt min/avg/max/mdev = 0.125/0.131/0.137/0.005 ms root@b9b2ca3e0cff:/data# root@b9b2ca3e0cff:/data# telnet mysql_bridge 3306 Trying 172.19.0.3... Connected to mysql_bridge. Escape character is '^]'. ``` 由上面的結果可知,在redis容器中,已成功與mysql容器進行通信。 ## 宿主網絡 Host Network 如果在創建容器的時候使用`--network=host`選項,那么容器會使用宿主機的網絡,容器與宿主機的網絡并沒有隔離。 使用這種網絡類型的好處就是網絡性能很好,基本上跟宿主機的網絡一樣,它很大的弊端就是不安全。如果你的程序是用root用戶運行的,有可能會通過Docker容器來控制宿主機的網絡。 ``` docker run -it --network=host redis:5.0 ``` ``` root@ubuntu:/home/guanfuchang# netstat -nap | grep "6379"| grep -w LISTEN tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 31894/redis-server tcp6 0 0 :::6379 :::* LISTEN 31894/redis-server ``` ## Overlay Network overlay 網絡驅動程序在多個 Docker 守護進程主機之間創建一個分布式網絡(跨docker主機通信),所有連接該自定義網絡的容器自動相互暴露所有端口。 ### 相關操作命令 * #### 將 Docker 守護進程初始化為 swarm manager `docker swarm init` * #### 創建overlay網絡 `docker network create --driver=overlay --attachable [net-name]` * #### 加入overlay網絡 `docker run --network [net-name] [CONTAINER]` * #### 加入集群 `docker swarm join [OPTIONS] HOST:PORT` * #### 離開集群 `docker swarm leave` >更多命令,請參考docker官方文檔 [https://docs.docker.com/engine/reference/commandline/swarm/](https://docs.docker.com/engine/reference/commandline/swarm/) ### 實例演示:容器之間通過自定義Overlay 跨主機通訊 為了演示跨主機,我這里克隆一個虛擬機,現兩個虛擬機的信息如下 | 虛擬機 | IP | 安裝 | | --- | --- | --- | | ubuntu | 192.168.147.128 | redis | | ubuntu_copy1 | 192.168.147.130 | mysql | 1. 在128上初始化集群 ``` docker swarm init ``` ![](https://box.kancloud.cn/c31515e98e5432fcb07322197be5d298_1234x156.png) 2. 在128上查看當前節點 ``` docker node ls ``` ![](https://box.kancloud.cn/ecaea24e3a4de87aa5d647cef26de83e_1137x66.png) 3. 在128上創建overlay network ``` docker network create --driver=overlay --attachable test-overlay ``` ![](https://box.kancloud.cn/b6b6490d786bc32febce150e7734104e_916x204.png) 4. 在128上實例redis容器,并加入overlay 網絡 ``` docker run -tid --name redis_overlay --network test-overlay redis:5.0 ``` ![](https://box.kancloud.cn/db4e9fe9e5d664ec8428ebfb5590adaa_1252x121.png) 5. 在130中,加入集群 ``` docker swarm join --token SWMTKN-1-32pd1ytuwho780hrehx8687y4s54g0fvhf4sh8tx8ea1qp9a6g-9foali4ph3tm0xn5vmu0emomd 192.168.147.128:2377 ``` >[warning] 如果不記得token了,可以在128上執行命令 > docker swarm join-token worker 即可顯示加入集群的命令 6. 在130上實例mysql容器,并加入overlay網絡 ``` docker run -tid --name mysql_overlay --network test-overlay -e MYSQL_ROOT_PASSWORD=root mysql:5.6 ``` ![](https://box.kancloud.cn/3ca0331c04af2679254939e8f197a8c9_1277x261.png) 7. 從128中redis容器中測試連接130中的mysql容器 ``` docker exec -it redis_overlay /bin/bash ``` ``` telnet mysql_overlay 3306 ``` ![](https://box.kancloud.cn/07794c5391d388ea9c7583ce0db94443_507x95.png) 到這里,已經說明通過加入overlay網絡,在兩個主機的兩個容器之間可以實現通信了。 >如果容器內telnet命令不存在,在容器內先更新apt,然后安裝telnet即可 ```apt update``` ```apt install telnet``` --- :-: ![](https://box.kancloud.cn/331f659e8e6cddb0d9f182e00e32803f_258x258.jpg) <span style="color: #993366;"><em>***<span style="text-decoration: underline;"><span style="text-decoration: underline;">微信掃一掃,關注&ldquo;python測試開發圈&rdquo;,了解更多測試教程!!</span></span>***</em></span>
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看