基于Alpine的轻量级容器,用于运行socat网络工具,实现端口转发、数据流转发等网络通信功能。
收藏数: 115
下载次数: 69594798
类型:
alpine/socatsocat Docker镜像是一个基于Alpine Linux的轻量级容器,用于运行socat命令。socat是一个多功能的网络工具,用于在不同类型的套接字之间建立双向数据流。该镜像每周自动构建,以确保包含最新版本的socat工具。
Docker for Mac应用程序允许在不使用vagrant或其他虚拟化Linux操作系统的情况下使用Docker引擎,但不提供与其他版本相同的Docker守护进程配置选项。通过socat可以建立一个绑定到本地主机的TCP套接字,使Docker for Mac API可用。
将Unix套接字(/var/run/docker.sock)通过Docker守护进程发布为本地主机(127.0.0.1)上的2376端口:
bash$ docker pull alpine/socat $ docker run -d --restart=always \ -p 127.0.0.1:2376:2375 \ -v /var/run/docker.sock:/var/run/docker.sock \ alpine/socat \ tcp-listen:2375,fork,reuseaddr unix-connect:/var/run/docker.sock
警告:Docker API默认是不安全的。请务必将TCP套接字绑定到
localhost接口,否则Docker API将绑定到所有接口,存在安全风险。
Docker不允许直接修改现有容器的端口映射配置。通常需要销毁并重新创建容器才能更改发布的端口。使用socat镜像可以作为一种 workaround,通过转发端口和链接容器来解决此限制。
将容器example-container的1234端口发布为Docker主机的4321端口:
bash$ docker pull alpine/socat $ docker run \ --publish 4321:1234 \ --link example-container:target \ alpine/socat \ tcp-listen:1234,fork,reuseaddr tcp-connect:target:1234
docker run后添加--detach参数--restart always参数--restart unless-stopped参数Socat Docker镜像在Dockerfile中没有使用EXPOSE指令,这可能会影响依赖此信息的其他容器(如nginx-proxy)。通过在运行时使用expose选项,可以允许nginx-proxy正确检测并与socat实例通信,而无需像使用ports选项那样在主机上打开端口。
以下示例使用socat将主机的Cockpit实例中继到nginx-proxy镜像,从而可以利用代理端口和可选的Let's Encrypt支持:
yamlversion: '3' services: cockpit-relay: image: alpine/socat container_name: cockpit-relay depends_on: - nginx-proxy command: "TCP-LISTEN:9090,fork,reuseaddr TCP:172.17.0.1:9090" expose: - "9090" environment: - VIRTUAL_HOST=somehost.somedomain # 虚拟主机名 - VIRTUAL_PROTO=https # 使用的协议 - LETSENCRYPT_HOST=somehost.somedomain # Let's Encrypt主机名 - LETSENCRYPT_EMAIL=*** # Let's Encrypt*** restart: unless-stopped logging: driver: journald networks: - webservices networks: webservices:
所有可用的镜像标签可在Docker Hub上查看:[***]
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 版本下载页面。




manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务