Bug 1026045 - enable container networking (temporary solution for dm branch)
Summary: enable container networking (temporary solution for dm branch)
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: docker-io
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Lokesh Mandvekar
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2013-11-03 00:56 UTC by Lokesh Mandvekar
Modified: 2014-07-01 22:59 UTC (History)
10 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2013-11-24 00:40:00 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Lokesh Mandvekar 2013-11-03 00:56:50 UTC
Description of problem: container networking doesn't work by default 


Version-Release number of selected component (if applicable): docker-io 0.7.dm


How reproducible: iiuc, this occurs in the presence of a firewall (Matt, correct me if I'm wrong)


Steps to Reproduce:
1. install docker-io, and enter a container
2. try any command which requires network connections (ping, yum, ssh)
3. feel the pain


Josh has a pull request against the master branch here: https://github.com/dotcloud/docker/pull/2527 which is a little painful to apply against dm, so I used the ACCEPT rules in his patch in the docker.service file, so the current file looks like: 

------------docker.service-------------------
[Unit]
Description=Docker container management daemon

[Service]
Type=simple
ExecStartPre=/usr/sbin/sysctl -w net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1
ExecStartPre=iptables -I FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
ExecStartPre=iptables -l FORWARD -i docker0 ! -o docker0 -j ACCEPT
ExecStart=/usr/bin/docker -d
Restart=on-failure

[Install]
WantedBy=multi-user.target
------------docker.service-------------------

this seems to solve the problem for now, and if I'm not mistaken, isn't harmful. 

Comments?

Comment 1 Lokesh Mandvekar 2013-11-03 03:43:13 UTC
I think I spoke too soon. This unit file doesn't work as expected. I'll get back soon with an update hopefully. Sorry about that.

Comment 2 Lokesh Mandvekar 2013-11-03 04:25:43 UTC
This should work:

[Unit]
Description=Docker container management daemon

[Service]
Type=simple
ExecStartPre=/usr/sbin/sysctl -w net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1
ExecStart=/usr/bin/docker -d
ExecStartPost=/usr/sbin/iptables -I FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
ExecStartPost=/usr/sbin/iptables -I FORWARD -i docker0 ! -o docker0 -j ACCEPT
Restart=on-failure

[Install]
WantedBy=multi-user.target

Comment 3 Peter 2013-11-03 07:12:03 UTC
Lokesh, but what will disable this iptables rules on stop?

Also you've referenced patch and as I see it adds similar functionality into docker. Why these rules are required in unit file?

Comment 4 Lokesh Mandvekar 2013-11-03 17:43:51 UTC
(In reply to Peter from comment #3)
> Lokesh, but what will disable this iptables rules on stop?

Perhaps the disable rules could be added to ExecStopPost in the unit file.
And since it only concerns the docker0 interface, it probably won't mess with anything else.

> 
> Also you've referenced patch and as I see it adds similar functionality into
> docker. Why these rules are required in unit file?

So Josh's patch was for the master branch(which doesn't have devicemapper), but we're using the dm branch. Once Josh's patch makes it into some branch with devicemapper, I'll get rid of those rules in the unit file.

Comment 5 Lokesh Mandvekar 2013-11-03 19:00:39 UTC
(In reply to Lokesh Mandvekar from comment #4)
> (In reply to Peter from comment #3)
> > Lokesh, but what will disable this iptables rules on stop?
> 
> Perhaps the disable rules could be added to ExecStopPost in the unit file.
> And since it only concerns the docker0 interface, it probably won't mess
> with anything else.

s/ExecStopPost/ExecStopPre


Note You need to log in before you can comment on or make changes to this bug.