| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -16,7 +16,6 @@ import (
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"github.com/docker/buildx/util/confutil"
 | 
					 | 
					 | 
					 | 
						"github.com/docker/buildx/util/confutil"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"github.com/docker/buildx/util/imagetools"
 | 
					 | 
					 | 
					 | 
						"github.com/docker/buildx/util/imagetools"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"github.com/docker/buildx/util/progress"
 | 
					 | 
					 | 
					 | 
						"github.com/docker/buildx/util/progress"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"github.com/docker/docker/api/types"
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						dockertypes "github.com/docker/docker/api/types"
 | 
					 | 
					 | 
					 | 
						dockertypes "github.com/docker/docker/api/types"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"github.com/docker/docker/api/types/container"
 | 
					 | 
					 | 
					 | 
						"github.com/docker/docker/api/types/container"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						"github.com/docker/docker/api/types/mount"
 | 
					 | 
					 | 
					 | 
						"github.com/docker/docker/api/types/mount"
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -37,7 +36,6 @@ const (
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					type Driver struct {
 | 
					 | 
					 | 
					 | 
					type Driver struct {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						driver.InitConfig
 | 
					 | 
					 | 
					 | 
						driver.InitConfig
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						factory      driver.Factory
 | 
					 | 
					 | 
					 | 
						factory      driver.Factory
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						userNSRemap  bool // true if dockerd is running with userns-remap mode
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						netMode      string
 | 
					 | 
					 | 
					 | 
						netMode      string
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						image        string
 | 
					 | 
					 | 
					 | 
						image        string
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						cgroupParent string
 | 
					 | 
					 | 
					 | 
						cgroupParent string
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -84,7 +82,7 @@ func (d *Driver) create(ctx context.Context, l progress.SubLogger) error {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if err != nil {
 | 
					 | 
					 | 
					 | 
							if err != nil {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								return err
 | 
					 | 
					 | 
					 | 
								return err
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							rc, err := d.DockerAPI.ImageCreate(ctx, imageName, types.ImageCreateOptions{
 | 
					 | 
					 | 
					 | 
							rc, err := d.DockerAPI.ImageCreate(ctx, imageName, dockertypes.ImageCreateOptions{
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								RegistryAuth: ra,
 | 
					 | 
					 | 
					 | 
								RegistryAuth: ra,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							})
 | 
					 | 
					 | 
					 | 
							})
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if err != nil {
 | 
					 | 
					 | 
					 | 
							if err != nil {
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -121,19 +119,30 @@ func (d *Driver) create(ctx context.Context, l progress.SubLogger) error {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									},
 | 
					 | 
					 | 
					 | 
									},
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								},
 | 
					 | 
					 | 
					 | 
								},
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if d.userNSRemap {
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								hc.UsernsMode = "host"
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if d.netMode != "" {
 | 
					 | 
					 | 
					 | 
							if d.netMode != "" {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								hc.NetworkMode = container.NetworkMode(d.netMode)
 | 
					 | 
					 | 
					 | 
								hc.NetworkMode = container.NetworkMode(d.netMode)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if info, err := d.DockerAPI.Info(ctx); err == nil && info.CgroupDriver == "cgroupfs" {
 | 
					 | 
					 | 
					 | 
							if info, err := d.DockerAPI.Info(ctx); err == nil {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								// Place all buildkit containers inside this cgroup by default so limits can be attached
 | 
					 | 
					 | 
					 | 
								if info.CgroupDriver == "cgroupfs" {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								// to all build activity on the host.
 | 
					 | 
					 | 
					 | 
									// Place all buildkit containers inside this cgroup by default so limits can be attached
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								hc.CgroupParent = "/docker/buildx"
 | 
					 | 
					 | 
					 | 
									// to all build activity on the host.
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								if d.cgroupParent != "" {
 | 
					 | 
					 | 
					 | 
									hc.CgroupParent = "/docker/buildx"
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									hc.CgroupParent = d.cgroupParent
 | 
					 | 
					 | 
					 | 
									if d.cgroupParent != "" {
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
										hc.CgroupParent = d.cgroupParent
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								secOpts, err := dockertypes.DecodeSecurityOptions(info.SecurityOptions)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								if err != nil {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									return err
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								for _, f := range secOpts {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									if f.Name == "userns" {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
										hc.UsernsMode = "host"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
										break
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								}
 | 
					 | 
					 | 
					 | 
								}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							_, err := d.DockerAPI.ContainerCreate(ctx, cfg, hc, &network.NetworkingConfig{}, nil, d.Name)
 | 
					 | 
					 | 
					 | 
							_, err := d.DockerAPI.ContainerCreate(ctx, cfg, hc, &network.NetworkingConfig{}, nil, d.Name)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if err != nil {
 | 
					 | 
					 | 
					 | 
							if err != nil {
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -186,7 +195,7 @@ func (d *Driver) wait(ctx context.Context, l progress.SubLogger) error {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					func (d *Driver) copyLogs(ctx context.Context, l progress.SubLogger) error {
 | 
					 | 
					 | 
					 | 
					func (d *Driver) copyLogs(ctx context.Context, l progress.SubLogger) error {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						rc, err := d.DockerAPI.ContainerLogs(ctx, d.Name, types.ContainerLogsOptions{
 | 
					 | 
					 | 
					 | 
						rc, err := d.DockerAPI.ContainerLogs(ctx, d.Name, dockertypes.ContainerLogsOptions{
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							ShowStdout: true, ShowStderr: true,
 | 
					 | 
					 | 
					 | 
							ShowStdout: true, ShowStderr: true,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						})
 | 
					 | 
					 | 
					 | 
						})
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if err != nil {
 | 
					 | 
					 | 
					 | 
						if err != nil {
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -219,7 +228,7 @@ func (d *Driver) copyToContainer(ctx context.Context, files map[string][]byte) e
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					func (d *Driver) exec(ctx context.Context, cmd []string) (string, net.Conn, error) {
 | 
					 | 
					 | 
					 | 
					func (d *Driver) exec(ctx context.Context, cmd []string) (string, net.Conn, error) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						execConfig := types.ExecConfig{
 | 
					 | 
					 | 
					 | 
						execConfig := dockertypes.ExecConfig{
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							Cmd:          cmd,
 | 
					 | 
					 | 
					 | 
							Cmd:          cmd,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							AttachStdin:  true,
 | 
					 | 
					 | 
					 | 
							AttachStdin:  true,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							AttachStdout: true,
 | 
					 | 
					 | 
					 | 
							AttachStdout: true,
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -235,7 +244,7 @@ func (d *Driver) exec(ctx context.Context, cmd []string) (string, net.Conn, erro
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							return "", nil, errors.New("exec ID empty")
 | 
					 | 
					 | 
					 | 
							return "", nil, errors.New("exec ID empty")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						resp, err := d.DockerAPI.ContainerExecAttach(ctx, execID, types.ExecStartCheck{})
 | 
					 | 
					 | 
					 | 
						resp, err := d.DockerAPI.ContainerExecAttach(ctx, execID, dockertypes.ExecStartCheck{})
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if err != nil {
 | 
					 | 
					 | 
					 | 
						if err != nil {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							return "", nil, err
 | 
					 | 
					 | 
					 | 
							return "", nil, err
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -262,7 +271,7 @@ func (d *Driver) run(ctx context.Context, cmd []string, stdout, stderr io.Writer
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					func (d *Driver) start(ctx context.Context, l progress.SubLogger) error {
 | 
					 | 
					 | 
					 | 
					func (d *Driver) start(ctx context.Context, l progress.SubLogger) error {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						return d.DockerAPI.ContainerStart(ctx, d.Name, types.ContainerStartOptions{})
 | 
					 | 
					 | 
					 | 
						return d.DockerAPI.ContainerStart(ctx, d.Name, dockertypes.ContainerStartOptions{})
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					func (d *Driver) Info(ctx context.Context) (*driver.Info, error) {
 | 
					 | 
					 | 
					 | 
					func (d *Driver) Info(ctx context.Context) (*driver.Info, error) {
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
 
 |