Docker 实现容器端口绑定本地端口

今天遇到启动镜像之后,通过HTTP请求的的方式访问不了的一个小问题,下面来记录并分享下解决办法:

常用的docker启动命令和解决办法如下所示:

一、启动docker

众所周知,启动容器的命令如下:

docker run 镜像名称

二、绑定容器端口与本地端口

由于启动容器之后,本地无法直接访问容器内的端口,故而需要将本地的端口与容器的端口做一个绑定操作,从而可以通过本地端口去访问容器,设置如下:

docker run -p 本地端口:容器端口 镜像名称

然后就可以通过本地的浏览器通过本地的端口访问容器了。

三、容器在后台运行,加-d参数,命令如下:

docker run -d -p 本地端口:容器端口 镜像名称

四、查看镜像列表,命令如下

docker image ls
或
docker images

五、查看正在运行的容器,命令如下

docker ps

补充:docker 给运行的容器映射本地端口

1.提交运行中的容器为一个镜像 (这样不会丢失在容器的各种操作)

docker commit tang   tang1
### tang(运行容器名称)  tang1(生成镜像名称)

2.运行镜像并添加端口

docker run -d -it -p 8000:80 tang1:latest /bin/bash
### 小p是自定义端口  latest 是镜像的标签(最好写上专业点)

补充:docker加载volume并绑定端口

要求

已获取docker image,现在想要创建container,加载本地目录到container目录,还有映射本地和container之间的端口。

具体举例如下:

image ID: 884e0fc83dfe

设置container name: test

将本地的9000端口映射到container的80端口

加载数据卷volume:将本地的~/Desktop/test 映射到container的/test目录

实现

docker run -it --name test -v ~/Desktop/test:/test -p 9000:80 884e0fc83dfe /bin/bash
# 进入新建container
docker start test
docker attach test

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • Docker 动态修改容器端口映射的方法

    前言:Docker端口映射往往是Docker Run命令时通过-p将容器内部端口映射到宿主机的指定端口上,一般来说容器的端口所对应的端口是提前确定需要映射的.但是有些情况下不得不需要临时映射端口,例如Docker中运行着MySQL容器,默认端口是不开放的.那么有什么办法可以让运行中的容器暴露指定的端口呢?客官请往下看---> 方法一:更改Docker配置文件(有风险) 通过修改Docker的配置文件来达到我们的目的,一般来说需要修改以下的文件config.v2.json和hostconfig.j

  • Docker动态给容器Container暴露端口操作

    查看Container的IP地址 docker inspect <container name or id>| grep IPAddress 查看Container的映射的端口 docker port <container name or id> eg. docker port d8dac7399647 docker port hfq-jedi-zxf-eden 用iptables查看容器映射情况 iptables -t nat -nvL iptables -t nat -nvL

  • Docker 通过端口来连接一个容器的实现

    Docker容器的连接 1.网络端口映射 我们创建一个python应用的容器 # docker run -d -P training/webapp python app.py 我们使用 -P 参数创建一个容器,使用 docker ps 来看到端口5000绑定主机端口32768 我们也可以使用 -p 标识来指定容器端口绑定到主机端口. 两种方式的区别是: -P :是容器内部端口随机映射到主机的高端口. -p : 是容器内部端口绑定到指定的主机端口. ------------------------

  • Docker多个容器不能有相同端口号的处理方案

    问题背景 在docker里用同一份镜像创建4个容器,网络选择bridge模式,A服务在四个容器中都使用了同一个端口号(6000):为了减少对外暴露的端口数,另外使用了nginx对这4个服务实例做代理,4个服务实例分属4个upstream,使用了类似/service1./service2的路径来访问4个实例. 此时从本地访问任一服务,则会报502错误,百思不得其解. connect() failed (111: Connection refused) while connecting to ups

  • 运行中的docker容器端口映射如何修改详解

    前言 在docker run创建并运行容器的时候,可以通过-p指定端口映射规则.但是,我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改.当docker start运行容器后并没有提供一个-p选项或设置,让你修改指定端口映射规则.那么这种情况我们该怎么处理呢?今天Docker君教你如何修改运行中的docker容器的端口映射? 方法一:删除原有容器,重新建新容器 这个解决方案最为简单,把原来的容器删掉,重新建一个.当然这次不要忘记加上端口映射. 优缺点:优点是简单快捷,在测试环境使用较多.缺

  • docker容器无法访问宿主机端口的解决

    最近在工作时遇到一个问题,docker容器无法访问宿主机的redis,telent6379端口不通. 经排查发现,该服务器启用了防火墙,防火墙把6379的端口的访问授权给docker0网卡访问即可. 操作如下: firewall-cmd --permanent --zone=trusted --change-interface=docker0 firewall-cmd --reload 补充知识:docker 启动mysql 容器出错Ports are not available: listen

  • 完美解决Windows10下无法对docker容器进行端口访问的操作

    解决Windows10下无法对docker容器进行端口访问(端口映射的问题) 在Windows10系统服务器中安装了docker和docker-compose 并尝试在其中运行Nginx服务,映射也做好 问题:在主机的浏览器中,打开localhost:port无法访问对应的Web服务. 问题解析 原因:docker是运行在Linux上的,在Windows中运行docker,实际上还是在Windows下先安装了一个Linux环境,然后在这个系统中运行的docker. 也就是说,服务中使用的loca

  • Docker 实现容器端口绑定本地端口

    今天遇到启动镜像之后,通过HTTP请求的的方式访问不了的一个小问题,下面来记录并分享下解决办法: 常用的docker启动命令和解决办法如下所示: 一.启动docker 众所周知,启动容器的命令如下: docker run 镜像名称 二.绑定容器端口与本地端口 由于启动容器之后,本地无法直接访问容器内的端口,故而需要将本地的端口与容器的端口做一个绑定操作,从而可以通过本地端口去访问容器,设置如下: docker run -p 本地端口:容器端口 镜像名称 然后就可以通过本地的浏览器通过本地的端口访

  • SSH端口转发,本地端口转发,远程端口转发,动态端口转发详解

    第一部分 SSH端口转发概述 当你在咖啡馆享受免费 WiFi 的时候,有没有想到可能有人正在窃取你的密码及隐私信息?当你发现实验室的防火墙阻止了你的网络应用端口,是不是有苦难言?来看看 SSH 的端口转发功能能给我们带来什么好处吧! SSH端口转发概述 让我们先来了解一下端口转发的概念吧.我们知道,SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据.但是,SSH 还同时提供了一个非常有用的功能,这就是端口转发. 它能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自

  • Docker 网络之端口绑定的方法

    外部访问容器 容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射. -P 标记时 Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口. -p 标记时 则可以指定要映射的端口,并且,在一个指定端口上只可以绑定一个容器.支持的格式有 ip:hostPort:containerPort ip::containerPort hostPort:containerPort 映射所有接口地址 使用 hostPort:conta

  • 对已有的docker容器增加新的端口映射问题(两种方式)

    一般在运行容器时,我们都会通过参数 -p(使用大写的-P参数则会随机选择宿主机的一个端口进行映射)来指定宿主机和容器端口的映射,例如 docker run -it -d --name [container-name] -p 8088:80 [image-name] 这里是将容器内的80端口到宿主机的8088端口 在运行容器时指定映射端口运行后,如果想要添加新的端口映射,可以使用以下两种方式: 方式一:将现有的容器打包成镜像,然后在使用新的镜像运行容器时重新指定要映射的端口 #1.停止现有容器 d

  • docker容器启动后添加端口映射

    概要 网上有许多人在查找关于容器启动后能否进行端口映射的问题.我曾经也问过度娘,很遗憾我没找到.本文就这个问题给出一个解决方法,旨在抛砖引玉.本文的思路是使用iptables的端口转发,这也是docker端口映射内部的实现机制,只不过我是显示地写出来罢了,为的就是让查找这个问题的人对docker的端口映射有一个直观的了解. 结论:容器启动后是可以添加端口映射的,但不建议手工添加,最好使用docker提供的功能. 步骤 创建两个容器并进行了端口映射,结果如图所示: 假如,我start一个容器,其内

  • docker容器的四种端口映射演示分析

    端口映射 把容器的端口映射为宿主机的一个随机或者特定端口,使用外部用户可以访问容器服务 端口映射本是在容器底层做了 iptables 地址转发,出去的流量做 SNAT 源地址转发,进来的流量做 DNAT 目标地址转发. 四种端口映射 随机端口映射:就是把容器的端口随机映射为宿主机的一个端口. 指定端口映射:就是把容器的端口映射为宿主机的指定端口. 指定网卡随机端口映射:就是把容器的端口映射为宿主机的指定网卡的随机端口. 指定网卡端口映射:就是把容器的端口映射为宿主机的指定网卡的指定端口. 端口映

  • 详解Docker修改容器端口映射的方法

    直接解决方法 具体可参考Stack Overflow链接 docker运行时存在守护程序,所以我们需要停止docker内运行的容器和docker服务.具体可参考官网给出的守护程序解释 docker stop 容器id //CentOS下停止docker服务(Ubuntu类似) sudo systemctl stop docker 使用以下命令找到已创建容器的hostconfig.json和config.v2.json配置文件. find / -name hostconfig.json //或co

  • docker修改容器的端口、容器名、映射地址以及注意事项

    目录 1.docker修改容器名 2.docker修改修改端口.映射地址… 2.1.先找容器的ID 2.2.停止docker容器 2.3.停止docker 2.4.查找配置文件 2.5.备份原有文件,如果出现问题后可以还原回去 2.6.修改配置文件(hostconfig.json) 2.6.修改配置文件(config.v2.json) 2.7.启动docker服务 2.8.查看端口是否修改 2.9.启动docker容器 注意!!! 补充:如何利用docker给容器改名呢 总结 1.docker修

  • docker部署golang http服务时端口无法访问的问题解决

    目录 1.背景 1.1 问题描述 1.2 webserver代码 3.Dockerfile文件 2.问题分析 3.解决方案 需要使用docker将golang的httpserver容器化.在这个过程中遇到了一个低级问题,golang http服务时端口无法访问,特此记录解决这个问题的过程. 1.背景 1.1 问题描述 问题描述: docker镜像启动成果之后,通过curl不能访问: [root@hecs-205828 ~]# curl -XGET http://127.0.0.1:8360/he

  • 如何在centos的docker里安装jupyter并开放端口

    目录 安装 jupyter docker 端口映射 安装 jupyter pip install jupyter 编写脚本运行: #!/bin/bash # run_jupyter.sh jupyter notebook --no-browser --ip 0.0.0.0 --port 8888 --allow-root > .log 2>&1 & 可以把这个脚本加入开机运行 docker 端口映射 先把安装好jupyter的容器提交 docker commit -a '作者'

随机推荐