Docker修改容器端口或映射目录

鉴于中文搜索出来的方式80%都是使用tty进行连接,但是我安装的Docker版本压根就没这文件,再执行命令时就会提示[screen is terminating];这个操作还是比较经常出现的,所以记录一下如何正确操作,防止下次又忘记了。

记得停止要修改的容器,我在这些操作都是从可视化界面进行的就不敲命令了[docker stop {容器Id|容器名}]

输入命令获取要修改的容器ID,首先知道要修改的容器名是,比如:train,在Linux或Mac你可以输入以下命令只显示ID。

docker inspect train | grep Id

如果是Windows则只输入以下命令,然后拉到上面找到Id的值

docker inspect train

输出的结果第一行的Id即代表是容器ID,记住一下即可。

然后启动终端创建且进入一个容器,如果已经创建过这个容器可以直接进入。

docker run -it --privileged --pid=host justincormack/nsenter1

进入到创建到容器后,进入到对应目录:

cd /var/lib/docker/containers/{容器ID}

例如:

cd /var/lib/docker/containers/9e9c20a43f294b200e28f49ea5e0cf67189c281c0364cd9675cb90a811c0b782/

主要修改两个配置文件,config.v2.jsonhostconfig.json

修改容器映射端口:

编辑config.v2.json文件:

vi config.v2.json

在vi下输入 / 进入到搜索,输入ExposedPorts回车跳转到位置,按i进入编辑模式修改:

"ExposedPorts":{"80/tcp":{}}

参考如果暴露80的端口这在增加,如果多个接口就往后增加:

"ExposedPorts":{"80/tcp":{}, "3306/tcp":{}}

然后敲下Esc退出编辑模式,再进入到搜索后输入Ports(如果没有定位到按下n可跳转下一个):

"Ports":{"80/tcp":[{"HostIp":"0.0.0.0","HostPort":"80"}]}

这位置编辑完成后,按Esc退出输入:wq保存并退出。

然后修改hostconfig.json文件,进入到文件后搜索PortBindings,编辑:

"PortBindings":{"80/tcp":[{"HostIp":"","HostPort":"80"}]}

保存退出,重启一下docker(点击菜单栏的图标有个Restart Docker选项)即可。

修改容器映射目录:

同样的,如果需要修改映射目录,也是需要修改这两个文件下的配置,不过映射目录需要修改的地方比较多,可以通过vi的搜索找到原本的目录,进行修改,并且记得点击n 键跳到下一个,直到没有需要修改的地方再保存退出。两个文件都修改完毕后,重启容器就可以了。😊