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)打开容器的文件路径,修改配置文件:

# 进入容器的配置文件
/ cd /var/lib/docker/containers/{容器编号}/
{容器编号}/ ll
# 列出所有文件
9e81be55fbf1c56a12a5ac87a62415439df4d63b454bfa199c8defb94e632475-json.log
checkpoints
config.v2.json
hostconfig.json
hostname
hosts
mounts
resolv.conf
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端可以直接可视化的查看是否成功

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值