溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何修改docker容器的端口映射

發(fā)布時間:2021-07-05 16:35:13 來源:億速云 閱讀:1192 作者:chen 欄目:大數(shù)據(jù)

這篇文章主要講解了“如何修改docker容器的端口映射”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“如何修改docker容器的端口映射”吧!

問題

查看正在運行的mysql的docker容器端口映射情況:

$ docker container port mysql 
3306/tcp -> 0.0.0.0:3306
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
5f29020b36c0        mysql               "docker-entrypoint.s…"   16 hours ago        Up 33 seconds       0.0.0.0:3306->3306/tcp, 33060/tcp   mysql

從上面兩條命令查詢結(jié)果,可知,mysql的3306端口映射到本機物理機的3306端口上面了,現(xiàn)在的問題是想要把mysql容器的33060端口,也映射到本機物理機到33060端口上面,即修改已經(jīng)存在到容器到端口映射配置。

步驟

確定容器id

docker container inspect mysql

效果如下圖:

如何修改docker容器的端口映射

這里的mysql容器ID為:5f29020b36c0971da5d50825f4132d0eaf40f1e5efaac02eadab23239ca77d7d

停止容器

$ docker stop mysql
mysql

登錄docker內(nèi)部的linux

cd ~/Library/Containers/com.docker.docker/Data/vms/0/

在這個目錄下面,有一個tty的文件,通過這個文件我們能夠登錄到docker內(nèi)部的linux界面,然后使用下面命令進行登錄:

screen tty

遇到空白命令行,直接回車即可。

編輯config.v2.json

cat /var/lib/docker/containers/5f29020b36c0971da5d50825f4132d0eaf40f1e5efaac02eadab23239ca77d7d/config.v2.json

具體效果如下圖:

如何修改docker容器的端口映射

復(fù)制這個內(nèi)容,粘貼到本地的文本編輯器上面,格式化進行編輯:

如何修改docker容器的端口映射

編輯hostconfig.json

cat /var/lib/docker/containers/5f29020b36c0971da5d50825f4132d0eaf40f1e5efaac02eadab23239ca77d7d/hostconfig.json

具體效果如下圖:

如何修改docker容器的端口映射

復(fù)制這個內(nèi)容,粘貼到本地的文本編輯器上面,格式化進行編輯:

如何修改docker容器的端口映射

添加一個新的33060端口映射,如下:

如何修改docker容器的端口映射

修改完畢之后,將修改后的json壓縮成一行,通過vi修改hostconfig.json文件:

vi /var/lib/docker/containers/5f29020b36c0971da5d50825f4132d0eaf40f1e5efaac02eadab23239ca77d7d/hostconfig.json

內(nèi)容如下:

{"Binds":["/Users/zhangyalin/Documents/databases/mysql/data:/var/lib/mysql"],"ContainerIDFile":"","LogConfig":{"Type":"json-file","Config":{}},"NetworkMode":"default","PortBindings":{"3306/tcp":[{"HostIp":"","HostPort":"3306"}],"33060/tcp":[{"HostIp":"","HostPort":"33060"}]},"RestartPolicy":{"Name":"no","MaximumRetryCount":0},"AutoRemove":false,"VolumeDriver":"","VolumesFrom":null,"CapAdd":null,"CapDrop":null,"Dns":[],"DnsOptions":[],"DnsSearch":[],"ExtraHosts":null,"GroupAdd":null,"IpcMode":"shareable","Cgroup":"","Links":null,"OomScoreAdj":0,"PidMode":"","Privileged":false,"PublishAllPorts":false,"ReadonlyRootfs":false,"SecurityOpt":null,"UTSMode":"","UsernsMode":"","ShmSize":67108864,"Runtime":"runc","ConsoleSize":[0,0],"Isolation":"","CpuShares":0,"Memory":0,"NanoCpus":0,"CgroupParent":"","BlkioWeight":0,"BlkioWeightDevice":[],"BlkioDeviceReadBps":null,"BlkioDeviceWriteBps":null,"BlkioDeviceReadIOps":null,"BlkioDeviceWriteIOps":null,"CpuPeriod":0,"CpuQuota":0,"CpuRealtimePeriod":0,"CpuRealtimeRuntime":0,"CpusetCpus":"","CpusetMems":"","Devices":[],"DeviceCgroupRules":null,"DiskQuota":0,"KernelMemory":0,"MemoryReservation":0,"MemorySwap":0,"MemorySwappiness":null,"OomKillDisable":false,"PidsLimit":0,"Ulimits":null,"CpuCount":0,"CpuPercent":0,"IOMaximumIOps":0,"IOMaximumBandwidth":0,"MaskedPaths":["/proc/asound","/proc/acpi","/proc/kcore","/proc/keys","/proc/latency_stats","/proc/timer_list","/proc/timer_stats","/proc/sched_debug","/proc/scsi","/sys/firmware"],"ReadonlyPaths":["/proc/bus","/proc/fs","/proc/irq","/proc/sys","/proc/sysrq-trigger"]}

退出linux

按Ctrl+A,然后快速按D,退出screen命令。然后,使用screen -ls命令,查看當(dāng)前會話:

$ screen -ls
There is a screen on:
	31169.ttys003.zylMBP	(Detached)
1 Socket in /var/folders/lb/yvhs6lhx3wz8d5mdgw4w81xr0000gn/T/.screen.

再使用kill命令殺死會話:

kill -9 31169

徹底退出會話:

screen -wipe
There is a screen on:
	31169.ttys003.zylMBP	(Removed)
1 socket wiped out.
No Sockets found in /var/folders/lb/yvhs6lhx3wz8d5mdgw4w81xr0000gn/T/.screen.

重啟docker desktop

一定需要重啟docker引擎,如果跳過這一個步驟就會出現(xiàn)hostconfig.json修改的內(nèi)容被還原的問題。

如何修改docker容器的端口映射

重啟mysql容器

$ docker start mysql
mysql

檢查容器

$ docker container port mysql
33060/tcp -> 0.0.0.0:33060
3306/tcp -> 0.0.0.0:3306

感謝各位的閱讀,以上就是“如何修改docker容器的端口映射”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對如何修改docker容器的端口映射這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI