mirror of https://github.com/docker/docs.git
Windows: libcontainerd cleanup
Signed-off-by: John Howard <jhoward@microsoft.com>
This commit is contained in:
parent
b77573f48e
commit
e331df5aee
|
@ -58,7 +58,6 @@ type natSettings struct {
|
||||||
|
|
||||||
type networkConnection struct {
|
type networkConnection struct {
|
||||||
NetworkName string
|
NetworkName string
|
||||||
//EnableNat bool
|
|
||||||
Nat natSettings
|
Nat natSettings
|
||||||
}
|
}
|
||||||
type networkSettings struct {
|
type networkSettings struct {
|
||||||
|
@ -77,7 +76,7 @@ type mappedDir struct {
|
||||||
ReadOnly bool
|
ReadOnly bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO Windows RTM: @darrenstahlmsft Add ProcessorCount
|
// TODO Windows: @darrenstahlmsft Add ProcessorCount
|
||||||
type containerInit struct {
|
type containerInit struct {
|
||||||
SystemType string // HCS requires this to be hard-coded to "Container"
|
SystemType string // HCS requires this to be hard-coded to "Container"
|
||||||
Name string // Name of the container. We use the docker ID.
|
Name string // Name of the container. We use the docker ID.
|
||||||
|
@ -153,10 +152,13 @@ func (clnt *client) Create(containerID string, spec Spec, options ...CreateOptio
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO Ultimately need to set the path from HvRuntime.ImagePath
|
|
||||||
cu.HvPartition = (spec.Windows.HvRuntime != nil)
|
cu.HvPartition = (spec.Windows.HvRuntime != nil)
|
||||||
|
|
||||||
|
// TODO Windows @jhowardmsft. FIXME post TP5.
|
||||||
// if spec.Windows.HvRuntime != nil {
|
// if spec.Windows.HvRuntime != nil {
|
||||||
// cu.HvPartition = len(spec.Windows.HvRuntime.ImagePath) > 0
|
// if spec.WIndows.HVRuntime.ImagePath != "" {
|
||||||
|
// cu.TBD = spec.Windows.HvRuntime.ImagePath
|
||||||
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
if cu.HvPartition {
|
if cu.HvPartition {
|
||||||
|
@ -498,73 +500,12 @@ func (clnt *client) Stats(containerID string) (*Stats, error) {
|
||||||
|
|
||||||
// Restore is the handler for restoring a container
|
// Restore is the handler for restoring a container
|
||||||
func (clnt *client) Restore(containerID string, unusedOnWindows ...CreateOption) error {
|
func (clnt *client) Restore(containerID string, unusedOnWindows ...CreateOption) error {
|
||||||
|
// TODO Windows: Implement this. For now, just tell the backend the container exited.
|
||||||
logrus.Debugf("lcd Restore %s", containerID)
|
logrus.Debugf("lcd Restore %s", containerID)
|
||||||
return clnt.backend.StateChanged(containerID, StateInfo{
|
return clnt.backend.StateChanged(containerID, StateInfo{
|
||||||
State: StateExit,
|
State: StateExit,
|
||||||
ExitCode: 1 << 31,
|
ExitCode: 1 << 31,
|
||||||
})
|
})
|
||||||
|
|
||||||
// var err error
|
|
||||||
// clnt.lock(containerID)
|
|
||||||
// defer clnt.unlock(containerID)
|
|
||||||
|
|
||||||
// logrus.Debugf("restore container %s state %s", containerID)
|
|
||||||
|
|
||||||
// if _, err := clnt.getContainer(containerID); err == nil {
|
|
||||||
// return fmt.Errorf("container %s is aleady active", containerID)
|
|
||||||
// }
|
|
||||||
|
|
||||||
// defer func() {
|
|
||||||
// if err != nil {
|
|
||||||
// clnt.deleteContainer(containerID)
|
|
||||||
// }
|
|
||||||
// }()
|
|
||||||
|
|
||||||
// // ====> BUGBUG Where does linux get the pid from systemPid: pid,
|
|
||||||
// container := &container{
|
|
||||||
// containerCommon: containerCommon{
|
|
||||||
// process: process{
|
|
||||||
// processCommon: processCommon{
|
|
||||||
// containerID: containerID,
|
|
||||||
// client: clnt,
|
|
||||||
// friendlyName: InitFriendlyName,
|
|
||||||
// },
|
|
||||||
// },
|
|
||||||
// processes: make(map[string]*process),
|
|
||||||
// },
|
|
||||||
// }
|
|
||||||
|
|
||||||
// container.systemPid = systemPid(cont)
|
|
||||||
|
|
||||||
// var terminal bool
|
|
||||||
// for _, p := range cont.Processes {
|
|
||||||
// if p.Pid == InitFriendlyName {
|
|
||||||
// terminal = p.Terminal
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// iopipe, err := container.openFifos(terminal)
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if err := clnt.backend.AttachStreams(containerID, *iopipe); err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
|
|
||||||
// clnt.appendContainer(container)
|
|
||||||
|
|
||||||
// err = clnt.backend.StateChanged(containerID, StateInfo{
|
|
||||||
// State: StateRestore,
|
|
||||||
// Pid: container.systemPid,
|
|
||||||
// })
|
|
||||||
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
|
|
||||||
// return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetPidsForContainers is not implemented on Windows.
|
// GetPidsForContainers is not implemented on Windows.
|
||||||
|
@ -572,6 +513,7 @@ func (clnt *client) GetPidsForContainer(containerID string) ([]int, error) {
|
||||||
return nil, errors.New("GetPidsForContainer: GetPidsForContainer() not implemented")
|
return nil, errors.New("GetPidsForContainer: GetPidsForContainer() not implemented")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UpdateResources updates resources for a running container.
|
||||||
func (clnt *client) UpdateResources(containerID string, resources Resources) error {
|
func (clnt *client) UpdateResources(containerID string, resources Resources) error {
|
||||||
// Updating resource isn't supported on Windows
|
// Updating resource isn't supported on Windows
|
||||||
// but we should return nil for enabling updating container
|
// but we should return nil for enabling updating container
|
||||||
|
|
|
@ -4,11 +4,11 @@ import (
|
||||||
"io"
|
"io"
|
||||||
)
|
)
|
||||||
|
|
||||||
// process keeps the state for both main container process and exec process.
|
|
||||||
|
|
||||||
// process keeps the state for both main container process and exec process.
|
// process keeps the state for both main container process and exec process.
|
||||||
type process struct {
|
type process struct {
|
||||||
processCommon
|
processCommon
|
||||||
|
|
||||||
|
// Platform specific fields are below here. There are none presently on Windows.
|
||||||
}
|
}
|
||||||
|
|
||||||
func openReaderFromPipe(p io.ReadCloser) io.Reader {
|
func openReaderFromPipe(p io.ReadCloser) io.Reader {
|
||||||
|
|
|
@ -16,13 +16,12 @@ func (r *remote) Client(b Backend) (Client, error) {
|
||||||
return c, nil
|
return c, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cleanup is a no-op on Windows. It is here to implement the same interface
|
// Cleanup is a no-op on Windows. It is here to implement the interface.
|
||||||
// to meet compilation requirements.
|
|
||||||
func (r *remote) Cleanup() {
|
func (r *remote) Cleanup() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// New creates a fresh instance of libcontainerd remote. This is largely
|
// New creates a fresh instance of libcontainerd remote. On Windows,
|
||||||
// a no-op on Windows.
|
// this is not used as there is no remote containerd process.
|
||||||
func New(_ string, _ ...RemoteOption) (Remote, error) {
|
func New(_ string, _ ...RemoteOption) (Remote, error) {
|
||||||
return &remote{}, nil
|
return &remote{}, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package windowsoci
|
package windowsoci
|
||||||
|
|
||||||
// This file is a hack - essentially a mirror of OCI spec for Windows.
|
// This file contains the Windows spec for a container. At the time of
|
||||||
|
// writing, Windows does not have a spec defined in opencontainers/specs,
|
||||||
|
// hence this is an interim workaround. TODO Windows: FIXME @jhowardmsft
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
Loading…
Reference in New Issue