Docker 從入門到精通(三)一 網路配置
1.建立一對虛擬介面
2.在主Docker主機內部給它一個名稱,比如veth65f9,繫結它到docker0或者Docker使用的任何網橋上
3.讓其他的介面進入新的容器(已經提供了lo介面),在容器的獨立和網路介面名稱空間內,重新命名它為更漂亮的名字eth0,名稱不要和其他的物理介面衝突。
4.在網橋的網路地址訪問內給容器的eth0一個新的IP地址,設定它的預設路由為Docker主機在網橋上擁有的IP地址。
這些步驟結束後,容器將立即擁有一個eth0(虛擬)網路卡,並會發現它自己可以和其他的容器以及網際網路通訊。
你可以使用 –net= 這個選項來執行 docker run 啟動一個容器,這個選項有一下可選引數。
–net=bridge— 預設選項,用網橋的方式來連線docker容器。 –net=host— docker跳過配置容器的獨立網路棧。 –net=container:NAME_or_ID— 告訴docker讓這個新建的容器使用已有容器的網路配置。 –net=none— 告訴docker為新建的容器建立一個網路棧,但不對這個網路棧進行任何配置,所以只能訪問本地網路,沒有外網。
這是 docker 預設的網路模式,Docker 後臺程式會建立 docker0,一個虛擬的乙太網橋,用於自動轉發與之連線的任意網路介面間的資料包。在bridge模式下,連在同一網橋上的容器可以相互通訊。
[root@sta2 docker]# docker run -it -P --name mynginx nginx #為容器做埠對映
使用橋接模式時,docker會建立一個docker0 的網橋,並將這個網路裝置加入到docker0網橋中,可以透過brctl show命令檢視。
[root@sta2 ~]# brctl show bridge name bridge id STP enabled interfaces docker0 8000.3e2d35d38bae no vethab6aea2
從docker0子網中分配一個IP給容器使用,並設定docker0的IP地址為容器的預設閘道器。
[root@sta2 docker]# docker ps -l
[root@sta2 docker]# docker port mynginx 443/tcp -> 0.0.0.0:32774 80/tcp -> 0.0.0.0:32775
當使用 -P 標記時,Docker 會隨機對映一個 49000~49900 的埠到內部容器開放的網路埠,nginx 對映的埠固定為32774 和 32775。
[root@sta2 docker]# docker logs -f mynginx
使用 -p(小寫的)則可以指定要對映的埠,並且,在一個指定埠上只可以繫結一個容器,-p 標記可以多次使用來繫結多個埠。支援的格式有 ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort 。
# docker run -d -p 5000:5000 --name mydocker nginx
此時預設會繫結本地所有介面上的所有地址。
可以使用 ip:hostPort:containerPort 格式指定對映使用一個特定地址,對映到指定地址的指定埠
# docker run -d -p 127.0.0.1:5000:5000 --name mydocker nginx
使用 ip::containerPort 繫結 localhost 的任意埠到容器的 5000 埠,本地主機會自動分配一個埠。對映到指定地址的任意埠:
# docker run -d -p 127.0.0.1::5000 --name mydocker nginx
docker 做埠對映時會生成 iptables 規則,埠對映前的 iptables 規則:
埠對映後的 iptables 規則:
此模式使用主機的網路
# docker run -it --name feiyu-host --net=host busybox sh
這種模式下與其他容器共享一個網路
# docker run -it --name feiyu-con --net=container:feiyu busybox sh
這種模式只能訪問本地網路,沒有外網。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2944493/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Docker 從入門到精通(一)基本操作Docker
- Docker從入門到精通(一)——初識Docker
- Docker從入門到精通(八)——Docker ComposeDocker
- Docker從入門到精通(五)——DockerfileDocker
- Docker從入門到精通(三)——概念與執行流程Docker
- 網路篇 - http協議從入門到精通HTTP協議
- RabbitMQ 從入門到精通 (一)MQ
- ActiveMQ從入門到精通(一)MQ
- Docker從入門到精通(六)——容器通訊Docker
- MyBatis從入門到精通(一):MyBatis入門MyBatis
- 一小時神經網路從入門到精通(放棄)神經網路
- Prometheus從入門到精通:一、部署Prometheus
- Docker 從入門到精通(二) 搭建本地倉庫Docker
- Docker從入門到精通(四)——常用命令Docker
- Docker從入門到精通(七)——容器資料共享Docker
- Flask框架從入門到精通之路由(三)Flask框架路由
- Promise從入門到精通Promise
- LESS從入門到精通
- Git 從入門到精通Git
- SAP從入門到精通
- Python從入門到精通Python
- Thymeleaf從入門到精通
- Eclipse從入門到精通Eclipse
- vim從入門到精通
- Shell從入門到精通
- Vue學習從入門到精通(一)Vue
- 【OpenGL從入門到精通(三)】第一個點的理論
- Docker容器使用 (入門到精通)Docker
- Kaizen如何從入門到精通?AI
- Linux從入門到精通(二)Linux
- ElasticSearch 7.8.1 從入門到精通Elasticsearch
- ActiveMQ從入門到精通(二)MQ
- Celery框架從入門到精通框架
- Flask框架從入門到精通之引數配置(二)Flask框架
- Flask框架從入門到精通之初識(一)Flask框架
- Docker 從門到精通(四)一 資料卷的使用Docker
- 從入門到精通,Java學習路線導航Java
- php從入門到精通的學習路線分享PHP