当前位置:   article > 正文

docker容器启动后修改或添加端口_docker启动容器时候如何指定两个端口

docker启动容器时候如何指定两个端口

docker run创建并运行容器的时候,可以通过-p指定端口映射规则。但是,大家可能也会遇到需要继续添加2个或者3个端口进行映射的问题。

一、通常间接的办法是,保存镜像,再创建一个新的容器,在创建时指定多个端口映射

1)停止docker容器

docker stop container01  

2)commit该docker容器

docker commit container01 new_image:tag

3)用前一步新生成的镜像重新起一个容器,其中1888是服务器的端口,8888是容器的端口

docker run --name container02 -p 1888:8888 new_image:tag

这种方式的优点是不会影响统一宿主机上的其他容器,缺点是管理起来显得比较乱。

二、修改文件端口,重启docker服务

1)停止docker(一定要先停止dokcer,不然直接修改配置文件不会生效)

systemctl stop docker

2)进入docker文件夹,找到容器的位置以及配置文件:

查看容器配置

docker inspect container-name

得到,但是在Mac中,因为根本找不到该路径.

"ResolvConfPath": "/var/lib/docker/containers/{容器编号}/resolv.conf",

解决

进入docker,方法如下,之后在命令窗口就可以找到容器的配置文件了. 

screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty

(有些mac中并没有tty文件,使用方法2)

docker run -it --name docker_vm --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh

以上会安装docker虚拟机,并进入虚拟机,后期可以直接在mac的桌面端进入也行

3)打开容器的文件路径,修改配置文件:

  1. # 进入容器的配置文件
  2. / cd /var/lib/docker/containers/{容器编号}/
  3. {容器编号}/ ll
  4. # 列出所有文件
  5. 9e81be55fbf1c56a12a5ac87a62415439df4d63b454bfa199c8defb94e632475-json.log
  6. checkpoints
  7. config.v2.json
  8. hostconfig.json
  9. hostname
  10. hosts
  11. mounts
  12. resolv.conf
  13. resolv.conf.hash

一:先修改这个容器的hostconfig.json文件中的端口

如果之前没有端口映射, 应该有这样的一段:
“PortBindings”:{}
增加一个映射, 这样写:
“PortBindings”:{“8888/tcp”:[{“HostIp”:””,“HostPort”:“1888”}]}
前一个数字是容器端口, 后一个是宿主机端口。将宿主机的1888端口映射到容器的8888端口
如果增加多个,就是
“PortBindings”:{“8888/tcp”:[{“HostIp”:””,“HostPort”:“1888”}],“6006/tcp”:[{“HostIp”:””,“HostPort”:“1006”}]}
将宿主机的1888和1006端口映射到容器的8888和6006端口
而修改现有端口映射更简单, 把端口号改掉就行
如果config.v2.json里面也记录了端口,需要修改ExportPorts

二:如果config.v2.json里面也记录了端口,需要修改ExportPorts

4)重启docker服务:

systemctl restart docker

在mac中不用重启,直接通过桌面端重启一下就好 

 

5)查看配置项是否成功

docker inspect container-name

在mac端可以直接可视化的查看是否成功

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号