@@ -16,7 +16,8 @@ const (
1616
1717 defaultContentTypeV1 = "appplication/vnd.docker.plugins.v1+json"
1818 defaultImplementationManifest = `{"Implements": ["VolumeDriver"]}`
19- pluginSpecDir = "/usr/share/docker/plugins"
19+ pluginSpecDir = "/etc/docker/plugins"
20+ pluginSockDir = "/run/docker/plugins"
2021
2122 activatePath = "/Plugin.Activate"
2223 createPath = "/VolumeDriver.Create"
@@ -119,10 +120,6 @@ func (h *Handler) listenAndServe(proto, addr, group string) error {
119120 Handler : h .mux ,
120121 }
121122
122- if err := os .MkdirAll (pluginSpecDir , 0755 ); err != nil {
123- return err
124- }
125-
126123 start := make (chan struct {})
127124
128125 var l net.Listener
@@ -134,7 +131,11 @@ func (h *Handler) listenAndServe(proto, addr, group string) error {
134131 err = writeSpec (group , l .Addr ().String ())
135132 }
136133 case "unix" :
137- l , err = newUnixSocket (fullSocketAddr (addr ), group , start )
134+ var s string
135+ s , err = fullSocketAddr (addr )
136+ if err == nil {
137+ l , err = newUnixSocket (s , group , start )
138+ }
138139 }
139140 if err != nil {
140141 return err
@@ -160,15 +161,23 @@ func encodeResponse(w http.ResponseWriter, res Response) {
160161}
161162
162163func writeSpec (name , addr string ) error {
164+ if err := os .MkdirAll (pluginSpecDir , 0755 ); err != nil {
165+ return err
166+ }
167+
163168 spec := filepath .Join (pluginSpecDir , name + ".spec" )
164169 url := "tcp://" + addr
165170 return ioutil .WriteFile (spec , []byte (url ), 0644 )
166171}
167172
168- func fullSocketAddr (addr string ) string {
173+ func fullSocketAddr (addr string ) (string , error ) {
174+ if err := os .MkdirAll (pluginSockDir , 0755 ); err != nil {
175+ return "" , err
176+ }
177+
169178 if filepath .IsAbs (addr ) {
170- return addr
179+ return addr , nil
171180 }
172181
173- return filepath .Join (pluginSpecDir , addr + ".sock" )
182+ return filepath .Join (pluginSockDir , addr + ".sock" ), nil
174183}
0 commit comments