当前位置: 代码网 > 服务器>服务器>云虚拟主机 > Docker给容器添加新端口映射两种方法及常用命令

Docker给容器添加新端口映射两种方法及常用命令

2024年09月08日 云虚拟主机 我要评论
前言docker容器创建后,其网络配置通常是固定的,包括端口映射。基于docker的原生工具,一旦容器启动,就无法直接修改其端口映射。然而,有几种方法可以解决需要对现有容器添加新端口映射的问题。方法一

前言

docker容器创建后,其网络配置通常是固定的,包括端口映射。基于docker的原生工具,一旦容器启动,就无法直接修改其端口映射。然而,有几种方法可以解决需要对现有容器添加新端口映射的问题。

方法一:创建新容器

最直接的方法是创建一个新的容器,并在创建时指定所有需要的端口映射。这可以通过以下步骤完成:

停止当前运行的容器:

docker stop <旧容器名或id>

删除旧容器(可选,但如果你想重用容器名,这是必须的):

docker rm <旧容器名或id>

启动一个新容器,并添加新的端口映射:

docker run -d -p <新端口>:<容器端口> --name <容器名> <其他选项> <镜像名>

这里的<新端口>是你希望在宿主机上公开的端口,<容器端口>是容器内部要映射的端口。

如果旧容器有持久化的数据或者特定的配置,确保在创建新容器时通过挂载相同的数据卷或传递相同的环境变量等来保留这些设置。

方法二:创建新容器

使用docker compose

如果你在使用docker compose来管理你的容器,修改端口映射比较简单。你只需要在docker-compose.yml文件中更新ports部分,然后重新启动服务:

停止并移除当前服务:

docker-compose down

修改docker-compose.yml文件

修改docker-compose.yml文件中的ports部分,添加新的端口映射。

启动服务:

docker-compose up -d

这些步骤将重新创建服务中定义的容器,并应用新的端口映射。

在处理端口映射问题时,请记住,重新创建容器可能涉及到数据迁移和配置复制,因此在执行任何操作之前请确保数据的备份和迁移策略已经到位。

常用命令

查看运行的容器

docker ps

查看容器挂载目录

docker inspect [容器id]

我这里是[容器name]

停止容器

docker stop python

warning: stopping docker.service, but it can still be activated by:
docker.socket

停止docker服务

systemctl stop docker

进入容器挂载目录

修改config.v2.json文件

{"streamconfig":{},"state":{"running":false,"paused":false,"restarting":false,"oomkilled":false,"removalinprogress":false,"dead":false,"pid":0,"exitcode":137,"error":"","startedat":"2023-12-28t07:14:02.730791168z","finishedat":"2024-01-03t08:05:02.667062922z","health":null},"id":"8dc4d34541a0d1c92786995d75619786ac82dc1031f36918ebc4c5a9a6e2937a","created":"2023-12-28t07:14:02.473478097z","managed":false,"path":"python3","args":[],"config":{"hostname":"8dc4d34541a0","domainname":"","user":"","attachstdin":false,"attachstdout":false,"attachstderr":false,"exposedports":{"80/tcp":{}},"tty":true,"openstdin":true,"stdinonce":false,"env":["path=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","lang=c.utf-8","gpg_key=e3ff2839c048b25c084debe9b26995e310250568","python_version=3.9.18","python_pip_version=23.0.1","python_setuptools_version=58.1.0","python_get_pip_url=https://github.com/pypa/get-pip/raw/4cfa4081d27285bda1220a62a5ebf5b4bd749cdb/public/get-pip.py","python_get_pip_sha256=9cc01665956d22b3bf057ae8287b035827bfd895da235bcea200ab3b811790b6"],"cmd":["python3"],"image":"python:3.9","volumes":null,"workingdir":"","entrypoint":null,"onbuild":null,"labels":{}},"image":"sha256:edb6b76b75bad04bef16fec848f73e45c0b4522d77cf389baff429081157fa1a","imagemanifest":null,"networksettings":{"bridge":"","sandboxid":"9b46c5df4c1dcd3cfbaac30fe56133a0934441bdbb550683ebf1723d196f1445","hairpinmode":false,"linklocalipv6address":"","linklocalipv6prefixlen":0,"networks":{"bridge":{"ipamconfig":null,"links":null,"aliases":null,"networkid":"13c59dd8b27c93fe0532208bcfc7ba050657ea0819b07b3aab3ca6f0cb41fb8a","endpointid":"","gateway":"","ipaddress":"","ipprefixlen":0,"ipv6gateway":"","globalipv6address":"","globalipv6prefixlen":0,"macaddress":"","driveropts":null,"ipamoperational":false}},"service":null,"ports":{"80/tcp":[{"hostip":"0.0.0.0","hostport":"5000"}]},"sandboxkey":"/var/run/docker/netns/9b46c5df4c1d","secondaryipaddresses":null,"secondaryipv6addresses":null,"isanonymousendpoint":false,"hasswarmendpoint":false},"logpath":"/var/lib/docker/containers/8dc4d34541a0d1c92786995d75619786ac82dc1031f36918ebc4c5a9a6e2937a/8dc4d34541a0d1c92786995d75619786ac82dc1031f36918ebc4c5a9a6e2937a-json.log","name":"/python","driver":"overlay2","os":"linux","restartcount":0,"hasbeenstartedbefore":true,"hasbeenmanuallystopped":true,"mountpoints":{},"secretreferences":null,"configreferences":null,"mountlabel":"","processlabel":"","apparmorprofile":"","seccompprofile":"","nonewprivileges":false,"hostnamepath":"/var/lib/docker/containers/8dc4d34541a0d1c92786995d75619786ac82dc1031f36918ebc4c5a9a6e2937a/hostname","hostspath":"/var/lib/docker/containers/8dc4d34541a0d1c92786995d75619786ac82dc1031f36918ebc4c5a9a6e2937a/hosts","shmpath":"","resolvconfpath":"/var/lib/docker/containers/8dc4d34541a0d1c92786995d75619786ac82dc1031f36918ebc4c5a9a6e2937a/resolv.conf","locallogcachemeta":{"havenotifyenabled":false}}

位置1:

"exposedports":{"80/tcp":{}}

位置2:

"ports":{"80/tcp":[{"hostip":"0.0.0.0","hostport":"5000"}]}

修改hostconfig.json文件

{"binds":null,"containeridfile":"","logconfig":{"type":"json-file","config":{}},"networkmode":"default","portbindings":{"80/tcp":[{"hostip":"","hostport":"5000"}]},"restartpolicy":{"name":"no","maximumretrycount":0},"autoremove":false,"volumedriver":"","volumesfrom":null,"consolesize":[22,204],"capadd":null,"capdrop":null,"cgroupnsmode":"host","dns":[],"dnsoptions":[],"dnssearch":[],"extrahosts":null,"groupadd":null,"ipcmode":"private","cgroup":"","links":null,"oomscoreadj":0,"pidmode":"","privileged":false,"publishallports":false,"readonlyrootfs":false,"securityopt":null,"utsmode":"","usernsmode":"","shmsize":67108864,"runtime":"runc","isolation":"","cpushares":0,"memory":0,"nanocpus":0,"cgroupparent":"","blkioweight":0,"blkioweightdevice":[],"blkiodevicereadbps":[],"blkiodevicewritebps":[],"blkiodevicereadiops":[],"blkiodevicewriteiops":[],"cpuperiod":0,"cpuquota":0,"cpurealtimeperiod":0,"cpurealtimeruntime":0,"cpusetcpus":"","cpusetmems":"","devices":[],"devicecgrouprules":null,"devicerequests":null,"memoryreservation":0,"memoryswap":0,"memoryswappiness":null,"oomkilldisable":false,"pidslimit":null,"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","/sys/devices/virtual/powercap"],"readonlypaths":["/proc/bus","/proc/fs","/proc/irq","/proc/sys","/proc/sysrq-trigger"]}

位置1:

"portbindings":{"80/tcp":[{"hostip":"","hostport":"5000"}]}

重启容器

systemctl start docker

启动容器

docker start python

总结 

到此这篇关于docker给容器添加新端口映射两种方法及常用命令的文章就介绍到这了,更多相关docker容器添加新端口映射内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com