当前位置: 首页 > article >正文

docker run 端口映射

me

镜像映射 22 端口到宿主机 10122

4o

要将 Docker 容器中的端口映射到宿主机的端口,可以使用 -p 选项。这个选项的格式是 <宿主机端口>:<容器端口>。如果你希望将容器的 22 端口映射到宿主机的 10122 端口,可以这样运行你的 Docker 容器:

Copy
docker run -d --name=ubn18 --gpus all --privileged=true --shm-size 8G -p 10122:22 ubuntu:18.04

这样,当你尝试连接到宿主机的 10122 端口时,实际上会被转发到容器内的 22 端口。例如,如果你想通过 SSH 连接到该容器(假设你在容器中安装并配置了 SSH 服务器),可以在宿主机上使用以下命令:

Copy
ssh -p 10122 用户名@宿主机的IP地址

注意:为了能够通过 SSH 连接,你需要确保在容器中安装并启动了 SSH 服务器。此外,也需要正确配置防火墙规则以允许连接到宿主机的 10122 端口。

me

同时映射 3306 到 13306

4o

要同时映射多个端口,可以使用多个 -p 选项。在你的例子中,除了将容器的 22 端口映射到宿主机的 10122,你还需要将容器的 3306 端口映射到宿主机的 13306 端口。可以按以下方式运行 Docker 命令:

Copy
docker run -d --name=ubn18 --gpus all --privileged=true --shm-size 8G -p 10122:22 -p 13306:3306 ubuntu:18.04

通过这个命令:

  • 宿主机的 10122 端口将被映射到容器的 22 端口。
  • 宿主机的 13306 端口将被映射到容器的 3306 端口。
    确保在容器中运行的服务(例如 SSH 和 MySQL)正确配置和启动。对于 MySQL,您需要确保已经在容器中安装并运行了 MySQL 服务器,并且它监听在 3306 端口上。
    另外,请确保宿主机上相应的防火墙和安全组允许对这些端口的访问。

me

运行着的容器还能增加端口映射吗

4o

不能直接在已经运行的容器上添加新的端口映射。运行中的容器一旦启动,网络配置(包括端口映射)就被锁定,无法动态修改。
不过,你可以通过其他方法实现增加端口映射:
停止并重新启动容器:可以停止当前容器并使用新的端口映射重新创建它。这是一种最常见的方法。

Copy
   # 停止并删除现有容器
   docker stop ubn18
   docker rm ubn18

   # 重新创建容器,并增加新的端口映射
   docker run -d --name=ubn18 --gpus all --privileged=true --shm-size 8G -p 10122:22 -p 13306:3306 ubuntu:18.04

使用 Docker Compose:如果你使用 Docker Compose 管理容器,可以在 docker-compose.yml 文件中添加新的端口映射,然后重新启动服务来应用更改。
使用 docker network:如果你在更复杂的环境中工作,可以将容器连入同一个 Docker 网络上不同的容器,而不是直接映射新的主机端口。
创建新的网络接口和端口转发规则(高级):通过修改 iptables 或 Docker 网络设置可以实现动态端口映射,但这通常更加复杂,且不推荐作为常规方案,因为它破坏了容器化和代码管理的最佳实践。
一般来说,最方便且常用的做法是先停止容器,然后使用新的配置参数重启它。


http://www.kler.cn/a/446391.html

相关文章:

  • C++ 智能指针(高频面试题)
  • 猫头虎分享:读孙凝晖院士《人工智能与智能计算的发展》有感
  • 【HarmonyOS之旅】DevEco Studio的安装与环境配置
  • PHP接入美团联盟推广
  • 【Apache Doris】周FAQ集锦:第 26 期
  • JAVA开发时获取用户信息失败,分析后端日志信息
  • 基于ceres优化的3d激光雷达开源算法
  • 【Unity3D】ILRuntime学习记录一
  • 面试题整理9----谈谈对k8s的理解2
  • vue2组件之间通信的四种方法总结
  • maven 中 有历史模块缓存 怎么清
  • vscode 版本升级导致yarn不能使用
  • vLLM项目加入PyTorch生态系统,引领LLM推理新纪元
  • “typedef“知识详解
  • Vue.js实例开发-如何通过Props传递数据
  • JDBC 入门教程
  • Ubuntu 上传项目到 GitHub
  • linux springboot项目启动端口被占用 Port 8901 was already in use.
  • Flink调优----资源配置调优与状态及Checkpoint调优
  • 【文档搜索引擎】使用多线程优化流程
  • React系列(八)——React进阶知识点拓展
  • ES6学习函数(四)
  • Autosar入门_架构(Architecture)
  • docker常用配置
  • datasets 笔记: 文本数据集的预处理(Tokenization)
  • 【libuv】Fargo信令2:【深入】client为什么收不到服务端响应的ack消息