Merge pull request #1982 from weaveworks/issues/578-pid-equals-host

Use --pid=host
This commit is contained in:
Bryan Boreham committed 2016-03-01 12:41:52 -08:00
commit f2ef5e880a
8 files changed
+18 -40

No files matched your search

+6 -7
View File
@@ -1,7 +1,6 @@
package common
import (
"fmt"
"github.com/vishvananda/netlink"
"github.com/vishvananda/netns"
"net"
@@ -49,10 +48,10 @@ type NetDev struct {
}
// Search the network namespace of a process for interfaces matching a predicate
func FindNetDevs(procPath string, processID int, match func(string) bool) ([]NetDev, error) {
func FindNetDevs(processID int, match func(string) bool) ([]NetDev, error) {
var netDevs []NetDev
ns, err := netns.GetFromPath(fmt.Sprintf("%s/%d/ns/net", procPath, processID))
ns, err := netns.GetFromPid(processID)
if err != nil {
return nil, err
}
@@ -84,15 +83,15 @@ func FindNetDevs(procPath string, processID int, match func(string) bool) ([]Net
}
// Lookup the weave interface of a container
func GetWeaveNetDevs(procPath string, processID int) ([]NetDev, error) {
return FindNetDevs(procPath, processID, func(name string) bool {
func GetWeaveNetDevs(processID int) ([]NetDev, error) {
return FindNetDevs(processID, func(name string) bool {
return strings.HasPrefix(name, "ethwe")
})
}
// Get the weave bridge interface
func GetBridgeNetDev(procPath, bridgeName string) ([]NetDev, error) {
return FindNetDevs(procPath, 1, func(name string) bool {
func GetBridgeNetDev(bridgeName string) ([]NetDev, error) {
return FindNetDevs(1, func(name string) bool {
return name == bridgeName
})
}
-1
View File
@@ -68,7 +68,6 @@ func main() {
c.Image = getenv("EXEC_IMAGE", "weaveworks/weaveexec")
c.DockerBridge = getenv("DOCKER_BRIDGE", "docker0")
c.DockerHost = getenv("DOCKER_HOST", "unix:///var/run/docker.sock")
c.ProcPath = getenv("PROCFS", "/proc")
p, err := proxy.NewProxy(c)
if err != nil {
+4 -6
View File
@@ -12,15 +12,13 @@ func containerAddrs(args []string) error {
}
bridgeName := args[0]
procPath := procDir()
c, err := docker.NewVersionedClientFromEnv("1.18")
if err != nil {
return err
}
for _, containerID := range args[1:] {
netDevs, err := getNetDevs(procPath, bridgeName, c, containerID)
netDevs, err := getNetDevs(bridgeName, c, containerID)
if err != nil {
if _, ok := err.(*docker.NoSuchContainer); ok {
continue
@@ -41,9 +39,9 @@ func containerAddrs(args []string) error {
return nil
}
func getNetDevs(procPath, bridgeName string, c *docker.Client, containerID string) ([]common.NetDev, error) {
func getNetDevs(bridgeName string, c *docker.Client, containerID string) ([]common.NetDev, error) {
if containerID == "weave:expose" {
return common.GetBridgeNetDev(procPath, bridgeName)
return common.GetBridgeNetDev(bridgeName)
}
container, err := c.InspectContainer(containerID)
@@ -51,5 +49,5 @@ func getNetDevs(procPath, bridgeName string, c *docker.Client, containerID strin
return nil, err
}
return common.GetWeaveNetDevs(procPath, container.State.Pid)
return common.GetWeaveNetDevs(container.State.Pid)
}
+1 -3
View File
@@ -1,6 +1,4 @@
// docker_tls_args: find the docker daemon's tls args
// This reimplements pgrep, because pgrep will only look in /proc, but not in
// $PROCFS.
package main
import (
@@ -16,7 +14,7 @@ func dockerTLSArgs(args []string) error {
if len(args) > 0 {
cmdUsage("docker-tls-args", "")
}
procRoot := procDir()
procRoot := "/proc"
dirEntries, err := ioutil.ReadDir(procRoot)
if err != nil {
return err
-8
View File
@@ -60,11 +60,3 @@ func cmdUsage(cmd string, usage string) {
fmt.Fprintf(os.Stderr, "usage: weaveutil %s %s\n", cmd, usage)
os.Exit(1)
}
func procDir() string {
procDir := os.Getenv("PROCFS")
if procDir == "" {
procDir = "/proc"
}
return procDir
}
-1
View File
@@ -27,7 +27,6 @@ func callWeave(args ...string) ([]byte, []byte, error) {
cmd := exec.Command("./weave", args...)
cmd.Env = []string{
"PATH=/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"PROCFS=/hostproc",
}
propagateEnv := func(key string) {
+2 -3
View File
@@ -64,7 +64,6 @@ type Config struct {
NoMulticastRoute bool
DockerBridge string
DockerHost string
ProcPath string
}
type wait struct {
@@ -149,7 +148,7 @@ func NewProxy(c Config) (*Proxy, error) {
p.client = client.Client
if !p.WithoutDNS {
netDevs, err := GetBridgeNetDev(c.ProcPath, c.DockerBridge)
netDevs, err := GetBridgeNetDev(c.DockerBridge)
if err != nil {
return nil, err
}
@@ -583,7 +582,7 @@ func (proxy *Proxy) updateContainerNetworkSettings(container jsonObject) error {
if err := proxy.waitForStartByIdent(containerID); err != nil {
return err
}
netDevs, err := GetWeaveNetDevs(proxy.ProcPath, pid)
netDevs, err := GetWeaveNetDevs(pid)
if err != nil || len(netDevs) == 0 || len(netDevs[0].CIDRs) == 0 {
return err
}
+5 -11
View File
@@ -110,9 +110,7 @@ docker_sock_options() {
}
exec_remote() {
docker $DOCKER_CLIENT_ARGS run --rm --privileged --net=host $(docker_sock_options) \
-v /proc:/hostproc \
-e PROCFS=/hostproc \
docker $DOCKER_CLIENT_ARGS run --rm --privileged --net=host --pid=host $(docker_sock_options) \
-e DOCKERHUB_USER="$DOCKERHUB_USER" \
-e WEAVE_VERSION \
-e WEAVE_DEBUG \
@@ -342,7 +340,6 @@ PLUGIN_IMAGE=$BASE_PLUGIN_IMAGE:$IMAGE_VERSION
PLUGIN_CONTAINER_NAME=weaveplugin
VOLUMES_CONTAINER_NAME=weavevolumes-$IMAGE_VERSION
PROCFS=${PROCFS:-/proc}
DOCKER_BRIDGE=${DOCKER_BRIDGE:-docker0}
CONTAINER_NAME=${WEAVE_CONTAINER_NAME:-weave}
BRIDGE=weave
@@ -466,8 +463,7 @@ util_op() {
if command_exists weaveutil ; then
weaveutil "$@"
else
docker run --rm --privileged --net=host $(docker_sock_options) \
-v /proc:/hostproc -e PROCFS=/hostproc \
docker run --rm --privileged --net=host --pid=host $(docker_sock_options) \
--entrypoint=/usr/bin/weaveutil $EXEC_IMAGE "$@"
fi
}
@@ -746,7 +742,7 @@ with_container_netns() {
exit 1
fi
CONTAINER_NETNS=$PROCFS/$CONTAINER_PID/ns/net
CONTAINER_NETNS=/proc/$CONTAINER_PID/ns/net
LOCAL_IFNAME="v${CONTAINER_IFNAME}pl${CONTAINER_PID}"
GUEST_IFNAME="v${CONTAINER_IFNAME}pg${CONTAINER_PID}"
IP_TMPOUT=/tmp/weave_ip_out_$$
@@ -758,7 +754,7 @@ with_container_netns() {
shift 1
if ! "$@" >$IP_TMPOUT 2>$IP_TMPERR ; then
STATUS=1
if [ ! -d $PROCFS/$CONTAINER_PID ] ; then
if [ ! -d /proc/$CONTAINER_PID ] ; then
echo "Container $CONTAINER died" >&2
else
echo "Failure during network configuration for container $CONTAINER:" >&2
@@ -1678,12 +1674,10 @@ launch_proxy() {
--label=weavevolumes --entrypoint=/bin/false $EXEC_IMAGE >/dev/null
fi
start_if_necessary proxy $PROXY_CONTAINER_NAME $EXEC_IMAGE \
--privileged --net=host $(docker_sock_options) \
--privileged --net=host --pid=host $(docker_sock_options) \
$PROXY_VOLUMES \
--volumes-from $VOLUMES_CONTAINER_NAME \
-v /var/run/weave:/var/run/weave \
-v /proc:/hostproc \
-e PROCFS=/hostproc \
-e DOCKER_BRIDGE \
-e WEAVE_DEBUG \
-e COVERAGE \