diff --git a/daemon/errors.go b/daemon/errors.go index cd8de4dc7d..9a9d45598d 100644 --- a/daemon/errors.go +++ b/daemon/errors.go @@ -64,6 +64,17 @@ func errExecPaused(id string) error { return stateConflictError{cause} } +type nameConflictError struct { + id string + name string +} + +func (e nameConflictError) Error() string { + return fmt.Sprintf("Conflict. The container name %q is already in use by container %q. You have to remove (or rename) that container to be able to reuse that name.", e.name, e.id) +} + +func (nameConflictError) Conflict() {} + type validationError struct { cause error } diff --git a/daemon/names.go b/daemon/names.go index 712df9fd0f..3ef96b1cdc 100644 --- a/daemon/names.go +++ b/daemon/names.go @@ -69,7 +69,7 @@ func (daemon *Daemon) reserveName(id, name string) (string, error) { logrus.Errorf("got unexpected error while looking up reserved name: %v", err) return "", err } - return "", validationError{errors.Errorf("Conflict. The container name %q is already in use by container %q. You have to remove (or rename) that container to be able to reuse that name.", name, id)} + return "", nameConflictError{id: id, name: name} } return "", errors.Wrapf(err, "error reserving name: %q", name) }