一般在运行容器时,我们都会通过参数 -p(使用大写的-P参数则会随机选择宿主机的一个端口进行映射)来指定宿主机和容器端口的映射,例如

docker run -it -d --name [container-name] -p : [image-name]

这里是将容器内的80端口映射到宿主机的8088端口

参数说明

  • -d 表示后台运行容器
  • -t 为docker分配一个伪终端并绑定到容器的标准输入上
  • -i 是让容器的标准输入保持打开状态
  • -p 指定映射端口

在运行容器时指定映射端口运行后,如果想要添加新的端口映射,可以使用以下两种方式:

方式一:将现有的容器打包成镜像,然后在使用新的镜像运行容器时重新指定要映射的端口

大概过程如下:

先停止现有容器

docker stop container-name

将容器commit成为一个镜像

docker commit container-name  new-image-name

用新镜像运行容器

docker run -it -d --name container-name -p p1:p1 -p p2:p2 new-image-name

方式二:修改要端口映射的容器的配置文件

查看容器信息

docker ps -a

查看容器的端口映射情况,在容器外执行:

docker port 容器ID 或者 docker port 容器名称

查找要修改容器的容器Id

docker inspect f244 |grep Id

进到/var/lib/docker/containers 目录下找到与 Id 相同的目录,修改 hostconfig.json 和 config.v2.json文件

若该容器还在运行,先停掉

docker stop 容器ID

停掉docker服务

systemctl stop docker

修改hostconfig.json如下,添加端口绑定"9003/tcp": [{"HostIp": "","HostPort": "9003"}],表示绑定端口9003

修改config.v2.json在ExposedPorts中加上要暴露的端口,即9003

改完之后保存启动docker

systemctl start docker

之后可以再次查看添加的端口是否已映射绑定上

附注:

1、将容器打包成镜像命令:

docker commit -a "king西阳" -m "a new image" [容器名称或id] [打包的镜像名称]:[标签]

常用OPTIONS说明:

  • -a :提交的镜像作者
  • -c :使用Dockerfile指令来创建镜像
  • -m :提交时的说明文字
  • -p :在commit时,将容器暂停

2、查看宿主机端口是否和容器内端口映射成功,在容器外执行

netstat -an |grep 宿主机的映射端口

如果有进程存在则表示有映射

docker容器添加对外映射端口的更多相关文章

  1. 对已有的docker容器增加新的端口映射

    一般在运行容器时,我们都会通过参数 -p(使用大写的-P参数则会随机选择宿主机的一个端口进行映射)来指定宿主机和容器端口的映射,例如 docker run -it -d --name [contain ...

  2. arukas 樱花免费docker容器获取IP和端口

    arukas 樱花免费docker容器,可以安装linux系统,但是每隔一段时间会重启,重启以后IP地址和映射到公网的端口都会变,获取IP和端口,我研究了很久终于找到了C#获取IP和端口的办法,用来搭 ...

  3. Docker(34)- 如何修改 docker 容器的目录映射

    如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 问题背景 docker run ...

  4. 给debian的docker容器添加crontab定时任务

    现在大部分的docke镜像是基于debian # cat /etc/issue Debian GNU/Linux 9 \n \l Docker容器是不支持后台服务的,像systemctl servic ...

  5. .net core Docker 容器添加ffmpeg 获取视频信息和截图

    最近在处理上传视频,需要获取视频信息和截图,这里就需要用到ffmpeg; 由于我的项目是在docker compose中运行调试,所以ffmpeg也需要在docker中能调用: 网上找到的方法在Doc ...

  6. docker已运行容器添加或修改端口映射

    # 不推荐方法:将原来的容器提交成镜像,然后利用新的建立的镜像重新建立一个带有端口映射的容器# 推荐方法:## 查看id 就是 容器的 hash_of_the_container 数值 docker ...

  7. nginx~为docker容器添加负载均衡

    Nginx作为当前最流行的负载均衡和反向代理服务器,它运行在linux平台,一般的.net网站,为了实现分流与负载,需要在多个应用服务器的IIS上部署,通过一些工具实现代码的同步,然后再nginx上去 ...

  8. Docker容器 暴露多个端口

    1.创建容器是指定 docker run -p <host_port1>:<container_port1> -p <host_port2>:<contain ...

  9. docker 容器不能访问宿主端口原因

    因为数据包到了eth0的 上的iptables 表,首先匹配PREROUTING 链,这个拒绝了来自docker0的流量,从而跳到input链,input没有放开服务端口,所以容器访问宿主端口失败;但 ...

随机推荐

  1. jq ajax传递json对象到服务端及contentType的用法

    目录 0.一般情况下,通过键值对的方式将参数传递到服务端 1.ajax 传递复杂json对象到服务端 2.content-Type 对asp.net mvc项目的重要性 0.一般情况下,通过键值对的方 ...

  2. springboot-vue前后端分离session过期重新登录

    springboot-vue前后端分离session过期重新登录 简单回顾cookie和session cookie和session都是回话管理的方式 Cookie cookie是浏览器端存储信息的一 ...

  3. Java8 日期 API 业务使用

    最近在做账单结算业务,需要根据客户选择的结算方式来推算下一次结算日期以及该次结算日期段. 推算日期这样的业务直男君以前就写过,只不过使用的是熟悉的 java.util.date 和 java.util ...

  4. JPA多条件复杂SQL动态分页查询

    概述 ORM映射为我们带来便利的同时,也失去了较大灵活性,如果SQL较复杂,要进行动态查询,那必定是一件头疼的事情(也可能是lz还没发现好的方法),记录下自己用的三种复杂查询方式. 环境 spring ...

  5. CF - 1106 E Lunar New Year and Red Envelopes DP

    题目传送门 题解: 首先要处理出每个时间点会选择哪一个线段. 对于这个问题,可以用multiset去维护信息. 当时间线开始的时候,往mutiset里面插入这个信息,当时间线结束的时候,删除这个信息. ...

  6. CF1003D Coins and Queries 贪心

    Coins and Queries time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  7. CF937B Vile Grasshoppers

    Vile Grasshoppers time limit per test 1 second memory limit per test 256 megabytes input standard in ...

  8. 【Offer】[30] 【包含min函数的栈】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数.在该栈中,调用min.push及pop的时间复杂度都是0(1). ...

  9. .NET Core 微信小程序退款——(统一退款)

    继上一篇".NET Core 微信小程序支付——(统一下单)后",本文将实现统一退款功能,能支付就应该能退款嘛,一般涉及到钱的东西都会比较敏感,所以在设计退款流程时一定要严谨,不能 ...

  10. Appium+python自动化(三十七)- 士兵突击许三多 - 多个appium服务启动,多个设备启动,多进程并发启动设备-并发测试 - 下(超详解)

    简介 接着上一篇继续看一下如何并发测试以及并发测试的过程中,可能遇到的问题,在这里宏哥把宏哥遇到的和小伙伴或者童鞋们,一起分享一下. Appium端口检测 问题思考 经过前面学习,我们已经能够使用py ...