[proxy] don't kill containers when starting the proxy

This commit is contained in:
Paul Bellamy committed 2015-10-16 15:33:43 +01:00
1 parent 3f08ddefe9
commit a0f0367e60
2 files changed
+21 -6

No files matched your search

+15 -6
View File
@@ -116,10 +116,16 @@ func NewProxy(c Config) (*Proxy, error) {
func (proxy *Proxy) AttachExistingContainers() {
containers, _ := proxy.client.ListContainers(docker.ListContainersOptions{})
for _, cont := range containers {
if strings.HasPrefix(cont.Command, weaveWaitEntrypoint[0]) {
proxy.ContainerStarted(cont.ID)
for _, apiContainer := range containers {
container, err := proxy.client.InspectContainer(apiContainer.ID)
if err != nil {
Log.Warningf("Error inspecting container %s: %v", apiContainer.ID, err)
continue
}
if containerShouldAttach(container) {
proxy.attach(container, false)
}
proxy.notifyWaiters(container.ID)
}
}
@@ -295,7 +301,7 @@ func (proxy *Proxy) ContainerStarted(ident string) {
}
// If this was a container we modified the entrypoint for, attach it to the network
if containerShouldAttach(container) {
proxy.attach(container)
proxy.attach(container, true)
}
proxy.notifyWaiters(container.ID)
}
@@ -345,7 +351,7 @@ func (proxy *Proxy) waitForStart(r *http.Request) {
func (proxy *Proxy) ContainerDied(ident string) {
}
func (proxy *Proxy) attach(container *docker.Container) error {
func (proxy *Proxy) attach(container *docker.Container, orDie bool) error {
cidrs, err := proxy.weaveCIDRs(container.HostConfig.NetworkMode, container.Config.Env)
if err != nil {
Log.Infof("Leaving container %s alone because %s", container.ID, err)
@@ -357,7 +363,10 @@ func (proxy *Proxy) attach(container *docker.Container) error {
if !proxy.NoRewriteHosts {
args = append(args, "--rewrite-hosts")
}
args = append(args, "--or-die", container.ID)
if orDie {
args = append(args, "--or-die")
}
args = append(args, container.ID)
if _, stderr, err := callWeave(args...); err != nil {
Log.Warningf("Attaching container %s to weave network failed: %s", container.ID, string(stderr))
return errors.New(string(stderr))
@@ -25,6 +25,12 @@ run_on $HOST1 sudo kill -KILL $(docker_on $HOST1 inspect --format='{{.State.Pid}
sleep 1
check_attached
# Restarting proxy shouldn't kill unattachable containers
proxy_start_container $HOST1 -di --name=c3 --restart=always # Use ipam, so it won't be attachable w/o weave
weave_on $HOST1 stop
weave_on $HOST1 launch-proxy
assert_raises "proxy exec_on $HOST1 c3 $CHECK_ETHWE_UP"
# Restart docker itself, using different commands for systemd- and upstart-managed.
run_on $HOST1 sh -c "command -v systemctl >/dev/null && sudo systemctl restart docker || sudo service docker restart"
sleep 1