美文网首页
Docker 端口映射

Docker 端口映射

作者: 云师兄 | 来源:发表于2018-06-10 12:46 被阅读70次

本文使用示例基于nginx镜像。首先我们从镜像仓库下载:

docker pull hub.c.163.com/public/nginx:1.2.1

然后启动一个nginx容器:

docker run -d --name nginx-test hub.c.163.com/public/nginx:1.2.1 /bin/sh -c "while true; do sleep 3600;done"

启动名为nginx-test的nginx容器。
执行:docker network ls结果如下:

NETWORK ID          NAME                DRIVER              SCOPE
dce12ad15e67        bridge              bridge              local
be63d9693f78        host                host                local
ec80468730b6        my-bridge           bridge              local
d1c04eee03c8        none                null                local

由之前讲的可以知道我们可以通过docker network inspect dce12ad15e67命令来查看默认连接到bridge上的nginx-test容器的ip地址:

"Containers": {
            {
            "c08c178f374d13bd6f37a5781c067acfc981a3ea3df0ee0689bd4ef54054d3fb": {
                "Name": "ngnix-test",
                "EndpointID": "c5c92988a73b4884b0c3adac1342821c9954fcdb6fefc51a8347560aaa2db4e1",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            }
        }

可知nginx容器的ip地址为172.17.0.2,16是掩码。
由于nginx是一个web服务器,启动nginx后可以直接访问它的ip地址后有一个欢迎页面。我们在宿主机上可以执行curl命令来访问:

[vagrant@localhost ~]$ curl http://172.17.0.2
<html>
<head>
<title>Welcome to nginx!</title>
</head>
<body bgcolor="white" text="black">
<center><h1>Welcome to nginx!</h1></center>
</body>
</html>

现在问题在于只有docker所在环境的宿主机(此处为虚拟机)中才可以访问nginx服务,其默认端口为80端口,而有时候我们想在虚拟机外,如本地环境去访问这个nginx服务,此时就访问不了了。
为了解决这个问题,需要将nginx的80端口映射到本地127.0.0.1的80端口,这样我们在本地就可以访问到nginx服务了。
我们将原理的nginx容器stop和rm掉,重新启动一个nginx容器:

 docker run -d --name nginx-test -p 80:80 hub.c.163.com/public/nginx:1.2.1

其中-p命令就是将容器中的80端口映射到docker环境所在宿主机的80端口,此时我们直接在宿主机上访问127.0.0.1就可以访问到nginx服务了:

[vagrant@localhost ~]$ curl http://127.0.0.1
<html>
<head>
<title>Welcome to nginx!</title>
</head>
<body bgcolor="white" text="black">
<center><h1>Welcome to nginx!</h1></center>
</body>
</html>

此处宿主机是是本地启动的虚拟机,如果部署到云上,那就相当于访问远程虚拟机的ip地址就可以访问到虚拟机上nginx容器的服务。

相关文章

  • Docker-端口映射

    Docker-端口映射 Docker端口映射 docker容器在启动的时候,如果不指定端口映射参数,在容器外部是无...

  • ubuntu

    查看端口 和设置docker端口映射的一些命令 添加端口映射 a, 获取容器ip docker inspect...

  • docker网络模式

    docker网络 使用网络 外部访问容器 -p/P端口映射参数 docker port查看当前端口映射 容器互联 ...

  • 2.2docker网络管理

    一:docker端口映射 1.随机端口映射 2.指定端口映射/指定多端口映射 (推荐) 一个IP :确定一个主机一...

  • Docker端口映射与进入容器内部

    端口映射的指令是什么? docker指令:docker run -p ip:hostPort:containe...

  • 结合Docker运行Spring Cloud微服务的多种方式

    如何通过以下方式在Docker中运行Spring-Cloud MicroService拓扑: Docker端口映射...

  • Docker总结不一样的知识

    1.docker port 可以查看容器的端口映射关系 格式: docker port CONTAINER [PR...

  • docker部署Django时碰到的一些问题

    docker 运行 -p 端口映射失败: 1.pkill docker2. iptables -t nat -F3...

  • docker创建mariadb实例

    安装docker 参考链接 docker创建mariadb数据库记录 -p 端口映射:宿主机3307映射docke...

  • 2019-07-05

    Docker 学习笔记 - 端口映射与容器互联 作者:马燕龙 时间:2017-11-06 分类:Docker 一、...

网友评论

      本文标题:Docker 端口映射

      本文链接:https://www.haomeiwen.com/subject/oepfeftx.html