近年來(lái),Docker技術(shù)的應(yīng)用越來(lái)越廣泛,然而在使用過(guò)程中,不少用戶(hù)反映Docker占用TCP6的問(wèn)題。那么,為什么Docker會(huì)占用TCP6呢?
$ sudo netstat -nlpt | grep docker tcp6 0 0 :::2376 :::* LISTEN 20757/dockerd tcp6 0 0 :::2377 :::* LISTEN 20851/dockerd tcp6 0 0 :::7946 :::* LISTEN 20757/dockerd tcp6 0 0 :::4789 :::* LISTEN 20884/dockerd ...
上面的命令可以列出所有在運(yùn)行的Docker進(jìn)程及其監(jiān)聽(tīng)的TCP端口。由此可知,Docker占用TCP6是因?yàn)樗旧硎腔赥CP/IP協(xié)議的應(yīng)用。而TCP6是一個(gè)IPv6協(xié)議,在IPv6環(huán)境下TCP6才會(huì)被使用,而在IPv4環(huán)境下,TCP協(xié)議則會(huì)被使用。因此,如果你的操作系統(tǒng)是IPv4環(huán)境,Docker就會(huì)占用TCP端口而不是TCP6端口。
當(dāng)然,如果你想解決Docker占用TCP6的問(wèn)題,也可以在啟動(dòng)Docker服務(wù)時(shí)指定監(jiān)聽(tīng)的IP地址和端口。比如可以在Docker的環(huán)境變量中設(shè)置如下參數(shù):
$ export DOCKER_HOST=tcp://0.0.0.0:2375
這里的0.0.0.0 表示Docker服務(wù)要監(jiān)聽(tīng)所有的IP地址,而2375則是指定監(jiān)聽(tīng)的端口號(hào)。這樣設(shè)置之后,Docker就會(huì)占用TCP端口而不再占用TCP6端口了。
總之,Docker占用TCP6的問(wèn)題不是個(gè)大問(wèn)題,只需了解其中的原因,并做好對(duì)應(yīng)的解決措施即可。