我尝试通过Unit-socket连接Docker-container和内部资源。
为此,我将以下命令添加到Dockerfile:
RUN -v /var/run/docker.sock:/var/run/postgresql/.s.PGSQL.5432
但是在/var/run/docker.sock:/var/run/postgresql/.s.PGSQL.5432‘构建的阶段,我收到: /bin/sh:非法选项-错误:服务'webapp’无法构建:命令'/bin/sh -c -v webapp‘返回了一个非零代码:2
我做错了什么?
发布于 2020-01-27 03:32:29
Dockerfile文件中的RUN
指令用于在构建过程中在容器内部运行命令,而不是运行容器。请参阅it's documentation。
要使Unix套接字在容器内可用,请在启动容器时指定一个bind mount:
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
Docker注意:/var/run/docker.sock
是用来和
守护进程通信的。小心使用它,因为对Docker守护进程的访问提供了对您的计算机的超级用户访问权限。
https://stackoverflow.com/questions/59921733
复制相似问题