Docker 網路基礎配置一(埠對映)
大量的網際網路應用服務包含多個服務元件,這往往需要多個容器之間通過網路通訊進行相互配合。Docker 目前提供了對映容器埠到宿主主機和容器互聯機制來為容器提供網路服務。
Docker的四種網路模式
1. host模式 :
docker run 使用 --net=host指定
docker使用的網路實際上和宿主機一樣
2. container模式:
使用 --net=container:container_id/container_name
多個容器使用共同的網路,看到的ip是一樣的。
3. none 模式
使用 --net=none指定
這種模式下,不會配置任何網路。
4. bridge模式
使用 --net=bridge指定,預設模式,不會指定
此模式會為每個容器分配一個獨立的network namespace
埠對映實現訪問容器
外部網路訪問容器 :外部的使用者要訪問容器,先將容器的ip對映出去,然後客戶利用宿主機的ip來訪問
[root@30c1fec5df6a /]# [root@langzi01 ~]# docker run -d -P training/webapp python app.py
[root@langzi01 ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4986deb00c32 training/webapp "python app.py" 2 minutes ago Up 2 minutes 0.0.0.0:32768->5000/tcp musing_haibt
通過docker ps檢視發現 32768 埠對映到了容器的 5000 埠。此時訪問主機的 32768 埠就可以訪問容器內 web 應用提供的內容
通過docker logs檢視容器資訊
[root@langzi01 ~]# docker logs -f musing_haibt
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
對映所有介面的地址:
使用 hostPort:containerPort 格式將本地的 5000 埠對映到容器的 5000 埠,可以執行如下命令:
[root@langzi01 ~]# docker run -d -p 5000:5000 training/webapp python app.py
ab2c757be1b4515b37859704cc5ca67af00190d8a067093dba2fecb92f65ae3d
[root@langzi01 ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ab2c757be1b4 training/webapp "python app.py" 5 seconds ago Up 3 seconds 0.0.0.0:5000->5000/tcp eloquent_kilby
此時預設會繫結本地所有介面上的所有地址(如果主機有多個 IP,那麼每個 IP 的 5000 埠都對映到了容器的 5000 埠)。
多次使用 -p 引數可以繫結多個埠:
[root@langzi01 ~]# docker run -d -p 5001:5001 -p 3000:8000 training/webapp python app.py
8081850a70fd7e76fb34a8e205ef9f315ffb0f5028eded4630b7763c3a4c2816
[root@langzi01 ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8081850a70fd training/webapp "python app.py" 4 seconds ago Up 3 seconds 5000/tcp, 0.0.0.0:5001->5001/tcp, 0.0.0.0:3000->8000/tcp jovial_ptolemy
對映指定地址到指定的埠:
可以使用 ip:hostPort:containerPort 格式的引數指定對映使用一個特定地址,比如 localhost 地址 127.0.0.1:
[root@langzi01 ~]# docker run -d -p 127.0.0.1:5002:5002 training/webapp python app.py
7f9341d8a64ca56cae2c7d47fbaf7327542e0ca0ef1b4b215b683b9e005c5d46
[root@langzi01 ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7f9341d8a64c training/webapp "python app.py" About a minute ago Up About a minute 5000/tcp, 127.0.0.1:5002->5002/tcp trusting_euler
對映指定地址到指定的任意埠:
使用 ip::containerPort 格式的引數可以繫結 localhost 的任意埠到容器的 5000 埠,本地主機會自動分配一個埠:
[root@langzi01 ~]# docker run -d -p 127.0.0.1::5000 training/webapp python app.py
ba45085521a63529bb353fa3e926eb7d9b38f7df8b3332740b163f61d7627620
檢視對映埠配置
[root@langzi01 ~]# docker port peaceful_franklin 5000
127.0.0.1:32769
[root@langzi01 ~]# docker port jovial_ptolemy 8000
0.0.0.0:3000
Docker 給已經建立並執行的容器新增埠對映
建立時沒有新增埠對映,通過commit提交一個執行中的容器,重新執行映象新增埠
[root@langzi01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
06f21b81bf7c centos "/bin/bash" 2 days ago Up 2 days data03
127de2f57a5b centos "/bin/bash" 2 days ago Up 2 days data02
2f5f9417b073 centos "/bin/bash" 2 days ago Up 2 days data01
#提交一個容器
[root@langzi01 ~]# docker commit -m "centos_with_httpd" -a "frankie" 2f5 centos_with_httpd:frankie
sha256:a78cc36474c845328fc44daf6bb3f1cc489a5c2a908061b07757d5990bdd0c77
[root@langzi01 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_with_httpd frankie a78cc36474c8 9 seconds ago 312 MB
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
67f671d4bf82 centos_with_httpd:frankie "bash" 9 seconds ago Up 8 seconds 0.0.0.0:5123->8000/tcp lucid_almeida
[root@langzi01 ~]# docker run -itd -p 5123:80 centos_with_httpd:frankie bash
67f671d4bf82472a9e70f30d59fe161fb085a55005a95c6c1d9e4edb9bdff345
[root@langzi01 ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
67f671d4bf82 centos_with_httpd:frankie "bash" 9 seconds ago Up 8 seconds 0.0.0.0:5123->80/tcp lucid_almeida
[root@langzi01 ~]# docker exec -it 15d bash
[root@15dee97e8218 /]# /usr/sbin/httpd
[root@15dee97e8218 /]# curl 'localhost/hello.html'
Hello,World
在主機裡面訪問
[root@langzi01 ~]# curl '172.17.0.1:5123/hello.html'
Hello,World
檢視容器的名字
[root@langzi01 ~]# docker inspect -f "{{ .Name }}" 15dee97e8218
/eager_agnesi
相關文章
- docker:網路基礎配置Docker
- Docker 埠對映防火牆規則配置Docker防火牆
- 【Docker】Docker基礎-埠對映與容器互聯Docker
- Docker-埠對映Docker
- Nginx埠對映配置Nginx
- Docker執行nginx映象及docker網路埠對映DockerNginx
- 修改 Docker 容器對映的埠Docker
- 修改docker容器的埠對映Docker
- 如何修改Docker容器埠對映?Docker
- 埠對映,內網網站對映外網訪問,透過80埠對映實現內網網站
- Docker 網路基礎介紹Docker
- Docker(33)- 如何修改 docker 容器的埠對映Docker
- Docker 埠對映問題解決Docker
- Docker 如何動態修改容器埠對映Docker
- Docker容器內部埠對映到外部宿主機埠Docker
- 網路基礎(一)
- Docker Image 的釋出和 Container 埠對映DockerAI
- Linux網路基礎設施配置Linux
- Linux埠對映是什麼?如何進行埠對映?Linux
- WSL docker打通容器間通訊和追加埠對映Docker
- VMware Fusion 埠對映
- 網路基礎
- Docker容器內部埠對映到外部宿主機埠的方法小結Docker
- 如何修改正在執行的docker映象的埠對映?Docker
- Docker映象的構建以及資料卷和埠對映Docker
- Docker 橋接模式下埠對映會繞過防火牆Docker橋接模式防火牆
- iptables 實現埠對映
- Docker介紹下載安裝、製作映象及容器、做目錄對映、做埠對映Docker
- 網路基礎概念
- 埠對映(一鍵免費)- 軟體篇
- Docker 埠對映 telnet 始終不通(看完原因想自抽)Docker
- 常用集中內網穿透&埠對映軟體工具內網穿透
- 如何將csf ip 埠對映
- NAT(PAT)與埠對映(轉)
- Docker 基礎 : 網路配置Docker
- 18作 網路基礎
- HTTP之網路基礎HTTP
- 網路基礎總結