Skip to content

Commit 4d0b4ff

Browse files
committed
feat: docker setup container logging
1 parent 824c209 commit 4d0b4ff

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

client/main.go

+8-2
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,6 @@ func main() {
5757
os.Exit(ExitSetupFailed)
5858
}
5959

60-
fmt.Printf("Setting up interface %s\n", interfaceName)
61-
6260
links, err := netlink.LinkList()
6361
if err != nil {
6462
fmt.Printf("Could not list links: %v\n", err)
@@ -80,6 +78,8 @@ func main() {
8078
linkAttrs := netlink.NewLinkAttrs()
8179
linkAttrs.Name = interfaceName
8280

81+
fmt.Printf("Creating WireGuard interface %s\n", interfaceName)
82+
8383
wireguard := &netlink.Wireguard{LinkAttrs: linkAttrs}
8484
err = netlink.LinkAdd(wireguard)
8585
if err != nil {
@@ -95,6 +95,8 @@ func main() {
9595
fmt.Printf("Could not parse host peer IPNet: %v\n", err)
9696
}
9797

98+
fmt.Println("Assigning IP to WireGuard interface")
99+
98100
addr := netlink.Addr{IPNet: vmIpNet, Peer: hostIpNet}
99101
netlink.AddrAdd(wireguard, &addr)
100102

@@ -146,6 +148,8 @@ func main() {
146148
},
147149
}
148150

151+
fmt.Println("Configuring WireGuard device")
152+
149153
err = c.ConfigureDevice(interfaceName, wgtypes.Config{
150154
PrivateKey: &vmPrivateKey,
151155
Peers: []wgtypes.PeerConfig{peer},
@@ -167,6 +171,8 @@ func main() {
167171
os.Exit(ExitSetupFailed)
168172
}
169173

174+
fmt.Println("Adding iptables NAT rule for host WireGuard IP")
175+
170176
// Add iptables NAT rule to translate incoming packet's
171177
// source IP to the respective Docker network interface IP.
172178
// Required to route reply packets back through correct

main.go

+23
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"github.com/docker/docker/api/types/container"
1818
"github.com/docker/docker/api/types/filters"
1919
"github.com/docker/docker/client"
20+
"github.com/docker/docker/pkg/stdcopy"
2021
"golang.zx2c4.com/wireguard/conn"
2122
"golang.zx2c4.com/wireguard/device"
2223
"golang.zx2c4.com/wireguard/ipc"
@@ -314,5 +315,27 @@ func setupVm(
314315
return fmt.Errorf("failed to start container: %w", err)
315316
}
316317

318+
func() error {
319+
reader, err := dockerCli.ContainerLogs(ctx, resp.ID, types.ContainerLogsOptions{
320+
ShowStdout: true,
321+
ShowStderr: true,
322+
Follow: true,
323+
})
324+
if err != nil {
325+
return fmt.Errorf("failed to get logs for container %s: %w", resp.ID, err)
326+
}
327+
328+
defer reader.Close()
329+
330+
_, err = stdcopy.StdCopy(os.Stdout, os.Stderr, reader)
331+
if err != nil {
332+
return err
333+
}
334+
335+
return nil
336+
}()
337+
338+
fmt.Println("Setup container complete")
339+
317340
return nil
318341
}

0 commit comments

Comments
 (0)