1
概 述
2
Docker五種網(wǎng)絡(luò)模式介紹
3
veth-pair技術(shù)
4
Docker DNS實(shí)現(xiàn)
*nat
:PREROUTING ACCEPT [2:168]
:INPUT ACCEPT [2:168]
:OUTPUT ACCEPT [9:620]
:POSTROUTING ACCEPT [17:1091]
:DOCKER_OUTPUT - [0:0]
:DOCKER_POSTROUTING - [0:0]
-A OUTPUT -d 127.0.0.11/32 -j DOCKER_OUTPUT
-A POSTROUTING -d 127.0.0.11/32 -j DOCKER_POSTROUTING
-A DOCKER_OUTPUT -d 127.0.0.11/32 -p tcp -m tcp --dport 53 -j DNAT --to-destination 127.0.0.11:45481
-A DOCKER_OUTPUT -d 127.0.0.11/32 -p udp -m udp --dport 53 -j DNAT --to-destination 127.0.0.11:46340
-A DOCKER_POSTROUTING -s 127.0.0.11/32 -p tcp -m tcp --sport 45481 -j SNAT --to-source :53
-A DOCKER_POSTROUTING -s 127.0.0.11/32 -p udp -m udp --sport 46340 -j SNAT --to-source :53 COMMIT
# Completed on Fri Mar 25 13:15:36 2022
composetest_web_1
[root@VM-12-7-centos composetest]#
11 hours ago Up 10 hours 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp
composetest_redis_1
af90b8c4350f composetest_web "flask run"
[root@VM-12-7-centos composetest]# netstat -pantu
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address
Foreign Address
State
PID/Program name
[root@VM-12-7-centos composetest]# nc -nvz 127.0.0.11 53 Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 127.0.0.11:53.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.
[root@VM-12-7-centos composetest]# lsof -o 3917|egrep UDP|TCP
[root@VM-12-7-centos composetest]# docker inspect composetest_redis_1|grep Pid "Pid": 17693,
"PidMode": "",
"PidsLimit": null,
[root@VM-12-7-centos composetest]# ll /proc/17693/ns/net
lrwxrwxrwx 1 polkitd mysql 0 Mar 25 10:07 /proc/17693/ns/net -> net:[4026532226]
[root@VM-12-7-centos composetest]# ln -s /proc/17662/ns/net /var/run/netns/composetest_web_1 [root@VM-12-7-centos composetest]#
[root@VM-12-7-centos composetest]# ll /var/run/netns/composetest_web_1
lrwxrwxrwx 1 root root 18 Mar 25 04:52 /var/run/netns/composetest_web_1 -> /proc/17662/ns/net
[root@VM-12-7-centos ~]# ip netns exec composetest_web_1 ping baidu.com PING baidu.com (220.181.38.251) 56(84) bytes of data.
64 bytes from 220.181.38.251 (220.181.38.251): icmp_seq=1 ttl=48 time=27.5 ms
64 bytes from 220.181.38.251 (220.181.38.251): icmp_seq=2 ttl=48 time=27.4 ms
^C
--- baidu.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms rtt min/avg/max/mdev = 27.441/27.495/27.549/0.054 ms
/ code # ping web
PING web (172.18.0.2): 56 data bytes
64 bytes from 172.18.0.2: seq=0 ttl=64 time=0.031 ms 64 bytes from 172.18.0.2: seq=1 ttl=64 time=0.059 ms
^C
--- web ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 0.031/0.045/0.059 ms
/code #
/ code # ping redis
PING redis (172.18.0.3): 56 data bytes
64 bytes from 172.18.0.3: seq=0 ttl=64 time=0.071 ms 64 bytes from 172.18.0.3: seq=1 ttl=64 time=0.073 ms 64 bytes from 172.18.0.3: seq=2 ttl=64 time=0.076 ms
^C
--- redis ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 0.071/0.073/0.076 ms
/code #
[root@VM-12-7-centos ~]# cat /etc/*release CentOS Linux release 7.6.1810 (Core)
[root@VM-12-7-centos ~]# docker --version
Docker version 20.10.14, build a224086
[root@VM-12-7-centos composetest]# pwd
/root/composetest
[root@VM-12-7-centos composetest]#
[root@VM-12-7-centos composetest]# cat requirements.txt flask
redis
[root@VM-12-7-centos composetest]#
[root@VM-12-7-centos composetest]# cat Dockerfile FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP app.py
ENV FLASK_RUN_HOST 0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt COPY . .
CMD ["flask", "run"]
[root@VM-12-7-centos composetest]# [root@VM-12-7-centos composetest]#
[root@VM-12-7-centos composetest]# cat docker-compose.yml # yaml 配置
version: 3 services:
web:
build: . ports:
- "5000:5000"
redis:
image: "redis:alpine"
[root@VM-12-7-centos composetest]# [root@VM-12-7-centos composetest]# [root@VM-12-7-centos composetest]# cat app.py import time
import redis
from flask import Flask
app = Flask( name )
cache = redis.Redis(host=redis, port=6379)
def get_hit_count(): retries = 5 while True:
try:
return cache.incr(hits)
except redis.exceptions.ConnectionError as exc: if retries == 0:
raise exc retries -= 1 time.sleep(0.5)
@app.route(/) def hello():
count = get_hit_count()
return Hello World! I have been seen {} times. .format(count) [root@VM-12-7-centos composetest]#
[root@VM-12-7-centos composetest]#docker-compose up -d
END
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/129499.html
摘要:而本文主要針對(duì)容器間的網(wǎng)絡(luò)通信方法進(jìn)行討論。而同屬于用戶自定義的容器之間自動(dòng)將所有端口暴露,方便容器間進(jìn)行無(wú)障礙的通信,而不會(huì)遭受到外界的意外訪問(wèn)。幾天前,為了解決日常在本地進(jìn)行日常工作和開發(fā)測(cè)試之間的矛盾,利用docker在Windows系統(tǒng)中搭建了基于Linux的測(cè)試環(huán)境:借助Docker,在win10下編碼,一鍵在Linux下測(cè)試。在這邊文章里主要介紹了如何在本地通過(guò)docker構(gòu)建與...
摘要:對(duì)比如果鏡像在本地不存在,將會(huì)嘗試?yán)ミ@個(gè)鏡像。鏈接到外部的容器,甚至并非管理的容器。僅可以指定內(nèi)部端口為參數(shù)卷掛載路徑設(shè)置。使用來(lái)暴露服務(wù)的容器給其他的。要查看服務(wù)可用的環(huán)境變量,運(yùn)行項(xiàng)目 對(duì)比 image vs build image:如果鏡像在本地不存在,Compose 將會(huì)嘗試?yán)ミ@個(gè)鏡像。 build:指定 Dockerfile 所在文件夾的路徑。 Compose 將會(huì)利用...
摘要:原因是這樣的想要部署一個(gè)平臺(tái),就在朋友的推薦下選擇了這個(gè)現(xiàn)成的項(xiàng)目該項(xiàng)目分為服務(wù)端客戶端以及數(shù)據(jù)庫(kù)在嘗試直接部署的時(shí)候發(fā)現(xiàn)需要裝一大堆的環(huán)境,啊,特別的麻煩,之前簡(jiǎn)單的使用過(guò),就在想能不能用免環(huán)境直接部署呢于是就有了這次的嘗試多容器通信該 原因是這樣的 想要部署一個(gè)mocker平臺(tái),就在朋友的推薦下選擇了api-mocker這個(gè)現(xiàn)成的項(xiàng)目 該項(xiàng)目分為服務(wù)端node、客戶端vue、以及...
摘要:原因是這樣的想要部署一個(gè)平臺(tái),就在朋友的推薦下選擇了這個(gè)現(xiàn)成的項(xiàng)目該項(xiàng)目分為服務(wù)端客戶端以及數(shù)據(jù)庫(kù)在嘗試直接部署的時(shí)候發(fā)現(xiàn)需要裝一大堆的環(huán)境,啊,特別的麻煩,之前簡(jiǎn)單的使用過(guò),就在想能不能用免環(huán)境直接部署呢于是就有了這次的嘗試多容器通信該 原因是這樣的 想要部署一個(gè)mocker平臺(tái),就在朋友的推薦下選擇了api-mocker這個(gè)現(xiàn)成的項(xiàng)目 該項(xiàng)目分為服務(wù)端node、客戶端vue、以及...
摘要:原因是這樣的想要部署一個(gè)平臺(tái),就在朋友的推薦下選擇了這個(gè)現(xiàn)成的項(xiàng)目該項(xiàng)目分為服務(wù)端客戶端以及數(shù)據(jù)庫(kù)在嘗試直接部署的時(shí)候發(fā)現(xiàn)需要裝一大堆的環(huán)境,啊,特別的麻煩,之前簡(jiǎn)單的使用過(guò),就在想能不能用免環(huán)境直接部署呢于是就有了這次的嘗試多容器通信該 原因是這樣的 想要部署一個(gè)mocker平臺(tái),就在朋友的推薦下選擇了api-mocker這個(gè)現(xiàn)成的項(xiàng)目 該項(xiàng)目分為服務(wù)端node、客戶端vue、以及...
摘要:在本文中,我們繼續(xù)延續(xù)前文,從前文給出的一份示例配置清單開始,詳解一下服務(wù)器的各種配置指令的作用和用法。是否允許同時(shí)接收多個(gè)網(wǎng)絡(luò)連接指令格式該指令默認(rèn)為狀態(tài),意指每個(gè)一次只能接收一個(gè)新到達(dá)的網(wǎng)絡(luò)連接。 showImg(https://segmentfault.com/img/remote/1460000015385948); 概述 在前面《Nginx服務(wù)器開箱體驗(yàn)》 一文中我們從開箱...
閱讀 1353·2023-01-11 13:20
閱讀 1699·2023-01-11 13:20
閱讀 1211·2023-01-11 13:20
閱讀 1902·2023-01-11 13:20
閱讀 4161·2023-01-11 13:20
閱讀 2748·2023-01-11 13:20
閱讀 1397·2023-01-11 13:20
閱讀 3664·2023-01-11 13:20