docker之端口映射使用及說(shuō)明
1.端口映射實(shí)現(xiàn)容器訪問(wèn)
從外部訪問(wèn)容器應(yīng)用
當(dāng)啟動(dòng)容器的時(shí)候,如果不指定對(duì)應(yīng)參數(shù),在容器外部是無(wú)法通過(guò)網(wǎng)絡(luò)來(lái)訪問(wèn)容器內(nèi)的網(wǎng)絡(luò)應(yīng)用和服務(wù)的。
當(dāng)容器中運(yùn)行一些網(wǎng)絡(luò)應(yīng)用時(shí),要讓外部訪問(wèn)這些應(yīng)用時(shí),可以通過(guò)-p或-P參數(shù)來(lái)指定端口映射。
1.1.1 當(dāng)使用-P參數(shù)時(shí)
Docker會(huì)隨機(jī)分配一個(gè)49000~49900的端口到內(nèi)部容器開(kā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)系,接受容器可以通過(guò)容器名稱快速訪問(wèn)到源容器,而不用指定具體的IP地址。
2.1 自定義容器名稱
用--name $container_name選項(xiàng)來(lái)對(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是別名。
不過(guò)現(xiàn)在不建議用--link,就不過(guò)多介紹了
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
docker報(bào)錯(cuò)x509:certificate has expired or
這篇文章主要介紹了docker報(bào)錯(cuò)x509:certificate has expired or is not yet valid問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03
Docker運(yùn)行模式之-d和-it的區(qū)別與選擇詳細(xì)對(duì)比
這篇文章主要介紹了Docker運(yùn)行模式之-d和-it的區(qū)別與選擇詳細(xì)對(duì)比的相關(guān)資料,Docker中-d用于后臺(tái)運(yùn)行服務(wù),不阻塞終端;-it提供交互終端,支持用戶操作,需要的朋友可以參考下2025-05-05
Centos Docker1.12 遠(yuǎn)程Rest api訪問(wèn)的配置方法
這篇文章主要介紹了Centos Docker1.12 遠(yuǎn)程Rest api訪問(wèn)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-01-01
Docker容器輸入漢字觸發(fā)自動(dòng)補(bǔ)全問(wèn)題
Linux系統(tǒng)中,當(dāng)終端出現(xiàn)中文亂碼通常是由于缺少中文字符集和字體,安裝中文字體和設(shè)置合適的字符集zh_CN.utf8,可以有效解決這一問(wèn)題,首先,通過(guò)查看系統(tǒng)支持的字符集了解是否支持中文,然后安裝相應(yīng)字符集,其次,查看并設(shè)置當(dāng)前系統(tǒng)字符集2024-10-10
Docker部署Zookeeper分布式協(xié)調(diào)器的實(shí)現(xiàn)
Zookeeper是分布式數(shù)據(jù)一致性的關(guān)鍵技術(shù),支持單機(jī)和集群部署,集群部署需奇數(shù)節(jié)點(diǎn),,通過(guò)Docker部署方便,支持配置文件映射和動(dòng)態(tài)角色變更,感興趣的可以了解一下2024-11-11
docker安裝prometheus和grafana的詳細(xì)過(guò)程
prometheus通過(guò)各種Exporter采集到監(jiān)控?cái)?shù)據(jù),然后存儲(chǔ)進(jìn)prometheus中,以供查詢展示,這篇文章主要介紹了docker安裝prometheus和grafana,需要的朋友可以參考下2023-02-02
Centos7安裝docker、docker-compose實(shí)踐過(guò)程
這篇文章主要介紹了Centos7安裝docker、docker-compose實(shí)踐過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-07-07
Docker與docker-compose中volume參數(shù)的使用方式
文章介紹了Docker中的數(shù)據(jù)卷Volume的概念及其在宿主機(jī)和容器之間的數(shù)據(jù)共享和持久化,它詳細(xì)說(shuō)明了兩種數(shù)據(jù)掛載方式:通過(guò)宿主機(jī)絕對(duì)路徑掛載和通過(guò)卷標(biāo)映射掛載,包括匿名掛載和具名掛載,同時(shí),文章還展示了如何通過(guò)docker命令查看數(shù)據(jù)卷的宿主機(jī)目錄2024-11-11

