当前位置:   article > 正文

docker之端口映射_docker端口映射

docker端口映射

1.端口映射实现容器访问

        从外部访问容器应用

        当启动容器的时候,如果不指定对应参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的。

        当容器中运行一些网络应用时,要让外部访问这些应用时,可以通过-p或-P参数来指定端口映射。

1.1.1 当使用-P参数时,Docker会随机分配一个49000~49900的端口到内部容器开放的网络端口:

docker run -d -P training/webapp python app.py

  1. [root@k8s-master ~]# docker run -d -P training/webapp python app.py
  2. 009be6617d347d4d1d12980a369a377f67cd4f792cb6e74301f05a17db9e95ac
  3. [root@k8s-master ~]# docker ps -l
  4. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  5. 009be6617d34 training/webapp "python app.py" 7 seconds ago Up 5 seconds 0.0.0.0:32769->5000/tcp, :::32769->5000/tcp cranky_jang
  6. #本地分配的32769端口映射到docker的5000端口

1.1.2 当使用-p时,需要指定映射端口

docker run -d -p 5000:5000 training/webapp python app.py

  1. #先删除之前-P 映射的容器
  2. [root@k8s-master ~]# docker stop 009be6617d34 && docker rm 009be6617d34
  3. 009be6617d34
  4. 009be6617d34
  5. [root@k8s-master ~]# docker run -d -p 5000:5000 training/webapp python app.py
  6. 7e4f478a7772417701aade64b358e957090dc1d804b637607596ec46b01db645

1.1.3 还可以映射到指定地址的指定端口

docker run -d -p 127.0.0.1:5001:5001 training/webapp python app.py

  1. [root@k8s-master ~]# docker run -d -p 127.0.0.1:5001:5001 training/webapp python app.py
  2. 88b77309c1b0c4516d16aafdeb8b524e9c9f878a9a08acefc71dcb704cd4fc8a

1.1.4 还可以映射到指定地址的任意端口

docker run -d -p 127.0.0.1::5000 training/webapp python app.py

  1. [root@k8s-master ~]# docker run -d -p 127.0.0.1::5000 training/webapp python app.py
  2. 3e457d7f58de0c6ca911c09dd9f62bb742437180f7cdca4e37481ed3c87050fa

1.1.5 还可以指定udp端口

docker run -d -p 127.0.0.1:5001:5001/udp training/webapp python app.py

  1. [root@k8s-master ~]# docker run -d -p 127.0.0.1:5001:5001/udp training/webapp python app.py
  2. 1e3f7c65fd966906efeb955a6e6d8bedc1f6c2cd1910322542659b6ea27b7a2b

 1.1.6 查看映射端口配置

docker port $container-id 

  1. [root@k8s-master ~]# for i in `docker ps -aq`
  2. > do
  3. > docker port $i
  4. > done
  5. 5001/udp -> 127.0.0.1:5001
  6. 5000/tcp -> 127.0.0.1:32768
  7. 5001/tcp -> 127.0.0.1:5001
  8. 5000/tcp -> 0.0.0.0:5000
  9. 5000/tcp -> [::]:5000

 2.互联网机制实现便携互访

容器的互联(linking)是一种让多个容器中的应用进行快速交互的方式。它会在源和接受容器之间创建连接关系,接受容器可以通过容器名称快速访问到源容器,而不用指定具体的IP地址。

2.1 自定义容器名称

用--name $container_name选项来对容器命名

docker run -d -P --name web training/webapp python app.py

  1. [root@k8s-master ~]# docker run -d -P --name web training/webapp python app.py
  2. 516c331f26bdb1300b187f9436790e12749bc168b8fb0b9642fc5a7359852a3a

2.2 容器互联

我们在创建一个数据库容器

docker run -d --name db training/postgres

  1. [root@k8s-master ~]# docker run -d --name db training/postgres
  2. Unable to find image 'training/postgres:latest' locally
  3. latest: Pulling from training/postgres
  4. [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/
  5. a3ed95caeb02: Pull complete
  6. 6e71c809542e: Pull complete
  7. 2978d9af87ba: Pull complete
  8. e1bca35b062f: Pull complete
  9. 500b6decf741: Pull complete
  10. 74b14ef2151f: Pull complete
  11. 7afd5ed3826e: Pull complete
  12. 3c69bb244f5e: Pull complete
  13. d86f9ec5aedf: Pull complete
  14. 010fabf20157: Pull complete
  15. Digest: sha256:a945dc6dcfbc8d009c3d972931608344b76c2870ce796da00a827bd50791907e
  16. Status: Downloaded newer image for training/postgres:latest
  17. 794093c32161c164ae537ab8c72207d6e349670725d07304cc0b0d26b5500d29

删除之前创建的web容器

docker rm -f web

  1. [root@k8s-master ~]# docker rm -f web
  2. web

然后再重新创建个web容器,将它连接到db容器

docker run -d -P --name web --link db:db training/webapp python app.py

  1. [root@k8s-master ~]# docker run -d -P --name web --link db:db training/webapp python app.py
  2. 76ba721e0203b527bb81c03316a6d39e722933724389080f8555aa51439b61fa

此时,db容器和web容器建立了互联关系

--link 参数格式为--link name:alias,其中name是要链接的容器的名称,alias是别名。

不过现在不建议用--link,就不过多介绍了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/87697
推荐阅读
相关标签
  

闽ICP备14008679号