[proxy] don't kill containers when starting the proxy
This commit is contained in:
1 parent
3f08ddefe9
commit
a0f0367e60
2 files changed
+21
-6
No files matched your search
+15
-6
@@ -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
|
||||
|
||||
Reference in new issue
Block a user