执行以下命令失败:
sudo docker run -p unix:///tmp/file.sock:44444 -d image_name
我的端口转发语法有问题吗,还是这样的配置不可能?
执行以下命令失败:
sudo docker run -p unix:///tmp/file.sock:44444 -d image_name
我的端口转发语法有问题吗,还是这样的配置不可能?
Docker 的 -p
语法不支持 Unix 套接字:
-p=[] : Publish a container᾿s port to the host (format:
ip:hostPort:containerPort | ip::containerPort |
hostPort:containerPort)
一种解决方案是:
-p
规范来运行容器,我们将其命名为"cont1"
(--name cont1
)我不是socat专家,但您需要的地址规范应该是这样的:UNIX-LISTEN:/tmp/file.sock,fork,reuseaddr TCP4:cont1:4444
aesm_serv 26473 aesmd 6u unix 0xffff88021c494b00 0t0 291424 @sgx_aesm_socket_base type=STREAM
- Valerio Schiavoni接受的答案部分正确,但是由于您只能链接目录,这意味着您需要链接套接字的目录而不是套接字本身。
当我想连接一个postgres套接字时,以下内容对我有用:
docker run -p 5432:5432 -v /run/postgresql:/run/postgresql -d --name postgres postgres
它将postgres套接字文件链接到您的主机系统。