Signed-off-by: Vincent Demeester <vincent@sbr.pm>
| ... | ... |
@@ -4,7 +4,6 @@ import ( |
| 4 | 4 |
"bytes" |
| 5 | 5 |
"crypto/tls" |
| 6 | 6 |
"encoding/json" |
| 7 |
- "errors" |
|
| 8 | 7 |
"fmt" |
| 9 | 8 |
"io" |
| 10 | 9 |
"io/ioutil" |
| ... | ... |
@@ -29,6 +28,7 @@ import ( |
| 29 | 29 |
"github.com/docker/go-connections/sockets" |
| 30 | 30 |
"github.com/docker/go-connections/tlsconfig" |
| 31 | 31 |
"github.com/go-check/check" |
| 32 |
+ "github.com/pkg/errors" |
|
| 32 | 33 |
) |
| 33 | 34 |
|
| 34 | 35 |
// SockRoot holds the path of the default docker integration daemon socket |
| ... | ... |
@@ -43,9 +43,6 @@ type Daemon struct {
|
| 43 | 43 |
UseDefaultHost bool |
| 44 | 44 |
UseDefaultTLSHost bool |
| 45 | 45 |
|
| 46 |
- // FIXME(vdemeester) either should be used everywhere (do not return error) or nowhere, |
|
| 47 |
- // so I think we should remove it or use it for everything |
|
| 48 |
- c *check.C |
|
| 49 | 46 |
id string |
| 50 | 47 |
logFile *os.File |
| 51 | 48 |
stdin io.WriteCloser |
| ... | ... |
@@ -97,7 +94,6 @@ func New(c *check.C, dockerBinary string, dockerdBinary string, config Config) * |
| 97 | 97 |
|
| 98 | 98 |
return &Daemon{
|
| 99 | 99 |
id: id, |
| 100 |
- c: c, |
|
| 101 | 100 |
Folder: daemonFolder, |
| 102 | 101 |
Root: daemonRoot, |
| 103 | 102 |
storageDriver: os.Getenv("DOCKER_GRAPHDRIVER"),
|
| ... | ... |
@@ -164,7 +160,9 @@ func (d *Daemon) getClientConfig() (*clientConfig, error) {
|
| 164 | 164 |
transport = &http.Transport{}
|
| 165 | 165 |
} |
| 166 | 166 |
|
| 167 |
- d.c.Assert(sockets.ConfigureTransport(transport, proto, addr), check.IsNil) |
|
| 167 |
+ if err := sockets.ConfigureTransport(transport, proto, addr); err != nil {
|
|
| 168 |
+ return nil, err |
|
| 169 |
+ } |
|
| 168 | 170 |
|
| 169 | 171 |
return &clientConfig{
|
| 170 | 172 |
transport: transport, |
| ... | ... |
@@ -177,7 +175,9 @@ func (d *Daemon) getClientConfig() (*clientConfig, error) {
|
| 177 | 177 |
// You can specify additional daemon flags. |
| 178 | 178 |
func (d *Daemon) Start(args ...string) error {
|
| 179 | 179 |
logFile, err := os.OpenFile(filepath.Join(d.Folder, "docker.log"), os.O_RDWR|os.O_CREATE|os.O_APPEND, 0600) |
| 180 |
- d.c.Assert(err, check.IsNil, check.Commentf("[%s] Could not create %s/docker.log", d.id, d.Folder))
|
|
| 180 |
+ if err != nil {
|
|
| 181 |
+ return errors.Wrapf(err, "[%s] Could not create %s/docker.log", d.id, d.Folder) |
|
| 182 |
+ } |
|
| 181 | 183 |
|
| 182 | 184 |
return d.StartWithLogFile(logFile, args...) |
| 183 | 185 |
} |
| ... | ... |
@@ -185,7 +185,9 @@ func (d *Daemon) Start(args ...string) error {
|
| 185 | 185 |
// StartWithLogFile will start the daemon and attach its streams to a given file. |
| 186 | 186 |
func (d *Daemon) StartWithLogFile(out *os.File, providedArgs ...string) error {
|
| 187 | 187 |
dockerdBinary, err := exec.LookPath(d.dockerdBinary) |
| 188 |
- d.c.Assert(err, check.IsNil, check.Commentf("[%s] could not find docker binary in $PATH", d.id))
|
|
| 188 |
+ if err != nil {
|
|
| 189 |
+ return errors.Wrapf(err, "[%s] could not find docker binary in $PATH", d.id) |
|
| 190 |
+ } |
|
| 189 | 191 |
|
| 190 | 192 |
args := append(d.GlobalFlags, |
| 191 | 193 |
"--containerd", "/var/run/docker/libcontainerd/docker-containerd.sock", |
| ... | ... |
@@ -231,14 +233,14 @@ func (d *Daemon) StartWithLogFile(out *os.File, providedArgs ...string) error {
|
| 231 | 231 |
d.logFile = out |
| 232 | 232 |
|
| 233 | 233 |
if err := d.cmd.Start(); err != nil {
|
| 234 |
- return fmt.Errorf("[%s] could not start daemon container: %v", d.id, err)
|
|
| 234 |
+ return errors.Errorf("[%s] could not start daemon container: %v", d.id, err)
|
|
| 235 | 235 |
} |
| 236 | 236 |
|
| 237 | 237 |
wait := make(chan error) |
| 238 | 238 |
|
| 239 | 239 |
go func() {
|
| 240 | 240 |
wait <- d.cmd.Wait() |
| 241 |
- d.c.Logf("[%s] exiting daemon", d.id)
|
|
| 241 |
+ fmt.Printf("[%s] exiting daemon\n", d.id)
|
|
| 242 | 242 |
close(wait) |
| 243 | 243 |
}() |
| 244 | 244 |
|
| ... | ... |
@@ -248,14 +250,14 @@ func (d *Daemon) StartWithLogFile(out *os.File, providedArgs ...string) error {
|
| 248 | 248 |
// make sure daemon is ready to receive requests |
| 249 | 249 |
startTime := time.Now().Unix() |
| 250 | 250 |
for {
|
| 251 |
- d.c.Logf("[%s] waiting for daemon to start", d.id)
|
|
| 251 |
+ fmt.Printf("[%s] waiting for daemon to start\n", d.id)
|
|
| 252 | 252 |
if time.Now().Unix()-startTime > 5 {
|
| 253 | 253 |
// After 5 seconds, give up |
| 254 |
- return fmt.Errorf("[%s] Daemon exited and never started", d.id)
|
|
| 254 |
+ return errors.Errorf("[%s] Daemon exited and never started", d.id)
|
|
| 255 | 255 |
} |
| 256 | 256 |
select {
|
| 257 | 257 |
case <-time.After(2 * time.Second): |
| 258 |
- return fmt.Errorf("[%s] timeout: daemon does not respond", d.id)
|
|
| 258 |
+ return errors.Errorf("[%s] timeout: daemon does not respond", d.id)
|
|
| 259 | 259 |
case <-tick: |
| 260 | 260 |
clientConfig, err := d.getClientConfig() |
| 261 | 261 |
if err != nil {
|
| ... | ... |
@@ -267,7 +269,9 @@ func (d *Daemon) StartWithLogFile(out *os.File, providedArgs ...string) error {
|
| 267 | 267 |
} |
| 268 | 268 |
|
| 269 | 269 |
req, err := http.NewRequest("GET", "/_ping", nil)
|
| 270 |
- d.c.Assert(err, check.IsNil, check.Commentf("[%s] could not create new request", d.id))
|
|
| 270 |
+ if err != nil {
|
|
| 271 |
+ return errors.Wrapf(err, "[%s] could not create new request", d.id) |
|
| 272 |
+ } |
|
| 271 | 273 |
req.URL.Host = clientConfig.addr |
| 272 | 274 |
req.URL.Scheme = clientConfig.scheme |
| 273 | 275 |
resp, err := client.Do(req) |
| ... | ... |
@@ -275,16 +279,16 @@ func (d *Daemon) StartWithLogFile(out *os.File, providedArgs ...string) error {
|
| 275 | 275 |
continue |
| 276 | 276 |
} |
| 277 | 277 |
if resp.StatusCode != http.StatusOK {
|
| 278 |
- d.c.Logf("[%s] received status != 200 OK: %s", d.id, resp.Status)
|
|
| 278 |
+ fmt.Printf("[%s] received status != 200 OK: %s\n", d.id, resp.Status)
|
|
| 279 | 279 |
} |
| 280 |
- d.c.Logf("[%s] daemon started", d.id)
|
|
| 280 |
+ fmt.Printf("[%s] daemon started\n", d.id)
|
|
| 281 | 281 |
d.Root, err = d.queryRootDir() |
| 282 | 282 |
if err != nil {
|
| 283 |
- return fmt.Errorf("[%s] error querying daemon for root directory: %v", d.id, err)
|
|
| 283 |
+ return errors.Errorf("[%s] error querying daemon for root directory: %v", d.id, err)
|
|
| 284 | 284 |
} |
| 285 | 285 |
return nil |
| 286 | 286 |
case <-d.Wait: |
| 287 |
- return fmt.Errorf("[%s] Daemon exited during startup", d.id)
|
|
| 287 |
+ return errors.Errorf("[%s] Daemon exited during startup", d.id)
|
|
| 288 | 288 |
} |
| 289 | 289 |
} |
| 290 | 290 |
} |
| ... | ... |
@@ -310,7 +314,6 @@ func (d *Daemon) Kill() error {
|
| 310 | 310 |
}() |
| 311 | 311 |
|
| 312 | 312 |
if err := d.cmd.Process.Kill(); err != nil {
|
| 313 |
- d.c.Logf("Could not kill daemon: %v", err)
|
|
| 314 | 313 |
return err |
| 315 | 314 |
} |
| 316 | 315 |
|
| ... | ... |
@@ -367,7 +370,7 @@ func (d *Daemon) Stop() error {
|
| 367 | 367 |
tick := time.Tick(time.Second) |
| 368 | 368 |
|
| 369 | 369 |
if err := d.cmd.Process.Signal(os.Interrupt); err != nil {
|
| 370 |
- return fmt.Errorf("could not send signal: %v", err)
|
|
| 370 |
+ return errors.Errorf("could not send signal: %v", err)
|
|
| 371 | 371 |
} |
| 372 | 372 |
out1: |
| 373 | 373 |
for {
|
| ... | ... |
@@ -376,7 +379,7 @@ out1: |
| 376 | 376 |
return err |
| 377 | 377 |
case <-time.After(20 * time.Second): |
| 378 | 378 |
// time for stopping jobs and run onShutdown hooks |
| 379 |
- d.c.Logf("timeout: %v", d.id)
|
|
| 379 |
+ fmt.Printf("timeout: %v\n", d.id)
|
|
| 380 | 380 |
break out1 |
| 381 | 381 |
} |
| 382 | 382 |
} |
| ... | ... |
@@ -389,18 +392,18 @@ out2: |
| 389 | 389 |
case <-tick: |
| 390 | 390 |
i++ |
| 391 | 391 |
if i > 5 {
|
| 392 |
- d.c.Logf("tried to interrupt daemon for %d times, now try to kill it", i)
|
|
| 392 |
+ fmt.Printf("tried to interrupt daemon for %d times, now try to kill it\n", i)
|
|
| 393 | 393 |
break out2 |
| 394 | 394 |
} |
| 395 |
- d.c.Logf("Attempt #%d: daemon is still running with pid %d", i, d.cmd.Process.Pid)
|
|
| 395 |
+ fmt.Printf("Attempt #%d: daemon is still running with pid %d\n", i, d.cmd.Process.Pid)
|
|
| 396 | 396 |
if err := d.cmd.Process.Signal(os.Interrupt); err != nil {
|
| 397 |
- return fmt.Errorf("could not send signal: %v", err)
|
|
| 397 |
+ return errors.Errorf("could not send signal: %v", err)
|
|
| 398 | 398 |
} |
| 399 | 399 |
} |
| 400 | 400 |
} |
| 401 | 401 |
|
| 402 | 402 |
if err := d.cmd.Process.Kill(); err != nil {
|
| 403 |
- d.c.Logf("Could not kill daemon: %v", err)
|
|
| 403 |
+ fmt.Printf("Could not kill daemon: %v\n", err)
|
|
| 404 | 404 |
return err |
| 405 | 405 |
} |
| 406 | 406 |
|
| ... | ... |
@@ -430,20 +433,20 @@ func (d *Daemon) LoadBusybox() error {
|
| 430 | 430 |
bb := filepath.Join(d.Folder, "busybox.tar") |
| 431 | 431 |
if _, err := os.Stat(bb); err != nil {
|
| 432 | 432 |
if !os.IsNotExist(err) {
|
| 433 |
- return fmt.Errorf("unexpected error on busybox.tar stat: %v", err)
|
|
| 433 |
+ return errors.Errorf("unexpected error on busybox.tar stat: %v", err)
|
|
| 434 | 434 |
} |
| 435 | 435 |
// saving busybox image from main daemon |
| 436 | 436 |
if out, err := exec.Command(d.dockerBinary, "save", "--output", bb, "busybox:latest").CombinedOutput(); err != nil {
|
| 437 | 437 |
imagesOut, _ := exec.Command(d.dockerBinary, "images", "--format", "{{ .Repository }}:{{ .Tag }}").CombinedOutput()
|
| 438 |
- return fmt.Errorf("could not save busybox image: %s\n%s", string(out), strings.TrimSpace(string(imagesOut)))
|
|
| 438 |
+ return errors.Errorf("could not save busybox image: %s\n%s", string(out), strings.TrimSpace(string(imagesOut)))
|
|
| 439 | 439 |
} |
| 440 | 440 |
} |
| 441 | 441 |
// loading busybox image to this daemon |
| 442 | 442 |
if out, err := d.Cmd("load", "--input", bb); err != nil {
|
| 443 |
- return fmt.Errorf("could not load busybox image: %s", out)
|
|
| 443 |
+ return errors.Errorf("could not load busybox image: %s", out)
|
|
| 444 | 444 |
} |
| 445 | 445 |
if err := os.Remove(bb); err != nil {
|
| 446 |
- d.c.Logf("could not remove %s: %v", bb, err)
|
|
| 446 |
+ return err |
|
| 447 | 447 |
} |
| 448 | 448 |
return nil |
| 449 | 449 |
} |
| ... | ... |
@@ -596,7 +599,7 @@ func (d *Daemon) inspectFilter(name, filter string) (string, error) {
|
| 596 | 596 |
format := fmt.Sprintf("{{%s}}", filter)
|
| 597 | 597 |
out, err := d.Cmd("inspect", "-f", format, name)
|
| 598 | 598 |
if err != nil {
|
| 599 |
- return "", fmt.Errorf("failed to inspect %s: %s", name, out)
|
|
| 599 |
+ return "", errors.Errorf("failed to inspect %s: %s", name, out)
|
|
| 600 | 600 |
} |
| 601 | 601 |
return strings.TrimSpace(out), nil |
| 602 | 602 |
} |
| ... | ... |
@@ -606,13 +609,12 @@ func (d *Daemon) inspectFieldWithError(name, field string) (string, error) {
|
| 606 | 606 |
} |
| 607 | 607 |
|
| 608 | 608 |
// FindContainerIP returns the ip of the specified container |
| 609 |
-// FIXME(vdemeester) should probably erroring out |
|
| 610 |
-func (d *Daemon) FindContainerIP(id string) string {
|
|
| 611 |
- out, err := d.Cmd("inspect", fmt.Sprintf("--format='{{ .NetworkSettings.Networks.bridge.IPAddress }}'"), id)
|
|
| 609 |
+func (d *Daemon) FindContainerIP(id string) (string, error) {
|
|
| 610 |
+ out, err := d.Cmd("inspect", "--format='{{ .NetworkSettings.Networks.bridge.IPAddress }}'", id)
|
|
| 612 | 611 |
if err != nil {
|
| 613 |
- d.c.Log(err) |
|
| 612 |
+ return "", err |
|
| 614 | 613 |
} |
| 615 |
- return strings.Trim(out, " \r\n'") |
|
| 614 |
+ return strings.Trim(out, " \r\n'"), nil |
|
| 616 | 615 |
} |
| 617 | 616 |
|
| 618 | 617 |
// BuildImageWithOut builds an image with the specified dockerfile and options and returns the output |
| ... | ... |
@@ -642,7 +644,7 @@ func (d *Daemon) CheckActiveContainerCount(c *check.C) (interface{}, check.Comme
|
| 642 | 642 |
// ReloadConfig asks the daemon to reload its configuration |
| 643 | 643 |
func (d *Daemon) ReloadConfig() error {
|
| 644 | 644 |
if d.cmd == nil || d.cmd.Process == nil {
|
| 645 |
- return fmt.Errorf("daemon is not running")
|
|
| 645 |
+ return errors.New("daemon is not running")
|
|
| 646 | 646 |
} |
| 647 | 647 |
|
| 648 | 648 |
errCh := make(chan error) |
| ... | ... |
@@ -674,15 +676,15 @@ func (d *Daemon) ReloadConfig() error {
|
| 674 | 674 |
|
| 675 | 675 |
<-started |
| 676 | 676 |
if err := signalDaemonReload(d.cmd.Process.Pid); err != nil {
|
| 677 |
- return fmt.Errorf("error signaling daemon reload: %v", err)
|
|
| 677 |
+ return errors.Errorf("error signaling daemon reload: %v", err)
|
|
| 678 | 678 |
} |
| 679 | 679 |
select {
|
| 680 | 680 |
case err := <-errCh: |
| 681 | 681 |
if err != nil {
|
| 682 |
- return fmt.Errorf("error waiting for daemon reload event: %v", err)
|
|
| 682 |
+ return errors.Errorf("error waiting for daemon reload event: %v", err)
|
|
| 683 | 683 |
} |
| 684 | 684 |
case <-time.After(30 * time.Second): |
| 685 |
- return fmt.Errorf("timeout waiting for daemon reload event")
|
|
| 685 |
+ return errors.New("timeout waiting for daemon reload event")
|
|
| 686 | 686 |
} |
| 687 | 687 |
return nil |
| 688 | 688 |
} |
| ... | ... |
@@ -697,7 +699,7 @@ func WaitInspectWithArgs(dockerBinary, name, expr, expected string, timeout time |
| 697 | 697 |
result := icmd.RunCommand(dockerBinary, args...) |
| 698 | 698 |
if result.Error != nil {
|
| 699 | 699 |
if !strings.Contains(result.Stderr(), "No such") {
|
| 700 |
- return fmt.Errorf("error executing docker inspect: %v\n%s",
|
|
| 700 |
+ return errors.Errorf("error executing docker inspect: %v\n%s",
|
|
| 701 | 701 |
result.Stderr(), result.Stdout()) |
| 702 | 702 |
} |
| 703 | 703 |
select {
|
| ... | ... |
@@ -716,7 +718,7 @@ func WaitInspectWithArgs(dockerBinary, name, expr, expected string, timeout time |
| 716 | 716 |
|
| 717 | 717 |
select {
|
| 718 | 718 |
case <-after: |
| 719 |
- return fmt.Errorf("condition \"%q == %q\" not true in time", out, expected)
|
|
| 719 |
+ return errors.Errorf("condition \"%q == %q\" not true in time (%v)", out, expected, timeout)
|
|
| 720 | 720 |
default: |
| 721 | 721 |
} |
| 722 | 722 |
|
| ... | ... |
@@ -750,7 +752,7 @@ func getTLSConfig() (*tls.Config, error) {
|
| 750 | 750 |
dockerCertPath := os.Getenv("DOCKER_CERT_PATH")
|
| 751 | 751 |
|
| 752 | 752 |
if dockerCertPath == "" {
|
| 753 |
- return nil, fmt.Errorf("DOCKER_TLS_VERIFY specified, but no DOCKER_CERT_PATH environment variable")
|
|
| 753 |
+ return nil, errors.New("DOCKER_TLS_VERIFY specified, but no DOCKER_CERT_PATH environment variable")
|
|
| 754 | 754 |
} |
| 755 | 755 |
|
| 756 | 756 |
option := &tlsconfig.Options{
|
| ... | ... |
@@ -770,7 +772,7 @@ func getTLSConfig() (*tls.Config, error) {
|
| 770 | 770 |
func SockConn(timeout time.Duration, daemon string) (net.Conn, error) {
|
| 771 | 771 |
daemonURL, err := url.Parse(daemon) |
| 772 | 772 |
if err != nil {
|
| 773 |
- return nil, fmt.Errorf("could not parse url %q: %v", daemon, err)
|
|
| 773 |
+ return nil, errors.Wrapf(err, "could not parse url %q", daemon) |
|
| 774 | 774 |
} |
| 775 | 775 |
|
| 776 | 776 |
var c net.Conn |
| ... | ... |
@@ -791,14 +793,14 @@ func SockConn(timeout time.Duration, daemon string) (net.Conn, error) {
|
| 791 | 791 |
} |
| 792 | 792 |
return net.DialTimeout(daemonURL.Scheme, daemonURL.Host, timeout) |
| 793 | 793 |
default: |
| 794 |
- return c, fmt.Errorf("unknown scheme %v (%s)", daemonURL.Scheme, daemon)
|
|
| 794 |
+ return c, errors.Errorf("unknown scheme %v (%s)", daemonURL.Scheme, daemon)
|
|
| 795 | 795 |
} |
| 796 | 796 |
} |
| 797 | 797 |
|
| 798 | 798 |
func newRequestClient(method, endpoint string, data io.Reader, ct, daemon string) (*http.Request, *httputil.ClientConn, error) {
|
| 799 | 799 |
c, err := SockConn(time.Duration(10*time.Second), daemon) |
| 800 | 800 |
if err != nil {
|
| 801 |
- return nil, nil, fmt.Errorf("could not dial docker daemon: %v", err)
|
|
| 801 |
+ return nil, nil, errors.Errorf("could not dial docker daemon: %v", err)
|
|
| 802 | 802 |
} |
| 803 | 803 |
|
| 804 | 804 |
client := httputil.NewClientConn(c, nil) |
| ... | ... |
@@ -806,7 +808,7 @@ func newRequestClient(method, endpoint string, data io.Reader, ct, daemon string |
| 806 | 806 |
req, err := http.NewRequest(method, endpoint, data) |
| 807 | 807 |
if err != nil {
|
| 808 | 808 |
client.Close() |
| 809 |
- return nil, nil, fmt.Errorf("could not create new request: %v", err)
|
|
| 809 |
+ return nil, nil, errors.Errorf("could not create new request: %v", err)
|
|
| 810 | 810 |
} |
| 811 | 811 |
|
| 812 | 812 |
if ct != "" {
|
| ... | ... |
@@ -642,7 +642,8 @@ func (s *DockerDaemonSuite) TestDaemonBridgeExternal(c *check.C) {
|
| 642 | 642 |
_, err = d.Cmd("run", "-d", "--name", "ExtContainer", "busybox", "top")
|
| 643 | 643 |
c.Assert(err, check.IsNil) |
| 644 | 644 |
|
| 645 |
- containerIP := d.FindContainerIP("ExtContainer")
|
|
| 645 |
+ containerIP, err := d.FindContainerIP("ExtContainer")
|
|
| 646 |
+ c.Assert(err, checker.IsNil) |
|
| 646 | 647 |
ip := net.ParseIP(containerIP) |
| 647 | 648 |
c.Assert(bridgeIPNet.Contains(ip), check.Equals, true, |
| 648 | 649 |
check.Commentf("Container IP-Address must be in the same subnet range : %s",
|
| ... | ... |
@@ -737,7 +738,8 @@ func (s *DockerDaemonSuite) TestDaemonBridgeIP(c *check.C) {
|
| 737 | 737 |
out, err = d.Cmd("run", "-d", "--name", "test", "busybox", "top")
|
| 738 | 738 |
c.Assert(err, check.IsNil) |
| 739 | 739 |
|
| 740 |
- containerIP := d.FindContainerIP("test")
|
|
| 740 |
+ containerIP, err := d.FindContainerIP("test")
|
|
| 741 |
+ c.Assert(err, checker.IsNil) |
|
| 741 | 742 |
ip = net.ParseIP(containerIP) |
| 742 | 743 |
c.Assert(bridgeIPNet.Contains(ip), check.Equals, true, |
| 743 | 744 |
check.Commentf("Container IP-Address must be in the same subnet range : %s",
|
| ... | ... |
@@ -1047,8 +1049,10 @@ func (s *DockerDaemonSuite) TestDaemonLinksIpTablesRulesWhenLinkAndUnlink(c *che |
| 1047 | 1047 |
_, err = s.d.Cmd("run", "-d", "--name", "parent", "--link", "child:http", "busybox", "top")
|
| 1048 | 1048 |
c.Assert(err, check.IsNil) |
| 1049 | 1049 |
|
| 1050 |
- childIP := s.d.FindContainerIP("child")
|
|
| 1051 |
- parentIP := s.d.FindContainerIP("parent")
|
|
| 1050 |
+ childIP, err := s.d.FindContainerIP("child")
|
|
| 1051 |
+ c.Assert(err, checker.IsNil) |
|
| 1052 |
+ parentIP, err := s.d.FindContainerIP("parent")
|
|
| 1053 |
+ c.Assert(err, checker.IsNil) |
|
| 1052 | 1054 |
|
| 1053 | 1055 |
sourceRule := []string{"-i", bridgeName, "-o", bridgeName, "-p", "tcp", "-s", childIP, "--sport", "80", "-d", parentIP, "-j", "ACCEPT"}
|
| 1054 | 1056 |
destinationRule := []string{"-i", bridgeName, "-o", bridgeName, "-p", "tcp", "-s", parentIP, "--dport", "80", "-d", childIP, "-j", "ACCEPT"}
|
| ... | ... |
@@ -1530,8 +1534,7 @@ func pingContainers(c *check.C, d *daemon.Daemon, expectFailure bool) {
|
| 1530 | 1530 |
func (s *DockerDaemonSuite) TestDaemonRestartWithSocketAsVolume(c *check.C) {
|
| 1531 | 1531 |
c.Assert(s.d.StartWithBusybox(), check.IsNil) |
| 1532 | 1532 |
|
| 1533 |
- // socket := filepath.Join(s.d.folder, "docker.sock") |
|
| 1534 |
- socket := s.d.Sock() |
|
| 1533 |
+ socket := filepath.Join(s.d.Folder, "docker.sock") |
|
| 1535 | 1534 |
|
| 1536 | 1535 |
out, err := s.d.Cmd("run", "--restart=always", "-v", socket+":/sock", "busybox")
|
| 1537 | 1536 |
c.Assert(err, check.IsNil, check.Commentf("Output: %s", out))
|