关于docker容器中socket配置端口问题

关于容器端口和主机端口的关系

首先,我们在创造容器时,如果不指定端口映射,那么这个容器时封闭的,不能与外界网络通信。而我们一般情况下则需要指定端口映射,使得我们可以通过主机的端口访问到容器。我们常用
docker container run -p 8080:80 -d *progamme_name
*这里我们将容器的80端口映射到主机的8080端口,之后我们就可以通过主机的8080端口访问到容器了。如果想要公开容器的所有端口,则可以用
docker container run -P
系统会“随机”分配端口到主机端口。

Socket端口配置

我们在容器内运行一个python的socket服务时,这时需要制定绑定的Ip和端口,我们需要注意的是我们虽然映射了端口到主机,但是绑定的ip不是主机的ip,而是容器内的ip,可以通过ifconfig进行查询,或者直接使用0.0.0.0来接受所有ip的该端口请求

关于0.0.0.0和127.0.0.1和其他ip的关系

这里有个基础知识,127.0.0.1是每台主机的环回地址,只用来自身的网络测试,而不会和外部通信,然后还有inet内部Ip,用于一个公网集群内的主机间的通信,外网访问不了,公网ip一般是多台主机共享。最后0.0.0.0则是表示所有可用的ip.

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Docker容器搭建socket服务器可以方便地进行部署和管理。下面是一个简单的步骤: 1.编写Dockerfile文件 首先需要编写一个Dockerfile文件,指定要使用的镜像、安装必要的软件和配置环境变量等,例如: ``` FROM python:3.7-alpine WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . CMD ["python", "server.py"] ``` 2.编写socket服务器代码 编写socket服务器代码,例如: ``` import socket HOST = '0.0.0.0' PORT = 8080 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind((HOST, PORT)) s.listen() conn, addr = s.accept() with conn: print('Connected by', addr) while True: data = conn.recv(1024) if not data: break conn.sendall(data) ``` 3.构建Docker镜像 在Dockerfile所在目录执行以下命令来构建Docker镜像: ``` docker build -t my-socket-server . ``` 其,my-socket-server是镜像名称,可以自定义。 4.运行Docker容器 使用以下命令来运行Docker容器: ``` docker run -p 8080:8080 my-socket-server ``` 其,8080是容器内部端口,也是socket服务器监听的端口,可以自定义;8080是宿主机端口,用于访问socket服务器。 5.测试socket服务器 使用telnet或其他工具来测试socket服务器,例如: ``` telnet localhost 8080 ``` 输入任意字符并回车,可以看到服务器返回该字符。 以上就是使用Docker容器搭建socket服务器的基本步骤,可以根据实际需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值