1. 程式人生 > >Docker網路管理機制例項解析+建立自己Docker網路

Docker網路管理機制例項解析+建立自己Docker網路

例項解析Docker網路管理機制(bridge network,overlay network),介紹Docker預設的網路方式,並建立自己的網路橋接方式,將開發的容器新增至自己新建的網路,提高Docker網路安全和通訊.

1.給自己的docker (Dcoker1.12GA)容器起個名稱

給docker名稱的好處是:
- 容易記
- 可以通過特殊命令,使得名稱可以在容器和容器之間使用

1.1.檢視docker已經存在的映象

wxl@wxl-pc:~$ docker images

這裡寫圖片描述

1.2.選擇training/webapp這個映象,通過–name命令設定名稱

[email protected]
-pc:~$ docker run -d -P --name wangxiaoleiweb training/webapp python app.py

最後一行可以看到wangxiaoleiweb已經命名成功

這裡寫圖片描述

可以使用docker inspect通過剛剛設定的名稱來檢視wangxiaoleiweb

wxl@wxl-pc:~$ docker inspect wangxiaoleiweb

這裡寫圖片描述

1.3.刪除docker名稱,docker的名稱都是唯一的,即一但使用了就不能在另一個映象使用該名稱,可以刪除後重新命名.(只刪除名字,映象不會被刪除)

#停止執行中的映象
wxl@wxl-pc:~$ docker stop wangxiaoleiweb #刪除自定義的名稱 docker rm wangxiaoleiweb web wxl@wxl-pc:~$ docker rm web web wxl@wxl-pc:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 50dae1ee8677 2 weeks ago 196.7
MB hello-world latest c54a2cc56cbb 4 weeks ago 1.848 kB training/webapp latest 6fae60ef3446 14 months ago 348.8 MB training/sinatra latest 49d952a36c58 2 years ago 447 MB

2.預設的容器的網路

2.1.Docker通過網路驅動(network driver),預設網路驅動分別是橋接(bridge)和覆蓋(overlay)兩種.

#檢視Docker預設的三種網路
[email protected]:~$ docker network ls

NETWORK ID          NAME                DRIVER              SCOPE
7f6b9cbd3eec        bridge              bridge              local               
0cb106f52e66        host                host                local               
cfb50541161b        none                null                local

為一個容器橋接網路

wxl@wxl-pc:~$ docker run -itd --name=networktest ubuntu:14.04

2a433c9467d3d35474daa544dcac665ecc4b71b202b82d0bd59049f7d52e397f
wxl@wxl-pc:~$ docker network inspect bridge
[
    {
        "Name": "bridge",
        "Id": "7f6b9cbd3eece7301d196363b5250c44fd0b275f3c3d38a952af2ad8b2fd38c2",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Containers": {
            "2a433c9467d3d35474daa544dcac665ecc4b71b202b82d0bd59049f7d52e397f": {
                "Name": "networktest",
                "EndpointID": "d0b94ec934b390784faa5ad8946e9ba6031afe4467889e1f7fe0eda5d79deac1",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]

可以看到通過檢查網路可以看到容器的IP地址,名稱等資訊.

2.2.從網路中刪除某個容器,可以通過該容器的網路名稱,容器名稱,id來作為刪除的標示,但是通過網路名稱是方便的,如networktest

wxl@wxl-pc:~$ docker network disconnect bridge networktest

再用docker network inspect bridge會發現已經沒有networktest資訊了

3.自定義容器的網路

容器的網路(network)是用來隔離容器和容器之間或者網路與網路之間的方法,所以,所以我們通過建立網路來隔離容器.其中,內建的bridge網路是無法刪除的.

3.1.建立網路

Docker Engine 支援兩種網路橋接網路(bridge network)和覆蓋網路(overlay network),橋接的網路侷限於單個主機執行的Docker Engine,而覆蓋網路可以包含多個主機.

[email protected]-pc:~$ docker network create -d bridge my-bridge-network

3bfde1ba62a75e38236517f4f0731f48c281cec107e976039773be134968c453

其中,-d指使用Dockerbridge(橋接)方式的網路,如果沒有加預設的也是橋接網路.
通過docker network ls來檢視已經建立好的網路

這裡寫圖片描述

3.2.將一個容器新增至新建立的網路中

#這裡建立了一個db的容器(若本地沒有該映象會自動拉取)

wxl@wxl-pc:~$ docker run -d --network=my-bridge-network --name db training/postgres

通過inspect命令檢視已經新增至網路的db容器

wxl@wxl-pc:~$ docker inspect --format='{{json .NetworkSettings.Networks}}'  db


{"my-bridge-network":{"IPAMConfig":null,"Links":null,"Aliases":["237e0f7060b6"],"NetworkID":"3bfde1ba62a75e38236517f4f0731f48c281cec107e976039773be134968c453","EndpointID":"33516faca38c0f76bd2c6ebb6e8c2574c62e242d5a0c10b77c49e14b2549f3e5","Gateway":"172.18.0.1","IPAddress":"172.18.0.2","IPPrefixLen":16,"IPv6Gateway":"","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"MacAddress":"02:42:ac:12:00:02"}}

3.3.通過ping的方式驗證網路連通性,將兩個容器(db容器和web容器)從不同的網路,放置同一個網路.

3.3.1.把training/webapp容器命名為web,方便後續操作

[email protected]:~$ docker run -d --name web training/webapp python app.py


8f12cfaaedda2b348bef437fa2eeed19ef69ad07cd98aa72e0c2113710413e6f

3.3.2.檢視web容器的ip

[email protected]:~$ docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' web


172.17.0.2

3.3.3.進入db容器並且嘗試ping一下web容器,發現是ping不通,ctrl+c終止ping,如下圖

#進入db容器
wxl@wxl-pc:~$ docker exec -it db bash
#首次嘗試ping web容器
root@237e0f7060b6:/# ping 172.17.0.2

PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.
^C
--- 172.17.0.2 ping statistics ---
24 packets transmitted, 0 received, 100% packet loss, time 23183ms

root@237e0f7060b6:/# exit

這裡寫圖片描述

3.3.4.現在,將web容器新增至db容器的網路(即my-bridge-network),然後在ping,即可ping通

wxl@wxl-pc:~$ docker network connect my-bridge-network web
#再次進入db容器
[email protected]:~$ docker exec -it db bash
#ping web容器,發現已經可以ping通
[email protected]237e0f7060b6:/# ping web                                                  
PING web (172.18.0.3) 56(84) bytes of data.
64 bytes from web.my-bridge-network (172.18.0.3): icmp_seq=1 ttl=64 time=0.097 ms
64 bytes from web.my-bridge-network (172.18.0.3): icmp_seq=2 ttl=64 time=0.110 ms
64 bytes from web.my-bridge-network (172.18.0.3): icmp_seq=3 ttl=64 time=0.109 ms
^C
--- web ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.097/0.105/0.110/0.010 ms

這裡寫圖片描述

可見,不同的容器在不同的網路是可以起到隔離作用的,所以,自定義一個網路可以保證容器和容器之間通訊安全.

相關推薦

Docker網路管理機制例項解析+建立自己Docker網路

例項解析Docker網路管理機制(bridge network,overlay network),介紹Docker預設的網路方式,並建立自己的網路橋接方式,將開發的容器新增至自己新建的網路,提高Docker網路安全和通訊. 1.給自己的docker (Dcok

三、Java虛擬機器自動記憶體管理機制、物件建立及記憶體分配

  1、物件是如何建立: 步驟:    (1)、虛擬機器遇到new <類名>的指令---->根據new的引數是否在常量池中定位一個類的符號引用    (2)、檢測該符號引用代表的類是否已經被載入、解析、和初始化。(如果沒有則

java深入理解---非同步回撥機制例項解析

一、什麼是回撥 回撥,回撥。要先有呼叫,才有呼叫者和被呼叫者之間的回撥。所以在百度百科中是這樣的: 軟體模組之間總是存在著一定的介面,從呼叫方式上,可以把他們分為三類:同步呼叫、回撥和非同步呼叫。 回撥是一種特殊的呼叫,至於三種方式也有點不同。 1、同步回撥,

OpenStack的網路管理指南(4)——使用Openstack網路

實現OpenStack的網路安全組,您可以直接利用neutron security-group-rule-create來建立安全組規則。下面的示例允許ping和ssh訪問你的虛擬機器。 $ neutron security-group-rule-create --protocol icmp --direct

網路拓撲例項之交換機處於同一網路作為DHCP中繼與伺服器(八)

組網圖形      DHCP中繼簡介 DHCP中繼用於在DHCP伺服器和客戶端之間轉發DHCP報文。當DHCP伺服器與客戶端不在同一個網段時,需要配置DHCP中繼。對於DHCP客戶端來說,DHCP中繼就是DHCP伺服器;對於DHCP伺服器來說,DHCP中繼就是DHCP客戶端。 DHCP中繼適用於使用者閘道

Docker之搭建2048遊戲,四種網路模式的學習,容器和管理,資料卷的管理,用Dockerfile建立映象

1.映象管理 物理機上: 軟體包: docker-engine-17.03.1.ce-1.el7.centos.x86_64.rpm docker-engine-selinux-17.03.1.ce-1.el7.centos.noarch.rpm [

docker入門實戰(理論+實踐)系列---docker網路配置和資料卷管理

docker可以存在自身的網路配置和資料卷管理方式,首先docker容器作為一個獨立的執行單元,可以有獨立的IP地址、埠等資訊。同時,nginx是無狀態的,當docker重啟之後,容器會恢復到初始化映象狀態(即docker是無狀態的),資料卷的存在實現了宿主機和docker容器之間的資料共享,本篇文章以n

Android包管理機制(五)APK是如何被解析

本文首發於微信公眾號「劉望舒」 原文連結:APK是如何被解析的? 相關文章 包管理機制系列 前言 在本系列的前面文章中,我介紹了PackageInstaller的初始化和安裝APK過程、PMS處理APK的安裝和PMS的建立過程,這些文章中經常會涉及到一個類,那就是PackageParser,它

byob--建立自己的僵屍網路

BYOB是一個開源專案,為安全研究人員和開發人員提供構建和執行基本僵屍網路的框架,以加深他們對每年感染數百萬裝置併產生現代僵屍網路的複雜惡意軟體的理解,以提高他們的能力,制定應對這些威脅的對策。 它旨在允許開發人員輕鬆實現自己的程式碼並新增新功能,而無需從頭開始編寫RAT(遠端管理工具)或 C2(命令和控制

Docker網路管理(容器的四種網路模式)

下面,我們來學習Docker的網路管理。 Docker 在啟動時會建立一個虛擬網橋 docker0,預設地址為 172.17.0.1/16,容器啟動後都會被橋接到 docker0 上,並自動分配到一個 IP 地址 . docker0預設地址 網橋 容器橋接

Okhttp解析(四)網路連線的建立

Okhttp作為一款底層網路訪問框架,它和Volley等上層網路框架不一樣的地方在於,Okhttp自己實現了與服務端的TCP連線,並在此連線上根據HTTP協議的規範與服務端進行HTTP協議及內容的請求和響應。Okhttp將請求內容通過修正,填充等方式封裝成符合HTTP規範的HTTP請求內

分享知識-快樂自己:反射機制Demo解析

Java-Reflect專題 基本反射簡介: 1):JAVA反射機制是在執行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個物件能夠呼叫它的任意方法和屬性;這種動態獲取資訊以及動態呼叫物件方法的功能稱為java語言的反射機制。 2):JAVA反射(放射)機制:"程式執行時,允許改變

【Android自助餐】Handler訊息機制完全解析(二)MessageQueue的佇列管理

Android自助餐Handler訊息機制完全解析(二)MessageQueue的佇列管理 Android自助餐Handler訊息機制完全解析二MessageQueue的佇列管理 新增到訊息佇列enqueueMessage 從佇

BP神經網路演算法的深度解析和工程例項搭建

首先宣告,這篇文章不是神經網路的掃盲文,如果只想知道神經網路的概念那筆者還是推薦找一些深入淺出的文章來看。但是如果需要自己實際搭建和使用一個神經網路,同時具備一定的數學功底的話,那這篇文章就是為了深入的剖析神經網路演算法的工作過程和模型而寫的。這裡筆者把整個神經網路的工作過程

Docker介紹,安裝docker,映象管理,通過容器建立映象,使用模板建立映象

Docker介紹 官網 www.docker.com github https://github.com/docker/docker.github.io 開源的容器引擎,可以讓開發者打包應用以及依賴的庫,然後釋出到任何流行的linux發行版上,移植很方便 由g

使用python建立自己的第一個神經網路模型吧!

神經網路(NN),也被稱為人工神經網路(ANN),是機器學習領域中學習演算法的子集,大體上借鑑了生物神經網路的概念。目前,神經網路在計算機視覺、自然語言處理等領域應用廣泛。德國資深機器學習專家Andrey Bulezyuk說到,“神經網路正在徹底改變機器學習,因為它們能夠有效

建立自己的ERC20加密貨幣(可管理、增發、兌換、凍結等高階功能的代幣)

(注:本文是在原文的基礎上,根據個人的理解,修改部分內容並添加了一些註釋) pragma solidity ^0.4.16; interface tokenRecipient { function receiveApproval(address _from, uint

Docker:Docker思想&解決問題&Docker優勢&Docker基本概念&Docker安裝&基本設定&常用命令&網路管理&資料卷&構建自定義映象&多容器管理

什麼是Docker? Docker是一個用來裝應用的容器,就好比杯子用來裝水,筆筒用來裝筆,書包用來裝書一樣,你可以把hello world放到Docker裡,你可以把網站放到Docker裡,你可以把你想的到的任何程式放到Docker裡。 Docker的思想

006.Docker網路管理

一 docker網路模式 Docker使用Linux的Namespaces技術來進行資源隔離,如PID Namespace隔離程序,Mount Namespace隔離檔案系統,Network Namespace隔離網路等。 一個Network Namespace提供了一份獨立的網路環境,包括網絡

docker建立自己的容器並提交至映象中心

前面我們使用docker快速搭建了nginx+php開發環境,並部署了自己的網站。 當然小夥伴們可以在上面裝自己需要的其他東西,比如mysql,或者php的其他擴充套件。 但是我們應該如何將該容器持久化,或者部署到更多機器上。 這裡我只講解將自己的容器製作