通过单元套接字连接Docker容器
我尝试通过单元套接字连接Docker容器和内部资源 为此,我向Dockerfile添加了以下命令:通过单元套接字连接Docker容器,docker,sockets,dockerfile,Docker,Sockets,Dockerfile,我尝试通过单元套接字连接Docker容器和内部资源 为此,我向Dockerfile添加了以下命令: RUN -v /var/run/docker.sock:/var/run/postgresql/.s.PGSQL.5432 但在docker build阶段,我收到:/bin/sh:非法选项- 错误:服务“webapp”生成失败:命令“/bin/sh-c-v/var/run/docker.sock:/var/run/postgresql/.s.PGSQL.5432”返回非零代码:2 我做错了什
RUN -v /var/run/docker.sock:/var/run/postgresql/.s.PGSQL.5432
但在docker build阶段,我收到:/bin/sh:非法选项-
错误:服务“webapp”生成失败:命令“/bin/sh-c-v/var/run/docker.sock:/var/run/postgresql/.s.PGSQL.5432”返回非零代码:2
我做错了什么?
RUN
Dockerfile中的指令用于在生成期间在容器内运行命令,而不是运行容器。参考它的
要使容器中的Unix套接字可用,请在启动容器时指定:
docker run -v /var/run/postgresql/.s.PGSQL.5432:/var/run/postgresql/.s.PGSQL.5432 yourapp:latest
这将使主机上的/var/run/postgresql/.s.PGSQL.5432
套接字在容器中可用
您还可以指定不同的主机和容器路径:
docker run -v /var/run/postgresql/.s.PGSQL.5432:/tmp/postgresql yourapp:latest
注意:/var/run/docker.sock
用于与docker通信
守护进程。要小心,因为访问Docker守护进程提供了对您的机器的根访问
你能帮我澄清一下这个问题的另一个方面吗?我是否正确理解,我必须在机器上运行此命令,其中包含PGSQL.5432的数据库。有人上马了吗?我构建了我的容器,由docker编写并在本地机器上推送,然后它在远程服务器上迁移,带有数据库(带有unix套接字),很高兴能提供帮助!是的,您必须在与数据库相同的计算机上运行容器。有很多方法可以做到这一点:要么在本地构建并将映像传输到远程主机,要么配置对Docker守护进程的远程访问。看看这里的答案: