@@ -2,6 +2,7 @@ package docker
22
33import (
44 "context"
5+ "github.com/docker/docker/api/types/network"
56
67 "github.com/docker/docker/api/types/container"
78 "github.com/docker/docker/api/types/image"
@@ -14,6 +15,19 @@ import (
1415 "github.com/docker/docker/client"
1516)
1617
18+ func NewDockerClient () (* client.Client , error ) {
19+ var settingItem model.Setting
20+ _ = global .DB .Where ("key = ?" , "DockerSockPath" ).First (& settingItem ).Error
21+ if len (settingItem .Value ) == 0 {
22+ settingItem .Value = "unix:///var/run/docker.sock"
23+ }
24+ cli , err := client .NewClientWithOpts (client .FromEnv , client .WithHost (settingItem .Value ), client .WithAPIVersionNegotiation ())
25+ if err != nil {
26+ return nil , err
27+ }
28+ return cli , nil
29+ }
30+
1731type Client struct {
1832 cli * client.Client
1933}
@@ -34,21 +48,14 @@ func NewClient() (Client, error) {
3448 }, nil
3549}
3650
37- func (c Client ) Close () {
38- _ = c .cli .Close ()
51+ func NewClientWithCli (cli * client.Client ) (Client , error ) {
52+ return Client {
53+ cli : cli ,
54+ }, nil
3955}
4056
41- func NewDockerClient () (* client.Client , error ) {
42- var settingItem model.Setting
43- _ = global .DB .Where ("key = ?" , "DockerSockPath" ).First (& settingItem ).Error
44- if len (settingItem .Value ) == 0 {
45- settingItem .Value = "unix:///var/run/docker.sock"
46- }
47- cli , err := client .NewClientWithOpts (client .FromEnv , client .WithHost (settingItem .Value ), client .WithAPIVersionNegotiation ())
48- if err != nil {
49- return nil , err
50- }
51- return cli , nil
57+ func (c Client ) Close () {
58+ _ = c .cli .Close ()
5259}
5360
5461func (c Client ) ListContainersByName (names []string ) ([]types.Container , error ) {
@@ -90,8 +97,9 @@ func (c Client) ListAllContainers() ([]types.Container, error) {
9097}
9198
9299func (c Client ) CreateNetwork (name string ) error {
93- _ , err := c .cli .NetworkCreate (context .Background (), name , types.NetworkCreate {
94- Driver : "bridge" ,
100+ _ , err := c .cli .NetworkCreate (context .Background (), name , network.CreateOptions {
101+ Driver : "bridge" ,
102+ EnableIPv6 : new (bool ),
95103 })
96104 return err
97105}
@@ -103,26 +111,6 @@ func (c Client) DeleteImage(imageID string) error {
103111 return nil
104112}
105113
106- func (c Client ) InspectContainer (containerID string ) (types.ContainerJSON , error ) {
107- return c .cli .ContainerInspect (context .Background (), containerID )
108- }
109-
110- func (c Client ) PullImage (imageName string , force bool ) error {
111- if ! force {
112- exist , err := c .CheckImageExist (imageName )
113- if err != nil {
114- return err
115- }
116- if exist {
117- return nil
118- }
119- }
120- if _ , err := c .cli .ImagePull (context .Background (), imageName , image.PullOptions {}); err != nil {
121- return err
122- }
123- return nil
124- }
125-
126114func (c Client ) GetImageIDByName (imageName string ) (string , error ) {
127115 filter := filters .NewArgs ()
128116 filter .Add ("reference" , imageName )
@@ -138,20 +126,8 @@ func (c Client) GetImageIDByName(imageName string) (string, error) {
138126 return "" , nil
139127}
140128
141- func (c Client ) CheckImageExist (imageName string ) (bool , error ) {
142- filter := filters .NewArgs ()
143- filter .Add ("reference" , imageName )
144- list , err := c .cli .ImageList (context .Background (), image.ListOptions {
145- Filters : filter ,
146- })
147- if err != nil {
148- return false , err
149- }
150- return len (list ) > 0 , nil
151- }
152-
153129func (c Client ) NetworkExist (name string ) bool {
154- var options types. NetworkListOptions
130+ var options network. ListOptions
155131 options .Filters = filters .NewArgs (filters .Arg ("name" , name ))
156132 networks , err := c .cli .NetworkList (context .Background (), options )
157133 if err != nil {
0 commit comments