Docker容器绑定外部IP和端口
Docker允许通过外部访问容器或者容器之间互联的方式来提供网络服务。
以下操作通过myfirstapp镜像模拟,如何制作myfirstapp镜像请点击此处。
1、外部访问容器
容器启动之后,容器中可以运行一些网络应用,通过-p或-P参数来指定端口映射。
a、用-P(大写)标记时,docker会随机选择一个端口映射到容器内部开放的网络端口上。
$ docker run -d -P myfirstapp python app.py
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dbcf5d3290ba myfirstapp "python app.py" seconds ago Up seconds 0.0.0.0:->/tcp quizzical_engelbart
此时访问本机的32770端口就可以访问到容器内web应用提供的界面。
$ curl http://192.168.1.160:32770/
<h3>Hello HELLO!</h3><b>Hostname:</b> dbcf5d3290ba<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>

也可以使用docker logs来查看应用的信息
$ docker logs dbcf5d3290ba
* Running on http://0.0.0.0:80/ (Press CTRL+C to quit)
192.168.1.5 - - [/Mar/ ::] "GET / HTTP/1.1" -
192.168.1.5 - - [/Mar/ ::] "GET /favicon.ico HTTP/1.1" -
192.168.1.160 - - [/Mar/ ::] "GET / HTTP/1.1" -
192.168.1.5 - - [/Mar/ ::] "GET / HTTP/1.1" -
b、使用-p(小写)标记时则可以指定要映射的端口,并且在一个指定端口上只可以绑定一个容器,支持的格式有:
ip:hostport:containerport
ip::containerport
hostport:containerport $ docker run -d -p : myfirstapp python app.py
$ docker run -d -p : myfirstapp python app.py
$ curl http://192.168.1.160:4000/
<h3>Hello HELLO!</h3><b>Hostname:</b> f43ed2810353<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>
$ curl http://192.168.1.160:4001/
<h3>Hello HELLO!</h3><b>Hostname:</b> f43ed2810353<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>
可以看到本地4000端口已经被映射,换一个端口4001也被映射。
docker默认会映射本地所有的地址。现在我们来尝试一下映射到指定地址的指定端口
$ docker run -d -p 127.0.0.1:: myfirstapp python app.py
$ curl http://127.0.0.1:4000/ ##访问通过
$ curl http://localhost:4000/ ##访问通过
$ curl http://192.168.1.160:4000/ ##访问拒绝
curl: () Failed connect to 192.168.1.160:; 拒绝连接
然后要访问容器中的应用只能通过127.0.0.1这个ip访问。
接下来是绑定本机的任意端口到容器的80端口,随机分配一个端口
$ docker run -d -p 127.0.0.1:: myfirstapp python app.py
$ docker ps ##127.0.0.1:->/tcp
$ curl http://127.0.0.1:32770/ ##访问通过
$ curl http://localhost:32770/ ##访问通过
$ curl http://192.168.1.160:32770/ ##访问拒绝
还可以指定通信协议
docker run -d -p :/udp myfirstapp python app.py
2.查看容器绑定和映射的端口及Ip地址
$ docker port 44de1b0b5312(容器ID)
/tcp -> 127.0.0.1:
3.注意事项
a.docker inspect查看容器自己的内部网络和ip地址
$ docker inspect 44de1b0b5312(容器ID)
b.容器启动绑定多IP
$ docker run -d -p : -p : myfirstapp python app.py #容器ID:44e703c1279a
$ docker port 44e703c1279a
/tcp -> 0.0.0.0:
/tcp -> 0.0.0.0:
Docker容器绑定外部IP和端口的更多相关文章
- docker容器配置独立ip
一般安装docker后都会通过端口转发的方式使用网络,比如 “-p 2294:22” 就将2294抓发到22端口来提供sftp服务,这样使用起来没有问题.但端口号很难记忆,如果前边有nginx等抓发工 ...
- 为docker容器设置独立ip
docker 1.12使用新版macvlan设置与宿主机同网段ip ****************************************** 由于开发的一些特殊需求,需要将容器部署在与宿主 ...
- docker容器分配静态IP
最近因为工作要求需要用学习使用docker,最后卡在了网络配置这一块.默认情况下启动容器的时候,docker容器使用的是bridge策略比如: docker run -ti ubuntu:latest ...
- 关于docker容器访问的主机的端口问题
docker容器需要访问主机的,不能使用127.0.0.1,127.0.0.1访问的是docker容器不是主机: docker容器创建时会分配一个主机ip,可在主机使用命令 docker inspec ...
- 为Docker容器配置固定IP
当docker以桥接的方式启动容器时,容器内部的IP是经过DHCP获取的,例如:172.17.0.8/32,且每重启依次IP都会发生变动.某些特殊的情况下,需要容器内有自己固定的一个内部IP.我的实现 ...
- 如何获取 docker 容器(container)的 ip 地址
1. 进入容器内部后 cat /etc/hosts 会显示自己以及(– link)软连接的容器IP 2.使用命令 docker inspect --format '{{ .NetworkSetting ...
- 如何获取 docker 容器(container)的 ip 地址(转)
1. 进入容器内部后 cat /etc/hosts 会显示自己以及(– link)软连接的容器IP 2.使用命令 docker inspect --format '{{ .NetworkSetting ...
- 为Docker容器设置静态IP
此文已由作者袁欢授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 创建docker容器 docker run -it --name=yh -h yh --net=none de ...
- 解决docker容器启动时候无法映射端口的问题
当我们停止防火墙后,docker容器启动映射端口可能无法映射端口,这个时候需要重建docker0网桥. 详细的错误是这样的: docker: Error response from daemon: d ...
随机推荐
- vue 总结
VUE总结 双花括号{{}} 01.index.hmlt main.js 内存的数据可以更改 v-model 双休数据绑定 代码: <!DOCTYPE html> <html lan ...
- django配合mongo使用
环境 django 1.11.16 mongoengine 0.16.0 需要安装mongoengine库 pip install mongoengine 1.在配置文件中 # settings.py ...
- Delphi 域名解析为IP地址
花生壳:1.LJSZForm-Lable1-Caption改成 “IP地址或域名:”2.LJSZForm-BitBtn1Click-注释掉--else if IsIP(Trim(IPEdit.Text ...
- 返回头部js
$('.backTop, .backCss').click(function() { var id=$(this).attr('class'); $('html, body').animate({sc ...
- java利用反射获取对象前后修改的内容(用于日志记录)
import java.beans.PropertyDescriptor; import java.lang.reflect.Field; import java.lang.reflect.Metho ...
- ABP框架系列之二十八:(Handling-Exceptions-异常处理)
Introduction This document is for ASP.NET MVC and Web API. If you're interested in ASP.NET Core, see ...
- sql 百万级或千万级数据分页处理
笔记来源 https://blog.csdn.net/zhenyuanjie/article/details/7778102
- cropper,图片剪辑上传工具的使用
cropper工具是一个功能强,兼容性好的一个图片裁剪和上传工具 GitHub地址:https://github.com/kesixin/Head_Cut_PC <div class=" ...
- 修改VS 中的代码编辑颜色-Vs主题修改
有个性的开发人员总是喜欢使用属于的主题和配色方案,它们可以看出开发者的个性,更改它们可以缓解审美疲劳,总之选择一个适合自己的解决方案可能极大的增加自己的编码舒适度. 1. 配色方案的选择和使用 手动修 ...
- 关不掉的小姐姐程序python tkinter实现 学习---打包教程
首先,我们先准备两个.py文件,还要图片文件 代码//是我自己手写的,copy时记得删掉,不然有可能错误,比如中英文啥的 当然 一些语法的无问题就百度,都能给你答案 第一个.py ...