Commit Graph

583 Commits

Author SHA1 Message Date
Rolf Neugebauer
05e3e7262f diagnostics: add more log files and more content from logfiles
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2016-06-07 15:04:17 +01:00
Madhu Venugopal
e95675099f Enabling IPVS kernel configs to support built-in load-balancing
Signed-off-by: Madhu Venugopal <madhu@docker.com>
2016-06-06 15:34:30 -07:00
Justin Cormack
c1d92b81df Merge pull request #177 from justincormack/ipvs
add ipvs conntrack and other missing net options
2016-06-06 23:18:19 +01:00
Justin Cormack
21c16848ad Merge pull request #176 from justincormack/kernelup
update to linux 4.4.12 and aufs 20160530
2016-06-06 23:18:04 +01:00
Justin Cormack
7eef3f032d add ipvs conntrack and other missing net options
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-06-06 23:17:44 +01:00
Dave Scott
4ce0d53f85 Merge pull request #155 from djs55/remove-individual-vsock-proxy
proxy: remove the dynamic vsock port allocation
2016-06-06 23:13:24 +01:00
Justin Cormack
064ad486b1 update to linux 4.4.12 and aufs 20160530
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-06-06 23:05:41 +01:00
Justin Cormack
b6765bb5cd Merge pull request #174 from dsheets/transfused-prepare-mounts
transfused: introduce automatic mount point preparation
2016-06-03 17:33:21 +01:00
David Sheets
4330d389cc transfused: introduce automatic mount point preparation
Mount points are now made dynamically if either the leaf doesn't exist
or the leaf has no children. Any proper prefix of the target mount point may
or may not exist prior to mounting.

Signed-off-by: David Sheets <dsheets@docker.com>
2016-06-03 16:31:49 +01:00
Justin Cormack
1fab4151ef fix #169 only do /tmp bind mount if /Mac/tmp exists
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-06-03 15:15:20 +01:00
Justin Cormack
0e4c154bcf Update docker to 1.11.2+patches
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-06-03 13:27:32 +01:00
Justin Cormack
8a86af7d1e Update to Alpine 3.4
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-06-03 12:45:15 +01:00
Magnus Skjegstad
9c5aee352d also bindmount /tmp once
Signed-off-by: Magnus Skjegstad <magnus@skjegstad.com>
2016-06-03 01:44:11 +01:00
Dave Tucker
202cccd9d9 Remove hupper and mobyconfig watch
Signed-off-by: Dave Tucker <dt@docker.com>
2016-06-02 20:39:25 +01:00
Justin Cormack
2c6ba517e9 fix typo
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-06-02 13:56:20 +01:00
Justin Cormack
e94dff4d11 avoid rebindmounting directories on docker restart
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-06-02 13:18:27 +01:00
Nathan LeClaire
7f7e470eac Add 'bootflag' script to check kernel flags
Signed-off-by: Nathan LeClaire <nathan.leclaire@gmail.com>
2016-06-01 15:30:53 -07:00
Rolf Neugebauer
630e0e4e2e net: add metric to static IP address entries
The VPN interface is configure with a routing metric of 199. If VPN mode
is enabled and we have static IP address configured (which is what we do
on Windows) then all traffic would still go via eth0 and not, as expected,
via the VPN interface.

With this PR we set the metric for eth1 to 200, thus, if VPN mode enabled
traffic will be routed over the VPN interface.

This fix is a bit Uggh, but it's the simplest way to apply this late in the
release cycle without requiring re-run of all OS X tests.

We should fix this properly after this release.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2016-06-01 19:59:58 +01:00
Ian Campbell
98981908b8 Ensure /var/log is bind mounted after transfused starts
Otherwise /Mac$DRIVERDIR does not yet exist.

Signed-off-by: Ian Campbell <ian.campbell@docker.com>
2016-05-31 15:26:41 +01:00
Justin Cormack
6b6dff3222 update diagnostics now tap-vsockd only runs on WIndows
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-05-31 15:07:33 +01:00
Rolf Neugebauer
b557d5d9b7 config: overwrite resolv.conf and interfaces from database
Allow the host to configure a static IP address for eth0 by setting the
following DB keys:
- net/config: "static" (default or not set -> dhcp)
- net/address: IP address
- net/netmask: netmask in dot notation
- net/gateway: default gateway

Also allow overwriting/setting "/etc/resolve.conf" by writing to
the "etc/resolv.conf" key.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2016-05-30 10:01:42 +02:00
Justin Cormack
2c40ed9554 define driverdir in host setting
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-05-27 12:04:49 -07:00
Justin Cormack
3f513f2368 move log mount to hostsettings not docker startup
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-05-27 11:41:46 -07:00
Justin Cormack
50bb644acb Do not try to keep log files, fix #154
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-05-26 14:24:05 -07:00
David Scott
67e9ccafd0 proxy: remove the dynamic vsock port allocation
On both Mac and Windows we have one well-known port and a SOCKS-like
port to tunnel connections through it. This was necessary on Windows
where ports have well-known GUIDs, but we might as well do it the same
way on both platforms for consistency.

This patch removes the dynamic binding of vsock ports, which fails on
a Windows Moby anyway.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-26 17:01:27 +01:00
Dave Scott
e7737c9133 Merge pull request #148 from djs55/port-filesystem
On Hyper-V, mount the /port filesystem
2016-05-26 02:51:39 -07:00
Rolf Neugebauer
5b96452c4c virtsock: update vendored virtosck package
This fixes a bug on WIndows build newer than 10586.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2016-05-23 21:34:38 +01:00
Dave Scott
95d3ac81bf Merge pull request #150 from rneugeba/kernel-patches-update
kernel: update kernel patches
2016-05-23 12:44:08 -07:00
Rolf Neugebauer
e7c2bb3465 Merge pull request #149 from djs55/fix-windows-sharing
Hyper-V: mount the filesystem from the default gateway via eth0
2016-05-23 19:35:03 +01:00
Rolf Neugebauer
9b0eee15f3 kernel: update kernel patches
Added a patch to reduce verbosity of vmbus for unknown GUIDs.
Thes happen on every Hyper-V socket connection.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2016-05-23 19:01:13 +01:00
Dave Scott
190b18c838 Merge pull request #131 from djs55/9pmount-vsock
On Hyper-V, mount the database 9P filesystem
2016-05-23 10:24:59 -07:00
David Scott
6513f33749 Hyper-V: mount the filesystem from the default gateway via eth0
When running in VPN mode eth0 and eth1 have default routes, but
eth1 has the lowest metric. However the host CIFS server can
only be contacted via eth0, so always use the eth0 address.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-23 18:18:32 +01:00
David Scott
9a2148730d On Hyper-V, mount the /port filesystem
This allows localhost port forwards to be requested if

  native/port-forwarding=true

if set.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-22 18:43:07 +01:00
Dave Scott
0d5cc3597c Merge pull request #146 from djs55/port-vsockd
proxy: add a multiplexing server frontend
2016-05-22 04:51:53 -07:00
David Scott
0014546165 proxy: update the 9P protocol
We now tell the 9P server

 proto1:ip1:port1:<address for forwarding>

which means please listen on proto1:ip1:port1, then connect to the port
proxy in Moby and tell it the connection is for <address for forwarding>.

Note this requires a corresponding change in hostnet/vpnkit.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-22 12:43:24 +01:00
David Scott
5090fd9599 proxy: add a multiplexing server frontend
On a Hyper-V system we can only register one listening endpoint (with
a GUID), so we need to accept connections, read a header and then
start the proxy.

If the binary has argv[0] == "proxy-vsockd" then run this new frontend.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-22 12:43:18 +01:00
David Scott
0e5e0bf7f9 tap-vsockd: only try to start on Hyper-V
This avoids an unnecessary boot-up error on non-Hyper-V hosts.

From review comments on #130

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-22 12:12:01 +01:00
David Scott
ddea73d6d2 tap-vsockd: add tap-vsockd service to bring up eth1
The tap-vsockd service is started from eth1's pre-up script.

On the Mac: the bind of the AF_HYPERV socket fails, and eth1 is skipped.
On Windows: if there is no database then eth1 is skipped.
On Windows: if the database has network=native then eth1 is brought up.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 21:58:38 +01:00
David Scott
c1973d38ce mobyconfig: on Hyper-V connect to the db over AF_HYPERV
We detect Hyper-V by the presence of /sys/bus/vmbus and then run the
/sbin/9pmount-vsock command to establish a socket connection and then
pass the fd to /bin/mount

This patch also hard-codes the database directory

  com.docker.driver.amd64-linux

since we can't use the kernel commandline on Hyper-V hosts. It would
probably be better to expose a generic directory name ( / ?) on all
platforms and configure the datbase to store each VM's configuration
in a different directory.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 21:51:11 +01:00
Dave Scott
58204eab91 Merge pull request #145 from djs55/tap-vsockd-tool
tuntap vsock tool
2016-05-21 13:50:03 -07:00
Dave Scott
a0ae0b66ec Merge pull request #144 from djs55/9pmount-vsock-tool
9pmount vsock tool
2016-05-21 13:48:57 -07:00
David Scott
81f6905893 9pmount-vsock: add .gitignore
Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 21:42:52 +01:00
David Scott
b40c691f89 9pmount-vsock: add to /sbin
This patch adds the binary to /sbin but does not hook it up.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 21:41:50 +01:00
David Scott
dbd9fb77fd tap-vsockd: add to /sbin
Install the daemon in /sbin, but don't start it up yet.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 21:15:11 +01:00
David Scott
b72e8de310 tap-vsockd: if the client closes, be prepared to reconnect
In `connect` mode the client looping calling `connect` and `close` on a timer.
This could result in the server accepting the connection and the client accidentally
closing it immediately. This patch makes `tap-vsockd` keep trying to (re-)establish
the connection. Note that daemonization is delayed until after the first successful
negotiation, so attempts to send a packet afterwards should succeed.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 14:51:32 +01:00
David Scott
67bc700af3 tap-vsockd: use stderr rather than syslog if service guid is wrong
Our convention is to print command-line parse failures to the terminal
to allow easier interactive debugging, rather than sending them to
the syslog.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 14:51:32 +01:00
David Scott
1142bbb611 tap-vsockd: remove the Windows compatibility shim
Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 14:51:32 +01:00
David Scott
a493947c9c tap-vsockd: support daemonization via a --daemon arg
We daemonize after checking the command-line and binding/connecting
the socket and creating the tap device. Only the ethernet frame
processing happens afterwards.

This patch also includes a new well-known service GUID for the
VPN-proxy ethernet service.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 14:50:52 +01:00
David Scott
54001a1d06 tap-vsockd: support both connect() and accept()
Older versions of the Linux AF_HVSOCK can only accept() as they
don't allow connections to the parent partition. Support both
modes for now.

Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 14:49:55 +01:00
David Scott
6ad649b77b tap-vsockd: add a --pidfile <pidfile> argument
Signed-off-by: David Scott <dave.scott@docker.com>
2016-05-21 14:49:55 +01:00