docker之端口映射使用及說明
1.端口映射實(shí)現(xiàn)容器訪問
從外部訪問容器應(yīng)用
當(dāng)啟動(dòng)容器的時(shí)候,如果不指定對(duì)應(yīng)參數(shù),在容器外部是無(wú)法通過網(wǎng)絡(luò)來訪問容器內(nèi)的網(wǎng)絡(luò)應(yīng)用和服務(wù)的。
當(dāng)容器中運(yùn)行一些網(wǎng)絡(luò)應(yīng)用時(shí),要讓外部訪問這些應(yīng)用時(shí),可以通過-p或-P參數(shù)來指定端口映射。
1.1.1 當(dāng)使用-P參數(shù)時(shí)
Docker會(huì)隨機(jī)分配一個(gè)49000~49900的端口到內(nèi)部容器開放的網(wǎng)絡(luò)端口:
docker run -d -P training/webapp python app.py
[root@k8s-master ~]# docker run -d -P training/webapp python app.py 009be6617d347d4d1d12980a369a377f67cd4f792cb6e74301f05a17db9e95ac [root@k8s-master ~]# docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 009be6617d34 training/webapp "python app.py" 7 seconds ago Up 5 seconds 0.0.0.0:32769->5000/tcp, :::32769->5000/tcp cranky_jang #本地分配的32769端口映射到docker的5000端口
1.1.2 當(dāng)使用-p時(shí),需要指定映射端口
docker run -d -p 5000:5000 training/webapp python app.py
#先刪除之前-P 映射的容器 [root@k8s-master ~]# docker stop 009be6617d34 && docker rm 009be6617d34 009be6617d34 009be6617d34 [root@k8s-master ~]# docker run -d -p 5000:5000 training/webapp python app.py 7e4f478a7772417701aade64b358e957090dc1d804b637607596ec46b01db645
1.1.3 還可以映射到指定地址的指定端口
docker run -d -p 127.0.0.1:5001:5001 training/webapp python app.py
[root@k8s-master ~]# docker run -d -p 127.0.0.1:5001:5001 training/webapp python app.py 88b77309c1b0c4516d16aafdeb8b524e9c9f878a9a08acefc71dcb704cd4fc8a
1.1.4 還可以映射到指定地址的任意端口
docker run -d -p 127.0.0.1::5000 training/webapp python app.py
[root@k8s-master ~]# docker run -d -p 127.0.0.1::5000 training/webapp python app.py 3e457d7f58de0c6ca911c09dd9f62bb742437180f7cdca4e37481ed3c87050fa
1.1.5 還可以指定udp端口
docker run -d -p 127.0.0.1:5001:5001/udp training/webapp python app.py
[root@k8s-master ~]# docker run -d -p 127.0.0.1:5001:5001/udp training/webapp python app.py 1e3f7c65fd966906efeb955a6e6d8bedc1f6c2cd1910322542659b6ea27b7a2b
1.1.6 查看映射端口配置
docker port $container-id
[root@k8s-master ~]# for i in `docker ps -aq` > do > docker port $i > done 5001/udp -> 127.0.0.1:5001 5000/tcp -> 127.0.0.1:32768 5001/tcp -> 127.0.0.1:5001 5000/tcp -> 0.0.0.0:5000 5000/tcp -> [::]:5000
2.互聯(lián)網(wǎng)機(jī)制實(shí)現(xiàn)便攜互訪
容器的互聯(lián)(linking)是一種讓多個(gè)容器中的應(yīng)用進(jìn)行快速交互的方式。
它會(huì)在源和接受容器之間創(chuàng)建連接關(guān)系,接受容器可以通過容器名稱快速訪問到源容器,而不用指定具體的IP地址。
2.1 自定義容器名稱
用--name $container_name選項(xiàng)來對(duì)容器命名
docker run -d -P --name web training/webapp python app.py
[root@k8s-master ~]# docker run -d -P --name web training/webapp python app.py 516c331f26bdb1300b187f9436790e12749bc168b8fb0b9642fc5a7359852a3a
2.2 容器互聯(lián)
我們?cè)趧?chuàng)建一個(gè)數(shù)據(jù)庫(kù)容器
docker run -d --name db training/postgres
[root@k8s-master ~]# docker run -d --name db training/postgres Unable to find image 'training/postgres:latest' locally latest: Pulling from training/postgres [DEPRECATION NOTICE] Docker Image Format v1, and Docker Image manifest version 2, schema 1 support will be removed in an upcoming release. Suggest the author of docker.io/training/postgres:latest to upgrade the image to the OCI Format, or Docker Image manifest v2, schema 2. More information at https://docs.docker.com/go/deprecated-image-specs/ a3ed95caeb02: Pull complete 6e71c809542e: Pull complete 2978d9af87ba: Pull complete e1bca35b062f: Pull complete 500b6decf741: Pull complete 74b14ef2151f: Pull complete 7afd5ed3826e: Pull complete 3c69bb244f5e: Pull complete d86f9ec5aedf: Pull complete 010fabf20157: Pull complete Digest: sha256:a945dc6dcfbc8d009c3d972931608344b76c2870ce796da00a827bd50791907e Status: Downloaded newer image for training/postgres:latest 794093c32161c164ae537ab8c72207d6e349670725d07304cc0b0d26b5500d29
刪除之前創(chuàng)建的web容器
docker rm -f web
[root@k8s-master ~]# docker rm -f web web
然后再重新創(chuàng)建個(gè)web容器,將它連接到db容器
docker run -d -P --name web --link db:db training/webapp python app.py
[root@k8s-master ~]# docker run -d -P --name web --link db:db training/webapp python app.py 76ba721e0203b527bb81c03316a6d39e722933724389080f8555aa51439b61fa
此時(shí),db容器和web容器建立了互聯(lián)關(guān)系
--link 參數(shù)格式為--link name:alias,其中name是要鏈接的容器的名稱,alias是別名。
不過現(xiàn)在不建議用--link,就不過多介紹了
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Mac?M1?Docker如何運(yùn)行nacos2.0.3(若依微服務(wù)框架)
這篇文章主要介紹了Mac?M1?Docker如何運(yùn)行nacos2.0.3(若依微服務(wù)框架),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
一次centos Docker網(wǎng)橋模式無(wú)法訪問宿主機(jī)Redis服務(wù)的故障排除經(jīng)歷
這篇文章主要給大家介紹了關(guān)于一次centos Docker網(wǎng)橋模式無(wú)法訪問宿主機(jī)Redis服務(wù)的故障排除經(jīng)歷,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Docker具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
Docker 容器內(nèi)存監(jiān)控原理及應(yīng)用
這篇文章主要介紹了Docker 容器內(nèi)存監(jiān)控原理及應(yīng)用的相關(guān)資料,需要的朋友可以參考下2016-10-10
Docker部署PostgreSQL數(shù)據(jù)庫(kù)及操作方法詳解
這篇文章主要介紹了Docker部署PostgreSQL數(shù)據(jù)庫(kù)及操作方法的相關(guān)資料,包括拉取鏡像、運(yùn)行容器、設(shè)置參數(shù)以及查看運(yùn)行狀態(tài),通過這些步驟讀者可以輕松在本地搭建并運(yùn)行PostgreSQL數(shù)據(jù)庫(kù),需要的朋友可以參考下2025-04-04

