mirror of
https://github.com/containrrr/watchtower.git
synced 2025-12-16 15:10:12 +01:00
add container network mode test
This commit is contained in:
parent
e8b208e9ac
commit
3b750c2b27
8 changed files with 954 additions and 17 deletions
|
|
@ -216,6 +216,19 @@ var _ = Describe("the client", func() {
|
|||
Expect(containers).NotTo(ContainElement(havingRestartingState(true)))
|
||||
})
|
||||
})
|
||||
When(`a container uses container network mode`, func() {
|
||||
It("should return the container name instead of the ID", func() {
|
||||
mockServer.AppendHandlers(mocks.GetContainerHandlers("net_consumer")...)
|
||||
client := dockerClient{
|
||||
api: docker,
|
||||
ClientOptions: ClientOptions{PullImages: false},
|
||||
}
|
||||
container, err := client.GetContainer(mocks.NetConsumerID)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
networkMode := container.ContainerInfo().HostConfig.NetworkMode
|
||||
Expect(networkMode.ConnectedContainer()).To(Equal(mocks.NetProducerContainerName))
|
||||
})
|
||||
})
|
||||
})
|
||||
Describe(`ExecuteCommand`, func() {
|
||||
When(`logging`, func() {
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@ import (
|
|||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
t "github.com/containrrr/watchtower/pkg/types"
|
||||
|
||||
"github.com/docker/docker/api/types"
|
||||
"github.com/docker/docker/api/types/filters"
|
||||
O "github.com/onsi/gomega"
|
||||
|
|
@ -46,13 +48,13 @@ func GetContainerHandlers(containerFiles ...string) []http.HandlerFunc {
|
|||
for _, file := range containerFiles {
|
||||
handlers = append(handlers, getContainerFileHandler(file))
|
||||
|
||||
// Also append the image request since that will be called for every container
|
||||
if file == "running" {
|
||||
// The "running" container is the only one using image02
|
||||
handlers = append(handlers, getImageFileHandler(1))
|
||||
} else {
|
||||
handlers = append(handlers, getImageFileHandler(0))
|
||||
if file == "net_consumer" {
|
||||
// Also append the net_producer container, since it's used to reconfigure networking
|
||||
handlers = append(handlers, getContainerHandler("net_producer"))
|
||||
}
|
||||
|
||||
// Also append the image request since that will be called for every container
|
||||
handlers = append(handlers, getImageFileHandler(file))
|
||||
}
|
||||
return handlers
|
||||
}
|
||||
|
|
@ -65,16 +67,24 @@ func createFilterArgs(statuses []string) filters.Args {
|
|||
return args
|
||||
}
|
||||
|
||||
var containerFileIds = map[string]string{
|
||||
"stopped": "ae8964ba86c7cd7522cf84e09781343d88e0e3543281c747d88b27e246578b65",
|
||||
"watchtower": "3d88e0e3543281c747d88b27e246578b65ae8964ba86c7cd7522cf84e0978134",
|
||||
"running": "b978af0b858aa8855cce46b628817d4ed58e58f2c4f66c9b9c5449134ed4c008",
|
||||
"restarting": "ae8964ba86c7cd7522cf84e09781343d88e0e3543281c747d88b27e246578b67",
|
||||
const NetConsumerID = t.ContainerID("1f6b79d2aff23244382026c76f4995851322bed5f9c50631620162f6f9aafbd6")
|
||||
const NetProducerID = t.ContainerID("25e75393800b5c450a6841212a3b92ed28fa35414a586dec9f2c8a520d4910c2")
|
||||
const NetProducerContainerName = "/wt-contnet-producer-1"
|
||||
|
||||
var containerFileIds = map[string]t.ContainerID{
|
||||
"stopped": t.ContainerID("ae8964ba86c7cd7522cf84e09781343d88e0e3543281c747d88b27e246578b65"),
|
||||
"watchtower": t.ContainerID("3d88e0e3543281c747d88b27e246578b65ae8964ba86c7cd7522cf84e0978134"),
|
||||
"running": t.ContainerID("b978af0b858aa8855cce46b628817d4ed58e58f2c4f66c9b9c5449134ed4c008"),
|
||||
"restarting": t.ContainerID("ae8964ba86c7cd7522cf84e09781343d88e0e3543281c747d88b27e246578b67"),
|
||||
"net_consumer": NetConsumerID,
|
||||
"net_producer": NetProducerID,
|
||||
}
|
||||
|
||||
var imageIds = []string{
|
||||
"sha256:4dbc5f9c07028a985e14d1393e849ea07f68804c4293050d5a641b138db72daa",
|
||||
"sha256:19d07168491a3f9e2798a9bed96544e34d57ddc4757a4ac5bb199dea896c87fd",
|
||||
var imageIds = map[string]t.ImageID{
|
||||
"default": t.ImageID("sha256:4dbc5f9c07028a985e14d1393e849ea07f68804c4293050d5a641b138db72daa"), // watchtower
|
||||
"running": t.ImageID("sha256:19d07168491a3f9e2798a9bed96544e34d57ddc4757a4ac5bb199dea896c87fd"), // portainer
|
||||
"net_consumer": t.ImageID("sha256:904b8cb13b932e23230836850610fa45dce9eb0650d5618c2b1487c2a4f577b8"), // nginx
|
||||
"net_producer": t.ImageID("sha256:c22b543d33bfdcb9992cbef23961677133cdf09da71d782468ae2517138bad51"), // gluetun
|
||||
}
|
||||
|
||||
func getContainerFileHandler(file string) http.HandlerFunc {
|
||||
|
|
@ -145,9 +155,13 @@ func getImageHandler(imageId string, responseHandler http.HandlerFunc) http.Hand
|
|||
)
|
||||
}
|
||||
|
||||
func getImageFileHandler(index int) http.HandlerFunc {
|
||||
return getImageHandler(imageIds[index],
|
||||
RespondWithJSONFile(fmt.Sprintf("./mocks/data/image%02d.json", index+1), http.StatusOK),
|
||||
func getImageFileHandler(key string) http.HandlerFunc {
|
||||
if _, found := imageIds[key]; !found {
|
||||
// The default image (watchtower) is used for most of the containers
|
||||
key = `default`
|
||||
}
|
||||
return getImageHandler(imageIds[key],
|
||||
RespondWithJSONFile(fmt.Sprintf("./mocks/data/image_%v.json", key), http.StatusOK),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
205
pkg/container/mocks/data/container_net_consumer.json
Normal file
205
pkg/container/mocks/data/container_net_consumer.json
Normal file
|
|
@ -0,0 +1,205 @@
|
|||
{
|
||||
"Id": "1f6b79d2aff23244382026c76f4995851322bed5f9c50631620162f6f9aafbd6",
|
||||
"Created": "2023-07-25T14:55:14.69155887Z",
|
||||
"Path": "/docker-entrypoint.sh",
|
||||
"Args": [
|
||||
"nginx",
|
||||
"-g",
|
||||
"daemon off;"
|
||||
],
|
||||
"State": {
|
||||
"Status": "running",
|
||||
"Running": true,
|
||||
"Paused": false,
|
||||
"Restarting": false,
|
||||
"OOMKilled": false,
|
||||
"Dead": false,
|
||||
"Pid": 3743,
|
||||
"ExitCode": 0,
|
||||
"Error": "",
|
||||
"StartedAt": "2023-07-25T14:55:15.299654437Z",
|
||||
"FinishedAt": "0001-01-01T00:00:00Z"
|
||||
},
|
||||
"Image": "sha256:904b8cb13b932e23230836850610fa45dce9eb0650d5618c2b1487c2a4f577b8",
|
||||
"ResolvConfPath": "/var/lib/docker/containers/25e75393800b5c450a6841212a3b92ed28fa35414a586dec9f2c8a520d4910c2/resolv.conf",
|
||||
"HostnamePath": "/var/lib/docker/containers/25e75393800b5c450a6841212a3b92ed28fa35414a586dec9f2c8a520d4910c2/hostname",
|
||||
"HostsPath": "/var/lib/docker/containers/25e75393800b5c450a6841212a3b92ed28fa35414a586dec9f2c8a520d4910c2/hosts",
|
||||
"LogPath": "/var/lib/docker/containers/1f6b79d2aff23244382026c76f4995851322bed5f9c50631620162f6f9aafbd6/1f6b79d2aff23244382026c76f4995851322bed5f9c50631620162f6f9aafbd6-json.log",
|
||||
"Name": "/wt-contnet-consumer-1",
|
||||
"RestartCount": 0,
|
||||
"Driver": "overlay2",
|
||||
"Platform": "linux",
|
||||
"MountLabel": "",
|
||||
"ProcessLabel": "",
|
||||
"AppArmorProfile": "",
|
||||
"ExecIDs": null,
|
||||
"HostConfig": {
|
||||
"Binds": null,
|
||||
"ContainerIDFile": "",
|
||||
"LogConfig": {
|
||||
"Type": "json-file",
|
||||
"Config": {}
|
||||
},
|
||||
"NetworkMode": "container:25e75393800b5c450a6841212a3b92ed28fa35414a586dec9f2c8a520d4910c2",
|
||||
"PortBindings": {},
|
||||
"RestartPolicy": {
|
||||
"Name": "",
|
||||
"MaximumRetryCount": 0
|
||||
},
|
||||
"AutoRemove": false,
|
||||
"VolumeDriver": "",
|
||||
"VolumesFrom": null,
|
||||
"ConsoleSize": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"CapAdd": null,
|
||||
"CapDrop": null,
|
||||
"CgroupnsMode": "host",
|
||||
"Dns": null,
|
||||
"DnsOptions": null,
|
||||
"DnsSearch": null,
|
||||
"ExtraHosts": [],
|
||||
"GroupAdd": null,
|
||||
"IpcMode": "private",
|
||||
"Cgroup": "",
|
||||
"Links": null,
|
||||
"OomScoreAdj": 0,
|
||||
"PidMode": "",
|
||||
"Privileged": false,
|
||||
"PublishAllPorts": false,
|
||||
"ReadonlyRootfs": false,
|
||||
"SecurityOpt": null,
|
||||
"UTSMode": "",
|
||||
"UsernsMode": "",
|
||||
"ShmSize": 67108864,
|
||||
"Runtime": "runc",
|
||||
"Isolation": "",
|
||||
"CpuShares": 0,
|
||||
"Memory": 0,
|
||||
"NanoCpus": 0,
|
||||
"CgroupParent": "",
|
||||
"BlkioWeight": 0,
|
||||
"BlkioWeightDevice": null,
|
||||
"BlkioDeviceReadBps": null,
|
||||
"BlkioDeviceWriteBps": null,
|
||||
"BlkioDeviceReadIOps": null,
|
||||
"BlkioDeviceWriteIOps": null,
|
||||
"CpuPeriod": 0,
|
||||
"CpuQuota": 0,
|
||||
"CpuRealtimePeriod": 0,
|
||||
"CpuRealtimeRuntime": 0,
|
||||
"CpusetCpus": "",
|
||||
"CpusetMems": "",
|
||||
"Devices": null,
|
||||
"DeviceCgroupRules": null,
|
||||
"DeviceRequests": null,
|
||||
"MemoryReservation": 0,
|
||||
"MemorySwap": 0,
|
||||
"MemorySwappiness": null,
|
||||
"OomKillDisable": false,
|
||||
"PidsLimit": null,
|
||||
"Ulimits": null,
|
||||
"CpuCount": 0,
|
||||
"CpuPercent": 0,
|
||||
"IOMaximumIOps": 0,
|
||||
"IOMaximumBandwidth": 0,
|
||||
"MaskedPaths": [
|
||||
"/proc/asound",
|
||||
"/proc/acpi",
|
||||
"/proc/kcore",
|
||||
"/proc/keys",
|
||||
"/proc/latency_stats",
|
||||
"/proc/timer_list",
|
||||
"/proc/timer_stats",
|
||||
"/proc/sched_debug",
|
||||
"/proc/scsi",
|
||||
"/sys/firmware"
|
||||
],
|
||||
"ReadonlyPaths": [
|
||||
"/proc/bus",
|
||||
"/proc/fs",
|
||||
"/proc/irq",
|
||||
"/proc/sys",
|
||||
"/proc/sysrq-trigger"
|
||||
]
|
||||
},
|
||||
"GraphDriver": {
|
||||
"Data": {
|
||||
"LowerDir": "/var/lib/docker/overlay2/05501c86219af9f713c74c129426cf5a17dc5e42f96f7f881f443cab100280e2-init/diff:/var/lib/docker/overlay2/105427179e5628eb7e893d53e21f42f9e76278f8b5665387ecdeed54a7231137/diff:/var/lib/docker/overlay2/09785ba17f27c783ef8b44f369f9aac0ca936000b57abf22b3c54d1e6eb8e27b/diff:/var/lib/docker/overlay2/6f8acd64ae44fd4d14bcb90c105eceba46854aa3985b5b6b317bcc5692cfc286/diff:/var/lib/docker/overlay2/73d41c15edb21c5f12cf53e313f48b5da55283aafc77d35b7bc662241879d7e7/diff:/var/lib/docker/overlay2/d97b55f3d966ae031492369a98e9e00d2bd31e520290fe2034e0a2b1ed77c91e/diff:/var/lib/docker/overlay2/053e9ca65c6b64cb9d98a812ff7488c7e77938b4fb8e0c4d2ad7f8ec235f0f20/diff",
|
||||
"MergedDir": "/var/lib/docker/overlay2/05501c86219af9f713c74c129426cf5a17dc5e42f96f7f881f443cab100280e2/merged",
|
||||
"UpperDir": "/var/lib/docker/overlay2/05501c86219af9f713c74c129426cf5a17dc5e42f96f7f881f443cab100280e2/diff",
|
||||
"WorkDir": "/var/lib/docker/overlay2/05501c86219af9f713c74c129426cf5a17dc5e42f96f7f881f443cab100280e2/work"
|
||||
},
|
||||
"Name": "overlay2"
|
||||
},
|
||||
"Mounts": [],
|
||||
"Config": {
|
||||
"Hostname": "25e75393800b",
|
||||
"Domainname": "",
|
||||
"User": "",
|
||||
"AttachStdin": false,
|
||||
"AttachStdout": true,
|
||||
"AttachStderr": true,
|
||||
"ExposedPorts": {
|
||||
"80/tcp": {}
|
||||
},
|
||||
"Tty": false,
|
||||
"OpenStdin": false,
|
||||
"StdinOnce": false,
|
||||
"Env": [
|
||||
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
|
||||
"NGINX_VERSION=1.23.3",
|
||||
"NJS_VERSION=0.7.9",
|
||||
"PKG_RELEASE=1~bullseye"
|
||||
],
|
||||
"Cmd": [
|
||||
"nginx",
|
||||
"-g",
|
||||
"daemon off;"
|
||||
],
|
||||
"Image": "nginx",
|
||||
"Volumes": null,
|
||||
"WorkingDir": "",
|
||||
"Entrypoint": [
|
||||
"/docker-entrypoint.sh"
|
||||
],
|
||||
"OnBuild": null,
|
||||
"Labels": {
|
||||
"com.docker.compose.config-hash": "8bb0e1c8c61f6d495840ba9133ebfb1e4ffda3e1adb701a011b03951848bb9fa",
|
||||
"com.docker.compose.container-number": "1",
|
||||
"com.docker.compose.depends_on": "producer:service_started:false",
|
||||
"com.docker.compose.image": "sha256:904b8cb13b932e23230836850610fa45dce9eb0650d5618c2b1487c2a4f577b8",
|
||||
"com.docker.compose.oneoff": "False",
|
||||
"com.docker.compose.project": "wt-contnet",
|
||||
"com.docker.compose.project.config_files": "/tmp/wt-contnet/docker-compose.yaml",
|
||||
"com.docker.compose.project.working_dir": "/tmp/wt-contnet",
|
||||
"com.docker.compose.replace": "07bb70608f96f577aa02b9f317500e23e691c94eb099f6fb52301dfb031d0668",
|
||||
"com.docker.compose.service": "consumer",
|
||||
"com.docker.compose.version": "2.19.1",
|
||||
"desktop.docker.io/wsl-distro": "Ubuntu",
|
||||
"maintainer": "NGINX Docker Maintainers \u003cdocker-maint@nginx.com\u003e"
|
||||
},
|
||||
"StopSignal": "SIGQUIT"
|
||||
},
|
||||
"NetworkSettings": {
|
||||
"Bridge": "",
|
||||
"SandboxID": "",
|
||||
"HairpinMode": false,
|
||||
"LinkLocalIPv6Address": "",
|
||||
"LinkLocalIPv6PrefixLen": 0,
|
||||
"Ports": {},
|
||||
"SandboxKey": "",
|
||||
"SecondaryIPAddresses": null,
|
||||
"SecondaryIPv6Addresses": null,
|
||||
"EndpointID": "",
|
||||
"Gateway": "",
|
||||
"GlobalIPv6Address": "",
|
||||
"GlobalIPv6PrefixLen": 0,
|
||||
"IPAddress": "",
|
||||
"IPPrefixLen": 0,
|
||||
"IPv6Gateway": "",
|
||||
"MacAddress": "",
|
||||
"Networks": {}
|
||||
}
|
||||
}
|
||||
380
pkg/container/mocks/data/container_net_producer.json
Normal file
380
pkg/container/mocks/data/container_net_producer.json
Normal file
|
|
@ -0,0 +1,380 @@
|
|||
{
|
||||
"Id": "25e75393800b5c450a6841212a3b92ed28fa35414a586dec9f2c8a520d4910c2",
|
||||
"Created": "2023-07-25T14:55:14.595662628Z",
|
||||
"Path": "/gluetun-entrypoint",
|
||||
"Args": [],
|
||||
"State": {
|
||||
"Status": "running",
|
||||
"Running": true,
|
||||
"Paused": false,
|
||||
"Restarting": false,
|
||||
"OOMKilled": false,
|
||||
"Dead": false,
|
||||
"Pid": 3648,
|
||||
"ExitCode": 0,
|
||||
"Error": "",
|
||||
"StartedAt": "2023-07-25T14:55:15.193430103Z",
|
||||
"FinishedAt": "0001-01-01T00:00:00Z",
|
||||
"Health": {
|
||||
"Status": "healthy",
|
||||
"FailingStreak": 0,
|
||||
"Log": [
|
||||
{
|
||||
"Start": "2023-07-25T15:00:32.078491228Z",
|
||||
"End": "2023-07-25T15:00:32.194554876Z",
|
||||
"ExitCode": 0,
|
||||
"Output": ""
|
||||
},
|
||||
{
|
||||
"Start": "2023-07-25T15:00:37.199245496Z",
|
||||
"End": "2023-07-25T15:00:37.294845687Z",
|
||||
"ExitCode": 0,
|
||||
"Output": ""
|
||||
},
|
||||
{
|
||||
"Start": "2023-07-25T15:00:42.299676089Z",
|
||||
"End": "2023-07-25T15:00:42.384213818Z",
|
||||
"ExitCode": 0,
|
||||
"Output": ""
|
||||
},
|
||||
{
|
||||
"Start": "2023-07-25T15:00:47.389142447Z",
|
||||
"End": "2023-07-25T15:00:47.514483294Z",
|
||||
"ExitCode": 0,
|
||||
"Output": ""
|
||||
},
|
||||
{
|
||||
"Start": "2023-07-25T15:00:52.518770886Z",
|
||||
"End": "2023-07-25T15:00:52.644288742Z",
|
||||
"ExitCode": 0,
|
||||
"Output": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"Image": "sha256:c22b543d33bfdcb9992cbef23961677133cdf09da71d782468ae2517138bad51",
|
||||
"ResolvConfPath": "/var/lib/docker/containers/25e75393800b5c450a6841212a3b92ed28fa35414a586dec9f2c8a520d4910c2/resolv.conf",
|
||||
"HostnamePath": "/var/lib/docker/containers/25e75393800b5c450a6841212a3b92ed28fa35414a586dec9f2c8a520d4910c2/hostname",
|
||||
"HostsPath": "/var/lib/docker/containers/25e75393800b5c450a6841212a3b92ed28fa35414a586dec9f2c8a520d4910c2/hosts",
|
||||
"LogPath": "/var/lib/docker/containers/25e75393800b5c450a6841212a3b92ed28fa35414a586dec9f2c8a520d4910c2/25e75393800b5c450a6841212a3b92ed28fa35414a586dec9f2c8a520d4910c2-json.log",
|
||||
"Name": "/wt-contnet-producer-1",
|
||||
"RestartCount": 0,
|
||||
"Driver": "overlay2",
|
||||
"Platform": "linux",
|
||||
"MountLabel": "",
|
||||
"ProcessLabel": "",
|
||||
"AppArmorProfile": "",
|
||||
"ExecIDs": null,
|
||||
"HostConfig": {
|
||||
"Binds": null,
|
||||
"ContainerIDFile": "",
|
||||
"LogConfig": {
|
||||
"Type": "json-file",
|
||||
"Config": {}
|
||||
},
|
||||
"NetworkMode": "wt-contnet_default",
|
||||
"PortBindings": {},
|
||||
"RestartPolicy": {
|
||||
"Name": "",
|
||||
"MaximumRetryCount": 0
|
||||
},
|
||||
"AutoRemove": false,
|
||||
"VolumeDriver": "",
|
||||
"VolumesFrom": null,
|
||||
"ConsoleSize": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"CapAdd": [
|
||||
"NET_ADMIN"
|
||||
],
|
||||
"CapDrop": null,
|
||||
"CgroupnsMode": "host",
|
||||
"Dns": null,
|
||||
"DnsOptions": null,
|
||||
"DnsSearch": null,
|
||||
"ExtraHosts": [],
|
||||
"GroupAdd": null,
|
||||
"IpcMode": "private",
|
||||
"Cgroup": "",
|
||||
"Links": null,
|
||||
"OomScoreAdj": 0,
|
||||
"PidMode": "",
|
||||
"Privileged": false,
|
||||
"PublishAllPorts": false,
|
||||
"ReadonlyRootfs": false,
|
||||
"SecurityOpt": null,
|
||||
"UTSMode": "",
|
||||
"UsernsMode": "",
|
||||
"ShmSize": 67108864,
|
||||
"Runtime": "runc",
|
||||
"Isolation": "",
|
||||
"CpuShares": 0,
|
||||
"Memory": 0,
|
||||
"NanoCpus": 0,
|
||||
"CgroupParent": "",
|
||||
"BlkioWeight": 0,
|
||||
"BlkioWeightDevice": null,
|
||||
"BlkioDeviceReadBps": null,
|
||||
"BlkioDeviceWriteBps": null,
|
||||
"BlkioDeviceReadIOps": null,
|
||||
"BlkioDeviceWriteIOps": null,
|
||||
"CpuPeriod": 0,
|
||||
"CpuQuota": 0,
|
||||
"CpuRealtimePeriod": 0,
|
||||
"CpuRealtimeRuntime": 0,
|
||||
"CpusetCpus": "",
|
||||
"CpusetMems": "",
|
||||
"Devices": null,
|
||||
"DeviceCgroupRules": null,
|
||||
"DeviceRequests": null,
|
||||
"MemoryReservation": 0,
|
||||
"MemorySwap": 0,
|
||||
"MemorySwappiness": null,
|
||||
"OomKillDisable": false,
|
||||
"PidsLimit": null,
|
||||
"Ulimits": null,
|
||||
"CpuCount": 0,
|
||||
"CpuPercent": 0,
|
||||
"IOMaximumIOps": 0,
|
||||
"IOMaximumBandwidth": 0,
|
||||
"MaskedPaths": [
|
||||
"/proc/asound",
|
||||
"/proc/acpi",
|
||||
"/proc/kcore",
|
||||
"/proc/keys",
|
||||
"/proc/latency_stats",
|
||||
"/proc/timer_list",
|
||||
"/proc/timer_stats",
|
||||
"/proc/sched_debug",
|
||||
"/proc/scsi",
|
||||
"/sys/firmware"
|
||||
],
|
||||
"ReadonlyPaths": [
|
||||
"/proc/bus",
|
||||
"/proc/fs",
|
||||
"/proc/irq",
|
||||
"/proc/sys",
|
||||
"/proc/sysrq-trigger"
|
||||
]
|
||||
},
|
||||
"GraphDriver": {
|
||||
"Data": {
|
||||
"LowerDir": "/var/lib/docker/overlay2/618bd1e7a13880c07ec7f5bfc45012a9f81d5de452f942b49d8f49b3c67a19a2-init/diff:/var/lib/docker/overlay2/0d222a3aa067159831c4111a408e40325be1085b935c98d39c2e9a01ff50b224/diff:/var/lib/docker/overlay2/a20c9490a23ee8af51898892d9bf32258d44e0e07f3799475be8e8f273a50f73/diff:/var/lib/docker/overlay2/d4c97f367c37c6ada9de57f438a3e19cc714be2a54a6f582a03de9e42d88b344/diff",
|
||||
"MergedDir": "/var/lib/docker/overlay2/618bd1e7a13880c07ec7f5bfc45012a9f81d5de452f942b49d8f49b3c67a19a2/merged",
|
||||
"UpperDir": "/var/lib/docker/overlay2/618bd1e7a13880c07ec7f5bfc45012a9f81d5de452f942b49d8f49b3c67a19a2/diff",
|
||||
"WorkDir": "/var/lib/docker/overlay2/618bd1e7a13880c07ec7f5bfc45012a9f81d5de452f942b49d8f49b3c67a19a2/work"
|
||||
},
|
||||
"Name": "overlay2"
|
||||
},
|
||||
"Mounts": [],
|
||||
"Config": {
|
||||
"Hostname": "25e75393800b",
|
||||
"Domainname": "",
|
||||
"User": "",
|
||||
"AttachStdin": false,
|
||||
"AttachStdout": true,
|
||||
"AttachStderr": true,
|
||||
"ExposedPorts": {
|
||||
"8000/tcp": {},
|
||||
"8388/tcp": {},
|
||||
"8388/udp": {},
|
||||
"8888/tcp": {}
|
||||
},
|
||||
"Tty": false,
|
||||
"OpenStdin": false,
|
||||
"StdinOnce": false,
|
||||
"Env": [
|
||||
"OPENVPN_PASSWORD=",
|
||||
"SERVER_COUNTRIES=Sweden",
|
||||
"VPN_SERVICE_PROVIDER=nordvpn",
|
||||
"OPENVPN_USER=",
|
||||
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
|
||||
"VPN_TYPE=openvpn",
|
||||
"VPN_ENDPOINT_IP=",
|
||||
"VPN_ENDPOINT_PORT=",
|
||||
"VPN_INTERFACE=tun0",
|
||||
"OPENVPN_PROTOCOL=udp",
|
||||
"OPENVPN_USER_SECRETFILE=/run/secrets/openvpn_user",
|
||||
"OPENVPN_PASSWORD_SECRETFILE=/run/secrets/openvpn_password",
|
||||
"OPENVPN_VERSION=2.5",
|
||||
"OPENVPN_VERBOSITY=1",
|
||||
"OPENVPN_FLAGS=",
|
||||
"OPENVPN_CIPHERS=",
|
||||
"OPENVPN_AUTH=",
|
||||
"OPENVPN_PROCESS_USER=root",
|
||||
"OPENVPN_CUSTOM_CONFIG=",
|
||||
"WIREGUARD_PRIVATE_KEY=",
|
||||
"WIREGUARD_PRESHARED_KEY=",
|
||||
"WIREGUARD_PUBLIC_KEY=",
|
||||
"WIREGUARD_ALLOWED_IPS=",
|
||||
"WIREGUARD_ADDRESSES=",
|
||||
"WIREGUARD_MTU=1400",
|
||||
"WIREGUARD_IMPLEMENTATION=auto",
|
||||
"SERVER_REGIONS=",
|
||||
"SERVER_CITIES=",
|
||||
"SERVER_HOSTNAMES=",
|
||||
"ISP=",
|
||||
"OWNED_ONLY=no",
|
||||
"PRIVATE_INTERNET_ACCESS_OPENVPN_ENCRYPTION_PRESET=",
|
||||
"VPN_PORT_FORWARDING=off",
|
||||
"VPN_PORT_FORWARDING_PROVIDER=",
|
||||
"VPN_PORT_FORWARDING_STATUS_FILE=/tmp/gluetun/forwarded_port",
|
||||
"OPENVPN_CERT=",
|
||||
"OPENVPN_KEY=",
|
||||
"OPENVPN_CLIENTCRT_SECRETFILE=/run/secrets/openvpn_clientcrt",
|
||||
"OPENVPN_CLIENTKEY_SECRETFILE=/run/secrets/openvpn_clientkey",
|
||||
"OPENVPN_ENCRYPTED_KEY=",
|
||||
"OPENVPN_ENCRYPTED_KEY_SECRETFILE=/run/secrets/openvpn_encrypted_key",
|
||||
"OPENVPN_KEY_PASSPHRASE=",
|
||||
"OPENVPN_KEY_PASSPHRASE_SECRETFILE=/run/secrets/openvpn_key_passphrase",
|
||||
"SERVER_NUMBER=",
|
||||
"SERVER_NAMES=",
|
||||
"FREE_ONLY=",
|
||||
"MULTIHOP_ONLY=",
|
||||
"PREMIUM_ONLY=",
|
||||
"FIREWALL=on",
|
||||
"FIREWALL_VPN_INPUT_PORTS=",
|
||||
"FIREWALL_INPUT_PORTS=",
|
||||
"FIREWALL_OUTBOUND_SUBNETS=",
|
||||
"FIREWALL_DEBUG=off",
|
||||
"LOG_LEVEL=info",
|
||||
"HEALTH_SERVER_ADDRESS=127.0.0.1:9999",
|
||||
"HEALTH_TARGET_ADDRESS=cloudflare.com:443",
|
||||
"HEALTH_SUCCESS_WAIT_DURATION=5s",
|
||||
"HEALTH_VPN_DURATION_INITIAL=6s",
|
||||
"HEALTH_VPN_DURATION_ADDITION=5s",
|
||||
"DOT=on",
|
||||
"DOT_PROVIDERS=cloudflare",
|
||||
"DOT_PRIVATE_ADDRESS=127.0.0.1/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,::1/128,fc00::/7,fe80::/10,::ffff:7f00:1/104,::ffff:a00:0/104,::ffff:a9fe:0/112,::ffff:ac10:0/108,::ffff:c0a8:0/112",
|
||||
"DOT_VERBOSITY=1",
|
||||
"DOT_VERBOSITY_DETAILS=0",
|
||||
"DOT_VALIDATION_LOGLEVEL=0",
|
||||
"DOT_CACHING=on",
|
||||
"DOT_IPV6=off",
|
||||
"BLOCK_MALICIOUS=on",
|
||||
"BLOCK_SURVEILLANCE=off",
|
||||
"BLOCK_ADS=off",
|
||||
"UNBLOCK=",
|
||||
"DNS_UPDATE_PERIOD=24h",
|
||||
"DNS_ADDRESS=127.0.0.1",
|
||||
"DNS_KEEP_NAMESERVER=off",
|
||||
"HTTPPROXY=",
|
||||
"HTTPPROXY_LOG=off",
|
||||
"HTTPPROXY_LISTENING_ADDRESS=:8888",
|
||||
"HTTPPROXY_STEALTH=off",
|
||||
"HTTPPROXY_USER=",
|
||||
"HTTPPROXY_PASSWORD=",
|
||||
"HTTPPROXY_USER_SECRETFILE=/run/secrets/httpproxy_user",
|
||||
"HTTPPROXY_PASSWORD_SECRETFILE=/run/secrets/httpproxy_password",
|
||||
"SHADOWSOCKS=off",
|
||||
"SHADOWSOCKS_LOG=off",
|
||||
"SHADOWSOCKS_LISTENING_ADDRESS=:8388",
|
||||
"SHADOWSOCKS_PASSWORD=",
|
||||
"SHADOWSOCKS_PASSWORD_SECRETFILE=/run/secrets/shadowsocks_password",
|
||||
"SHADOWSOCKS_CIPHER=chacha20-ietf-poly1305",
|
||||
"HTTP_CONTROL_SERVER_LOG=on",
|
||||
"HTTP_CONTROL_SERVER_ADDRESS=:8000",
|
||||
"UPDATER_PERIOD=0",
|
||||
"UPDATER_MIN_RATIO=0.8",
|
||||
"UPDATER_VPN_SERVICE_PROVIDERS=",
|
||||
"PUBLICIP_FILE=/tmp/gluetun/ip",
|
||||
"PUBLICIP_PERIOD=12h",
|
||||
"PPROF_ENABLED=no",
|
||||
"PPROF_BLOCK_PROFILE_RATE=0",
|
||||
"PPROF_MUTEX_PROFILE_RATE=0",
|
||||
"PPROF_HTTP_SERVER_ADDRESS=:6060",
|
||||
"VERSION_INFORMATION=on",
|
||||
"TZ=",
|
||||
"PUID=",
|
||||
"PGID="
|
||||
],
|
||||
"Cmd": null,
|
||||
"Healthcheck": {
|
||||
"Test": [
|
||||
"CMD-SHELL",
|
||||
"/gluetun-entrypoint healthcheck"
|
||||
],
|
||||
"Interval": 5000000000,
|
||||
"Timeout": 5000000000,
|
||||
"StartPeriod": 10000000000,
|
||||
"Retries": 1
|
||||
},
|
||||
"Image": "qmcgaw/gluetun",
|
||||
"Volumes": null,
|
||||
"WorkingDir": "",
|
||||
"Entrypoint": [
|
||||
"/gluetun-entrypoint"
|
||||
],
|
||||
"OnBuild": null,
|
||||
"Labels": {
|
||||
"com.docker.compose.config-hash": "6dc7dc42a86edb47039de3650a9cb9bdcf4866c113b8f9d797722c9dfd20428b",
|
||||
"com.docker.compose.container-number": "1",
|
||||
"com.docker.compose.depends_on": "",
|
||||
"com.docker.compose.image": "sha256:c22b543d33bfdcb9992cbef23961677133cdf09da71d782468ae2517138bad51",
|
||||
"com.docker.compose.oneoff": "False",
|
||||
"com.docker.compose.project": "wt-contnet",
|
||||
"com.docker.compose.project.config_files": "/tmp/wt-contnet/docker-compose.yaml",
|
||||
"com.docker.compose.project.working_dir": "/tmp/wt-contnet",
|
||||
"com.docker.compose.replace": "9bd1ce000be81819fc915aa60a1674c7573b59a26ac4643ecf427a5732b9785f",
|
||||
"com.docker.compose.service": "producer",
|
||||
"com.docker.compose.version": "2.19.1",
|
||||
"desktop.docker.io/wsl-distro": "Ubuntu",
|
||||
"org.opencontainers.image.authors": "quentin.mcgaw@gmail.com",
|
||||
"org.opencontainers.image.created": "2023-07-22T16:07:05.641Z",
|
||||
"org.opencontainers.image.description": "VPN client in a thin Docker container for multiple VPN providers, written in Go, and using OpenVPN or Wireguard, DNS over TLS, with a few proxy servers built-in.",
|
||||
"org.opencontainers.image.documentation": "https://github.com/qdm12/gluetun",
|
||||
"org.opencontainers.image.licenses": "MIT",
|
||||
"org.opencontainers.image.revision": "eecfb3952f202c0de3867d88e96d80c6b0f48359",
|
||||
"org.opencontainers.image.source": "https://github.com/qdm12/gluetun",
|
||||
"org.opencontainers.image.title": "gluetun",
|
||||
"org.opencontainers.image.url": "https://github.com/qdm12/gluetun",
|
||||
"org.opencontainers.image.version": "latest"
|
||||
}
|
||||
},
|
||||
"NetworkSettings": {
|
||||
"Bridge": "",
|
||||
"SandboxID": "34a321b64bb1b15f994dfccff0e235f881504f240c2028876ff6683962eaa10e",
|
||||
"HairpinMode": false,
|
||||
"LinkLocalIPv6Address": "",
|
||||
"LinkLocalIPv6PrefixLen": 0,
|
||||
"Ports": {
|
||||
"8000/tcp": null,
|
||||
"8388/tcp": null,
|
||||
"8388/udp": null,
|
||||
"8888/tcp": null
|
||||
},
|
||||
"SandboxKey": "/var/run/docker/netns/34a321b64bb1",
|
||||
"SecondaryIPAddresses": null,
|
||||
"SecondaryIPv6Addresses": null,
|
||||
"EndpointID": "",
|
||||
"Gateway": "",
|
||||
"GlobalIPv6Address": "",
|
||||
"GlobalIPv6PrefixLen": 0,
|
||||
"IPAddress": "",
|
||||
"IPPrefixLen": 0,
|
||||
"IPv6Gateway": "",
|
||||
"MacAddress": "",
|
||||
"Networks": {
|
||||
"wt-contnet_default": {
|
||||
"IPAMConfig": null,
|
||||
"Links": null,
|
||||
"Aliases": [
|
||||
"wt-contnet-producer-1",
|
||||
"producer",
|
||||
"25e75393800b"
|
||||
],
|
||||
"NetworkID": "f0f652a79efc54bcad52aafb4cbcc3b5dce1acaf11b172d8678d25f665faf63d",
|
||||
"EndpointID": "2429c2b5d08db6c986bbd419a52ca4dd352715d80c5aeae04742efb84b0356fc",
|
||||
"Gateway": "172.19.0.1",
|
||||
"IPAddress": "172.19.0.2",
|
||||
"IPPrefixLen": 16,
|
||||
"IPv6Gateway": "",
|
||||
"GlobalIPv6Address": "",
|
||||
"GlobalIPv6PrefixLen": 0,
|
||||
"MacAddress": "02:42:ac:13:00:02",
|
||||
"DriverOpts": null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
115
pkg/container/mocks/data/image_net_consumer.json
Normal file
115
pkg/container/mocks/data/image_net_consumer.json
Normal file
|
|
@ -0,0 +1,115 @@
|
|||
{
|
||||
"Id": "sha256:904b8cb13b932e23230836850610fa45dce9eb0650d5618c2b1487c2a4f577b8",
|
||||
"RepoTags": [
|
||||
"nginx:latest"
|
||||
],
|
||||
"RepoDigests": [
|
||||
"nginx@sha256:aa0afebbb3cfa473099a62c4b32e9b3fb73ed23f2a75a65ce1d4b4f55a5c2ef2"
|
||||
],
|
||||
"Parent": "",
|
||||
"Comment": "",
|
||||
"Created": "2023-03-01T18:43:12.914398123Z",
|
||||
"Container": "71a4c9a59d252d7c54812429bfe5df477e54e91ebfff1939ae39ecdf055d445c",
|
||||
"ContainerConfig": {
|
||||
"Hostname": "71a4c9a59d25",
|
||||
"Domainname": "",
|
||||
"User": "",
|
||||
"AttachStdin": false,
|
||||
"AttachStdout": false,
|
||||
"AttachStderr": false,
|
||||
"ExposedPorts": {
|
||||
"80/tcp": {}
|
||||
},
|
||||
"Tty": false,
|
||||
"OpenStdin": false,
|
||||
"StdinOnce": false,
|
||||
"Env": [
|
||||
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
|
||||
"NGINX_VERSION=1.23.3",
|
||||
"NJS_VERSION=0.7.9",
|
||||
"PKG_RELEASE=1~bullseye"
|
||||
],
|
||||
"Cmd": [
|
||||
"/bin/sh",
|
||||
"-c",
|
||||
"#(nop) ",
|
||||
"CMD [\"nginx\" \"-g\" \"daemon off;\"]"
|
||||
],
|
||||
"Image": "sha256:6716b8a33f73b21e193bb63424ea1105eaaa6a8237fefe75570bea18c87a1711",
|
||||
"Volumes": null,
|
||||
"WorkingDir": "",
|
||||
"Entrypoint": [
|
||||
"/docker-entrypoint.sh"
|
||||
],
|
||||
"OnBuild": null,
|
||||
"Labels": {
|
||||
"maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
|
||||
},
|
||||
"StopSignal": "SIGQUIT"
|
||||
},
|
||||
"DockerVersion": "20.10.23",
|
||||
"Author": "",
|
||||
"Config": {
|
||||
"Hostname": "",
|
||||
"Domainname": "",
|
||||
"User": "",
|
||||
"AttachStdin": false,
|
||||
"AttachStdout": false,
|
||||
"AttachStderr": false,
|
||||
"ExposedPorts": {
|
||||
"80/tcp": {}
|
||||
},
|
||||
"Tty": false,
|
||||
"OpenStdin": false,
|
||||
"StdinOnce": false,
|
||||
"Env": [
|
||||
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
|
||||
"NGINX_VERSION=1.23.3",
|
||||
"NJS_VERSION=0.7.9",
|
||||
"PKG_RELEASE=1~bullseye"
|
||||
],
|
||||
"Cmd": [
|
||||
"nginx",
|
||||
"-g",
|
||||
"daemon off;"
|
||||
],
|
||||
"Image": "sha256:6716b8a33f73b21e193bb63424ea1105eaaa6a8237fefe75570bea18c87a1711",
|
||||
"Volumes": null,
|
||||
"WorkingDir": "",
|
||||
"Entrypoint": [
|
||||
"/docker-entrypoint.sh"
|
||||
],
|
||||
"OnBuild": null,
|
||||
"Labels": {
|
||||
"maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
|
||||
},
|
||||
"StopSignal": "SIGQUIT"
|
||||
},
|
||||
"Architecture": "amd64",
|
||||
"Os": "linux",
|
||||
"Size": 141838643,
|
||||
"VirtualSize": 141838643,
|
||||
"GraphDriver": {
|
||||
"Data": {
|
||||
"LowerDir": "/var/lib/docker/overlay2/09785ba17f27c783ef8b44f369f9aac0ca936000b57abf22b3c54d1e6eb8e27b/diff:/var/lib/docker/overlay2/6f8acd64ae44fd4d14bcb90c105eceba46854aa3985b5b6b317bcc5692cfc286/diff:/var/lib/docker/overlay2/73d41c15edb21c5f12cf53e313f48b5da55283aafc77d35b7bc662241879d7e7/diff:/var/lib/docker/overlay2/d97b55f3d966ae031492369a98e9e00d2bd31e520290fe2034e0a2b1ed77c91e/diff:/var/lib/docker/overlay2/053e9ca65c6b64cb9d98a812ff7488c7e77938b4fb8e0c4d2ad7f8ec235f0f20/diff",
|
||||
"MergedDir": "/var/lib/docker/overlay2/105427179e5628eb7e893d53e21f42f9e76278f8b5665387ecdeed54a7231137/merged",
|
||||
"UpperDir": "/var/lib/docker/overlay2/105427179e5628eb7e893d53e21f42f9e76278f8b5665387ecdeed54a7231137/diff",
|
||||
"WorkDir": "/var/lib/docker/overlay2/105427179e5628eb7e893d53e21f42f9e76278f8b5665387ecdeed54a7231137/work"
|
||||
},
|
||||
"Name": "overlay2"
|
||||
},
|
||||
"RootFS": {
|
||||
"Type": "layers",
|
||||
"Layers": [
|
||||
"sha256:650abce4b096b06ac8bec2046d821d66d801af34f1f1d4c5e272ad030c7873db",
|
||||
"sha256:4dc5cd799a08ff49a603870c8378ea93083bfc2a4176f56e5531997e94c195d0",
|
||||
"sha256:e161c82b34d21179db1f546c1cd84153d28a17d865ccaf2dedeb06a903fec12c",
|
||||
"sha256:83ba6d8ffb8c2974174c02d3ba549e7e0656ebb1bc075a6b6ee89b6c609c6a71",
|
||||
"sha256:d8466e142d8710abf5b495ebb536478f7e19d9d03b151b5d5bd09df4cfb49248",
|
||||
"sha256:101af4ba983b04be266217ecee414e88b23e394f62e9801c7c1bdb37cb37bcaa"
|
||||
]
|
||||
},
|
||||
"Metadata": {
|
||||
"LastTagTime": "0001-01-01T00:00:00Z"
|
||||
}
|
||||
}
|
||||
210
pkg/container/mocks/data/image_net_producer.json
Normal file
210
pkg/container/mocks/data/image_net_producer.json
Normal file
|
|
@ -0,0 +1,210 @@
|
|||
{
|
||||
"Id": "sha256:c22b543d33bfdcb9992cbef23961677133cdf09da71d782468ae2517138bad51",
|
||||
"RepoTags": [
|
||||
"qmcgaw/gluetun:latest"
|
||||
],
|
||||
"RepoDigests": [
|
||||
"qmcgaw/gluetun@sha256:cd532bf4ef88a348a915c6dc62a9867a2eca89aa70559b0b4a1ea15cc0e595d1"
|
||||
],
|
||||
"Parent": "",
|
||||
"Comment": "buildkit.dockerfile.v0",
|
||||
"Created": "2023-07-22T16:10:29.457146856Z",
|
||||
"Container": "",
|
||||
"ContainerConfig": {
|
||||
"Hostname": "",
|
||||
"Domainname": "",
|
||||
"User": "",
|
||||
"AttachStdin": false,
|
||||
"AttachStdout": false,
|
||||
"AttachStderr": false,
|
||||
"Tty": false,
|
||||
"OpenStdin": false,
|
||||
"StdinOnce": false,
|
||||
"Env": null,
|
||||
"Cmd": null,
|
||||
"Image": "",
|
||||
"Volumes": null,
|
||||
"WorkingDir": "",
|
||||
"Entrypoint": null,
|
||||
"OnBuild": null,
|
||||
"Labels": null
|
||||
},
|
||||
"DockerVersion": "",
|
||||
"Author": "",
|
||||
"Config": {
|
||||
"Hostname": "",
|
||||
"Domainname": "",
|
||||
"User": "",
|
||||
"AttachStdin": false,
|
||||
"AttachStdout": false,
|
||||
"AttachStderr": false,
|
||||
"ExposedPorts": {
|
||||
"8000/tcp": {},
|
||||
"8388/tcp": {},
|
||||
"8388/udp": {},
|
||||
"8888/tcp": {}
|
||||
},
|
||||
"Tty": false,
|
||||
"OpenStdin": false,
|
||||
"StdinOnce": false,
|
||||
"Env": [
|
||||
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
|
||||
"VPN_SERVICE_PROVIDER=pia",
|
||||
"VPN_TYPE=openvpn",
|
||||
"VPN_ENDPOINT_IP=",
|
||||
"VPN_ENDPOINT_PORT=",
|
||||
"VPN_INTERFACE=tun0",
|
||||
"OPENVPN_PROTOCOL=udp",
|
||||
"OPENVPN_USER=",
|
||||
"OPENVPN_PASSWORD=",
|
||||
"OPENVPN_USER_SECRETFILE=/run/secrets/openvpn_user",
|
||||
"OPENVPN_PASSWORD_SECRETFILE=/run/secrets/openvpn_password",
|
||||
"OPENVPN_VERSION=2.5",
|
||||
"OPENVPN_VERBOSITY=1",
|
||||
"OPENVPN_FLAGS=",
|
||||
"OPENVPN_CIPHERS=",
|
||||
"OPENVPN_AUTH=",
|
||||
"OPENVPN_PROCESS_USER=root",
|
||||
"OPENVPN_CUSTOM_CONFIG=",
|
||||
"WIREGUARD_PRIVATE_KEY=",
|
||||
"WIREGUARD_PRESHARED_KEY=",
|
||||
"WIREGUARD_PUBLIC_KEY=",
|
||||
"WIREGUARD_ALLOWED_IPS=",
|
||||
"WIREGUARD_ADDRESSES=",
|
||||
"WIREGUARD_MTU=1400",
|
||||
"WIREGUARD_IMPLEMENTATION=auto",
|
||||
"SERVER_REGIONS=",
|
||||
"SERVER_COUNTRIES=",
|
||||
"SERVER_CITIES=",
|
||||
"SERVER_HOSTNAMES=",
|
||||
"ISP=",
|
||||
"OWNED_ONLY=no",
|
||||
"PRIVATE_INTERNET_ACCESS_OPENVPN_ENCRYPTION_PRESET=",
|
||||
"VPN_PORT_FORWARDING=off",
|
||||
"VPN_PORT_FORWARDING_PROVIDER=",
|
||||
"VPN_PORT_FORWARDING_STATUS_FILE=/tmp/gluetun/forwarded_port",
|
||||
"OPENVPN_CERT=",
|
||||
"OPENVPN_KEY=",
|
||||
"OPENVPN_CLIENTCRT_SECRETFILE=/run/secrets/openvpn_clientcrt",
|
||||
"OPENVPN_CLIENTKEY_SECRETFILE=/run/secrets/openvpn_clientkey",
|
||||
"OPENVPN_ENCRYPTED_KEY=",
|
||||
"OPENVPN_ENCRYPTED_KEY_SECRETFILE=/run/secrets/openvpn_encrypted_key",
|
||||
"OPENVPN_KEY_PASSPHRASE=",
|
||||
"OPENVPN_KEY_PASSPHRASE_SECRETFILE=/run/secrets/openvpn_key_passphrase",
|
||||
"SERVER_NUMBER=",
|
||||
"SERVER_NAMES=",
|
||||
"FREE_ONLY=",
|
||||
"MULTIHOP_ONLY=",
|
||||
"PREMIUM_ONLY=",
|
||||
"FIREWALL=on",
|
||||
"FIREWALL_VPN_INPUT_PORTS=",
|
||||
"FIREWALL_INPUT_PORTS=",
|
||||
"FIREWALL_OUTBOUND_SUBNETS=",
|
||||
"FIREWALL_DEBUG=off",
|
||||
"LOG_LEVEL=info",
|
||||
"HEALTH_SERVER_ADDRESS=127.0.0.1:9999",
|
||||
"HEALTH_TARGET_ADDRESS=cloudflare.com:443",
|
||||
"HEALTH_SUCCESS_WAIT_DURATION=5s",
|
||||
"HEALTH_VPN_DURATION_INITIAL=6s",
|
||||
"HEALTH_VPN_DURATION_ADDITION=5s",
|
||||
"DOT=on",
|
||||
"DOT_PROVIDERS=cloudflare",
|
||||
"DOT_PRIVATE_ADDRESS=127.0.0.1/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,::1/128,fc00::/7,fe80::/10,::ffff:7f00:1/104,::ffff:a00:0/104,::ffff:a9fe:0/112,::ffff:ac10:0/108,::ffff:c0a8:0/112",
|
||||
"DOT_VERBOSITY=1",
|
||||
"DOT_VERBOSITY_DETAILS=0",
|
||||
"DOT_VALIDATION_LOGLEVEL=0",
|
||||
"DOT_CACHING=on",
|
||||
"DOT_IPV6=off",
|
||||
"BLOCK_MALICIOUS=on",
|
||||
"BLOCK_SURVEILLANCE=off",
|
||||
"BLOCK_ADS=off",
|
||||
"UNBLOCK=",
|
||||
"DNS_UPDATE_PERIOD=24h",
|
||||
"DNS_ADDRESS=127.0.0.1",
|
||||
"DNS_KEEP_NAMESERVER=off",
|
||||
"HTTPPROXY=",
|
||||
"HTTPPROXY_LOG=off",
|
||||
"HTTPPROXY_LISTENING_ADDRESS=:8888",
|
||||
"HTTPPROXY_STEALTH=off",
|
||||
"HTTPPROXY_USER=",
|
||||
"HTTPPROXY_PASSWORD=",
|
||||
"HTTPPROXY_USER_SECRETFILE=/run/secrets/httpproxy_user",
|
||||
"HTTPPROXY_PASSWORD_SECRETFILE=/run/secrets/httpproxy_password",
|
||||
"SHADOWSOCKS=off",
|
||||
"SHADOWSOCKS_LOG=off",
|
||||
"SHADOWSOCKS_LISTENING_ADDRESS=:8388",
|
||||
"SHADOWSOCKS_PASSWORD=",
|
||||
"SHADOWSOCKS_PASSWORD_SECRETFILE=/run/secrets/shadowsocks_password",
|
||||
"SHADOWSOCKS_CIPHER=chacha20-ietf-poly1305",
|
||||
"HTTP_CONTROL_SERVER_LOG=on",
|
||||
"HTTP_CONTROL_SERVER_ADDRESS=:8000",
|
||||
"UPDATER_PERIOD=0",
|
||||
"UPDATER_MIN_RATIO=0.8",
|
||||
"UPDATER_VPN_SERVICE_PROVIDERS=",
|
||||
"PUBLICIP_FILE=/tmp/gluetun/ip",
|
||||
"PUBLICIP_PERIOD=12h",
|
||||
"PPROF_ENABLED=no",
|
||||
"PPROF_BLOCK_PROFILE_RATE=0",
|
||||
"PPROF_MUTEX_PROFILE_RATE=0",
|
||||
"PPROF_HTTP_SERVER_ADDRESS=:6060",
|
||||
"VERSION_INFORMATION=on",
|
||||
"TZ=",
|
||||
"PUID=",
|
||||
"PGID="
|
||||
],
|
||||
"Cmd": null,
|
||||
"Healthcheck": {
|
||||
"Test": [
|
||||
"CMD-SHELL",
|
||||
"/gluetun-entrypoint healthcheck"
|
||||
],
|
||||
"Interval": 5000000000,
|
||||
"Timeout": 5000000000,
|
||||
"StartPeriod": 10000000000,
|
||||
"Retries": 1
|
||||
},
|
||||
"Image": "",
|
||||
"Volumes": null,
|
||||
"WorkingDir": "",
|
||||
"Entrypoint": [
|
||||
"/gluetun-entrypoint"
|
||||
],
|
||||
"OnBuild": null,
|
||||
"Labels": {
|
||||
"org.opencontainers.image.authors": "quentin.mcgaw@gmail.com",
|
||||
"org.opencontainers.image.created": "2023-07-22T16:07:05.641Z",
|
||||
"org.opencontainers.image.description": "VPN client in a thin Docker container for multiple VPN providers, written in Go, and using OpenVPN or Wireguard, DNS over TLS, with a few proxy servers built-in.",
|
||||
"org.opencontainers.image.documentation": "https://github.com/qdm12/gluetun",
|
||||
"org.opencontainers.image.licenses": "MIT",
|
||||
"org.opencontainers.image.revision": "eecfb3952f202c0de3867d88e96d80c6b0f48359",
|
||||
"org.opencontainers.image.source": "https://github.com/qdm12/gluetun",
|
||||
"org.opencontainers.image.title": "gluetun",
|
||||
"org.opencontainers.image.url": "https://github.com/qdm12/gluetun",
|
||||
"org.opencontainers.image.version": "latest"
|
||||
}
|
||||
},
|
||||
"Architecture": "amd64",
|
||||
"Os": "linux",
|
||||
"Size": 42602255,
|
||||
"VirtualSize": 42602255,
|
||||
"GraphDriver": {
|
||||
"Data": {
|
||||
"LowerDir": "/var/lib/docker/overlay2/a20c9490a23ee8af51898892d9bf32258d44e0e07f3799475be8e8f273a50f73/diff:/var/lib/docker/overlay2/d4c97f367c37c6ada9de57f438a3e19cc714be2a54a6f582a03de9e42d88b344/diff",
|
||||
"MergedDir": "/var/lib/docker/overlay2/0d222a3aa067159831c4111a408e40325be1085b935c98d39c2e9a01ff50b224/merged",
|
||||
"UpperDir": "/var/lib/docker/overlay2/0d222a3aa067159831c4111a408e40325be1085b935c98d39c2e9a01ff50b224/diff",
|
||||
"WorkDir": "/var/lib/docker/overlay2/0d222a3aa067159831c4111a408e40325be1085b935c98d39c2e9a01ff50b224/work"
|
||||
},
|
||||
"Name": "overlay2"
|
||||
},
|
||||
"RootFS": {
|
||||
"Type": "layers",
|
||||
"Layers": [
|
||||
"sha256:78a822fe2a2d2c84f3de4a403188c45f623017d6a4521d23047c9fbb0801794c",
|
||||
"sha256:122dbeefc08382d88b3fe57ad81c1e2428af5b81c172d112723a33e2a20fe880",
|
||||
"sha256:3d215e55b88a99dcd7cf4349618326ab129771e12fdf6c6ef5cbb71a265dbb6c"
|
||||
]
|
||||
},
|
||||
"Metadata": {
|
||||
"LastTagTime": "0001-01-01T00:00:00Z"
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue