|
@@ -61,15 +61,19 @@ func (daemon *Daemon) setupLinkedContainers(container *container.Container) ([]s
|
|
|
|
|
|
func (daemon *Daemon) getIpcContainer(id string) (*container.Container, error) {
|
|
|
errMsg := "can't join IPC of container " + id
|
|
|
- // Check the container exists
|
|
|
+
|
|
|
+ // Check if the container exists, is running, and not restarting
|
|
|
ctr, err := daemon.GetContainer(id)
|
|
|
if err != nil {
|
|
|
return nil, errors.Wrap(err, errMsg)
|
|
|
}
|
|
|
- // Check the container is running and not restarting
|
|
|
- if err := daemon.checkContainer(ctr, containerIsRunning, containerIsNotRestarting); err != nil {
|
|
|
- return nil, errors.Wrap(err, errMsg)
|
|
|
+ if !ctr.IsRunning() {
|
|
|
+ return nil, errNotRunning(id)
|
|
|
}
|
|
|
+ if ctr.IsRestarting() {
|
|
|
+ return nil, errContainerIsRestarting(id)
|
|
|
+ }
|
|
|
+
|
|
|
// Check the container ipc is shareable
|
|
|
if st, err := os.Stat(ctr.ShmPath); err != nil || !st.IsDir() {
|
|
|
if err == nil || os.IsNotExist(err) {
|
|
@@ -83,26 +87,19 @@ func (daemon *Daemon) getIpcContainer(id string) (*container.Container, error) {
|
|
|
}
|
|
|
|
|
|
func (daemon *Daemon) getPidContainer(ctr *container.Container) (*container.Container, error) {
|
|
|
- containerID := ctr.HostConfig.PidMode.Container()
|
|
|
- ctr, err := daemon.GetContainer(containerID)
|
|
|
+ id := ctr.HostConfig.PidMode.Container()
|
|
|
+ ctr, err := daemon.GetContainer(id)
|
|
|
if err != nil {
|
|
|
- return nil, errors.Wrapf(err, "cannot join PID of a non running container: %s", containerID)
|
|
|
+ return nil, errors.Wrapf(err, "cannot join PID of a non running container: %s", id)
|
|
|
}
|
|
|
- return ctr, daemon.checkContainer(ctr, containerIsRunning, containerIsNotRestarting)
|
|
|
-}
|
|
|
-
|
|
|
-func containerIsRunning(c *container.Container) error {
|
|
|
- if !c.IsRunning() {
|
|
|
- return errdefs.Conflict(errors.Errorf("container %s is not running", c.ID))
|
|
|
+ if !ctr.IsRunning() {
|
|
|
+ return nil, errNotRunning(id)
|
|
|
}
|
|
|
- return nil
|
|
|
-}
|
|
|
-
|
|
|
-func containerIsNotRestarting(c *container.Container) error {
|
|
|
- if c.IsRestarting() {
|
|
|
- return errContainerIsRestarting(c.ID)
|
|
|
+ if ctr.IsRestarting() {
|
|
|
+ return nil, errContainerIsRestarting(id)
|
|
|
}
|
|
|
- return nil
|
|
|
+
|
|
|
+ return ctr, nil
|
|
|
}
|
|
|
|
|
|
func (daemon *Daemon) setupIpcDirs(c *container.Container) error {
|