一、新增端口
发现开放的端口不够用了,但是还不想重新创建容器咋整
1、查看container id
不管是使用docker ps,docker ps -a,docker inspect containerName哪种方式先获得容器的id,这里我使用inspect
docker inspect jenkinsdemo | grep Id
返回的信息如下:
"Id": "64f7c751e5df16cbbeccbd8648012ae3ae7d76c443565fd66f99244085773bbf",
或者使用可视化docker直接点击:
便可直接跳出容器id,并进入容器:
2、进入配置文件
Mac下Docker容器的配置文件在~/Library/Containers/com.docker.docker目录
cd ~/Library/Containers/com.docker.docker
需要修改的文件在Data/vms/0下
3、进入screen
在~/Library/Containers/com.docker.docker/Data/vms/0目录下有一个tty文件,在终端键入screen tty进行登录,此时会进入一个screen空白窗口,回车即可
注:如果出现screen is terminating这个提示,请参照下面操作:
docker run -it --privileged --pid=host justincormack/nsenter1
执行上面命令,啥也不要改,第一次执行会进入容器终端,接着执行
cd /var/lib/docker/containers && ls
此时我们会看到一些文件夹:
64f7c751e5df16cbbeccbd8648012ae3ae7d76c443565fd66f99244085773bbf
fdd17afcb6c7fcb78cfc1626935641059476a464cc4de5e1b7db74a9802db3b6
我们使用①中获取的container id,进入到对应的目录
cd 64f7c751e5df16cbbeccbd8648012ae3ae7d76c443565fd66f99244085773bbf && ls
此时可以看到如下内容:
64f7c751e5df16cbbeccbd8648012ae3ae7d76c443565fd66f99244085773bbf-json.log
checkpoints
config.v2.json
hostconfig.json
hostname
hosts
mounts
resolv.conf
resolv.conf.hash
4、修改文件内容
接着修改config.v2.json和hostconfig.json文件对应的端口映射部分
4.1 修改config.v2.json
通过vi找到要修改的关键字ExposedPorts,
原先的内容如下:
ExposedPorts":{"50000/tcp":{},"8080/tcp":{}},
那我们要增加暴露的8000端口,那么就是配置如下:
ExposedPorts":{"50000/tcp":{},"8080/tcp":{},"8000/tcp":{}},
修改完之后保存该文件
4.2 修改hostconfig.json
通过vi找到要修改的关键字PortBindings
原先的内容为
"PortBindings":{"8080/tcp":[{"HostIp":"","HostPort":"8082"}]},
那我们要增加8000端口映射到主机的8000端口,那么配置如下:
"PortBindings":{"8080/tcp":[{"HostIp":"","HostPort":"8082”}]},"8000/tcp":[{"HostIp":"","HostPort":"8000"}]}
修改完之后保存该文件
5、退出screen
输入ctrl+a+c(先按ctrl,再按a,然后按c即可)
二、查看新增结果
命令查看:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
64f7c751e5df jenkins/jenkins "/sbin/tini -- /usr/…" 2 weeks ago Up 19 hours 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp, 50000/tcp, 0.0.0.0:8082->8080/tcp, :::8082->8080/tcp jenkinsdemo
可视化docker查看: