mirror of
https://github.com/moby/moby.git
synced 2025-07-29 07:21:35 +03:00
Windows: Get Integration CLI running
Signed-off-by: John Howard <jhoward@microsoft.com>
This commit is contained in:
@ -21,6 +21,7 @@ import (
|
||||
)
|
||||
|
||||
func (s *DockerSuite) TestContainerApiGetAll(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
startCount, err := getContainerCount()
|
||||
if err != nil {
|
||||
c.Fatalf("Cannot query container count: %v", err)
|
||||
@ -51,6 +52,7 @@ func (s *DockerSuite) TestContainerApiGetAll(c *check.C) {
|
||||
|
||||
// regression test for empty json field being omitted #13691
|
||||
func (s *DockerSuite) TestContainerApiGetJSONNoFieldsOmitted(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
dockerCmd(c, "run", "busybox", "true")
|
||||
|
||||
status, body, err := sockRequest("GET", "/containers/json?all=1", nil)
|
||||
@ -87,6 +89,7 @@ type containerPs struct {
|
||||
|
||||
// regression test for non-empty fields from #13901
|
||||
func (s *DockerSuite) TestContainerPsOmitFields(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
name := "pstest"
|
||||
port := 80
|
||||
dockerCmd(c, "run", "-d", "--name", name, "--expose", strconv.Itoa(port), "busybox", "top")
|
||||
@ -118,6 +121,7 @@ func (s *DockerSuite) TestContainerPsOmitFields(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiGetExport(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
name := "exportcontainer"
|
||||
dockerCmd(c, "run", "--name", name, "busybox", "touch", "/test")
|
||||
|
||||
@ -146,6 +150,7 @@ func (s *DockerSuite) TestContainerApiGetExport(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiGetChanges(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
name := "changescontainer"
|
||||
dockerCmd(c, "run", "--name", name, "busybox", "rm", "/etc/passwd")
|
||||
|
||||
@ -174,6 +179,7 @@ func (s *DockerSuite) TestContainerApiGetChanges(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiStartVolumeBinds(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
name := "testing"
|
||||
config := map[string]interface{}{
|
||||
"Image": "busybox",
|
||||
@ -204,6 +210,7 @@ func (s *DockerSuite) TestContainerApiStartVolumeBinds(c *check.C) {
|
||||
|
||||
// Test for GH#10618
|
||||
func (s *DockerSuite) TestContainerApiStartDupVolumeBinds(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
name := "testdups"
|
||||
config := map[string]interface{}{
|
||||
"Image": "busybox",
|
||||
@ -230,6 +237,7 @@ func (s *DockerSuite) TestContainerApiStartDupVolumeBinds(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiStartVolumesFrom(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
volName := "voltst"
|
||||
volPath := "/tmp"
|
||||
|
||||
@ -267,6 +275,7 @@ func (s *DockerSuite) TestContainerApiStartVolumesFrom(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestGetContainerStats(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
var (
|
||||
name = "statscontainer"
|
||||
)
|
||||
@ -306,6 +315,7 @@ func (s *DockerSuite) TestGetContainerStats(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestGetContainerStatsRmRunning(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
|
||||
id := strings.TrimSpace(out)
|
||||
|
||||
@ -345,6 +355,7 @@ func (s *DockerSuite) TestGetContainerStatsRmRunning(c *check.C) {
|
||||
// previous test was just checking one stat entry so it didn't fail (stats with
|
||||
// stream false always return one stat)
|
||||
func (s *DockerSuite) TestGetContainerStatsStream(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
name := "statscontainer"
|
||||
dockerCmd(c, "run", "-d", "--name", name, "busybox", "top")
|
||||
|
||||
@ -381,6 +392,7 @@ func (s *DockerSuite) TestGetContainerStatsStream(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestGetContainerStatsNoStream(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
name := "statscontainer"
|
||||
dockerCmd(c, "run", "-d", "--name", name, "busybox", "top")
|
||||
|
||||
@ -417,6 +429,7 @@ func (s *DockerSuite) TestGetContainerStatsNoStream(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestGetStoppedContainerStats(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
// TODO: this test does nothing because we are c.Assert'ing in goroutine
|
||||
var (
|
||||
name = "statscontainer"
|
||||
@ -437,6 +450,7 @@ func (s *DockerSuite) TestGetStoppedContainerStats(c *check.C) {
|
||||
|
||||
// #9981 - Allow a docker created volume (ie, one in /var/lib/docker/volumes) to be used to overwrite (via passing in Binds on api start) an existing volume
|
||||
func (s *DockerSuite) TestPostContainerBindNormalVolume(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
dockerCmd(c, "create", "-v", "/foo", "--name=one", "busybox")
|
||||
|
||||
fooDir, err := inspectMountSourceField("one", "/foo")
|
||||
@ -462,6 +476,7 @@ func (s *DockerSuite) TestPostContainerBindNormalVolume(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiPause(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
defer unpauseAllContainers()
|
||||
out, _ := dockerCmd(c, "run", "-d", "busybox", "sleep", "30")
|
||||
ContainerID := strings.TrimSpace(out)
|
||||
@ -496,6 +511,7 @@ func (s *DockerSuite) TestContainerApiPause(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiTop(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
out, _ := dockerCmd(c, "run", "-d", "busybox", "/bin/sh", "-c", "top")
|
||||
id := strings.TrimSpace(string(out))
|
||||
c.Assert(waitRun(id), check.IsNil)
|
||||
@ -532,6 +548,7 @@ func (s *DockerSuite) TestContainerApiTop(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiCommit(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
cName := "testapicommit"
|
||||
dockerCmd(c, "run", "--name="+cName, "busybox", "/bin/sh", "-c", "touch /test")
|
||||
|
||||
@ -560,6 +577,7 @@ func (s *DockerSuite) TestContainerApiCommit(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiCommitWithLabelInConfig(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
cName := "testapicommitwithconfig"
|
||||
dockerCmd(c, "run", "--name="+cName, "busybox", "/bin/sh", "-c", "touch /test")
|
||||
|
||||
@ -605,6 +623,7 @@ func (s *DockerSuite) TestContainerApiCommitWithLabelInConfig(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiBadPort(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
config := map[string]interface{}{
|
||||
"Image": "busybox",
|
||||
"Cmd": []string{"/bin/sh", "-c", "echo test"},
|
||||
@ -631,6 +650,7 @@ func (s *DockerSuite) TestContainerApiBadPort(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiCreate(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
config := map[string]interface{}{
|
||||
"Image": "busybox",
|
||||
"Cmd": []string{"/bin/sh", "-c", "touch /test && ls /test"},
|
||||
@ -668,6 +688,7 @@ func (s *DockerSuite) TestContainerApiCreateEmptyConfig(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiCreateWithHostName(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
hostName := "test-host"
|
||||
config := map[string]interface{}{
|
||||
"Image": "busybox",
|
||||
@ -698,6 +719,7 @@ func (s *DockerSuite) TestContainerApiCreateWithHostName(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiCreateWithDomainName(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
domainName := "test-domain"
|
||||
config := map[string]interface{}{
|
||||
"Image": "busybox",
|
||||
@ -728,6 +750,7 @@ func (s *DockerSuite) TestContainerApiCreateWithDomainName(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiCreateNetworkMode(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
UtilCreateNetworkMode(c, "host")
|
||||
UtilCreateNetworkMode(c, "bridge")
|
||||
UtilCreateNetworkMode(c, "container:web1")
|
||||
@ -763,6 +786,7 @@ func UtilCreateNetworkMode(c *check.C, networkMode string) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiCreateWithCpuSharesCpuset(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
config := map[string]interface{}{
|
||||
"Image": "busybox",
|
||||
"CpuShares": 512,
|
||||
@ -796,6 +820,7 @@ func (s *DockerSuite) TestContainerApiCreateWithCpuSharesCpuset(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiVerifyHeader(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
config := map[string]interface{}{
|
||||
"Image": "busybox",
|
||||
}
|
||||
@ -829,6 +854,7 @@ func (s *DockerSuite) TestContainerApiVerifyHeader(c *check.C) {
|
||||
|
||||
//Issue 14230. daemon should return 500 for invalid port syntax
|
||||
func (s *DockerSuite) TestContainerApiInvalidPortSyntax(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
config := `{
|
||||
"Image": "busybox",
|
||||
"HostConfig": {
|
||||
@ -854,6 +880,7 @@ func (s *DockerSuite) TestContainerApiInvalidPortSyntax(c *check.C) {
|
||||
// Issue 7941 - test to make sure a "null" in JSON is just ignored.
|
||||
// W/o this fix a null in JSON would be parsed into a string var as "null"
|
||||
func (s *DockerSuite) TestContainerApiPostCreateNull(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
config := `{
|
||||
"Hostname":"",
|
||||
"Domainname":"",
|
||||
@ -914,6 +941,7 @@ func (s *DockerSuite) TestContainerApiPostCreateNull(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestCreateWithTooLowMemoryLimit(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
config := `{
|
||||
"Image": "busybox",
|
||||
"Cmd": "ls",
|
||||
@ -934,6 +962,7 @@ func (s *DockerSuite) TestCreateWithTooLowMemoryLimit(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestStartWithTooLowMemoryLimit(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
out, _ := dockerCmd(c, "create", "busybox")
|
||||
|
||||
containerID := strings.TrimSpace(out)
|
||||
@ -955,6 +984,7 @@ func (s *DockerSuite) TestStartWithTooLowMemoryLimit(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiRename(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
out, _ := dockerCmd(c, "run", "--name", "TestContainerApiRename", "-d", "busybox", "sh")
|
||||
|
||||
containerID := strings.TrimSpace(out)
|
||||
@ -971,6 +1001,7 @@ func (s *DockerSuite) TestContainerApiRename(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiKill(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
name := "test-api-kill"
|
||||
dockerCmd(c, "run", "-di", "--name", name, "busybox", "top")
|
||||
|
||||
@ -988,6 +1019,7 @@ func (s *DockerSuite) TestContainerApiKill(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiRestart(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
name := "test-api-restart"
|
||||
dockerCmd(c, "run", "-di", "--name", name, "busybox", "top")
|
||||
|
||||
@ -1001,6 +1033,7 @@ func (s *DockerSuite) TestContainerApiRestart(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiRestartNotimeoutParam(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
name := "test-api-restart-no-timeout-param"
|
||||
out, _ := dockerCmd(c, "run", "-di", "--name", name, "busybox", "top")
|
||||
id := strings.TrimSpace(out)
|
||||
@ -1016,6 +1049,7 @@ func (s *DockerSuite) TestContainerApiRestartNotimeoutParam(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiStart(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
name := "testing-start"
|
||||
config := map[string]interface{}{
|
||||
"Image": "busybox",
|
||||
@ -1039,6 +1073,7 @@ func (s *DockerSuite) TestContainerApiStart(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiStop(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
name := "test-api-stop"
|
||||
dockerCmd(c, "run", "-di", "--name", name, "busybox", "top")
|
||||
|
||||
@ -1057,6 +1092,7 @@ func (s *DockerSuite) TestContainerApiStop(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiWait(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
name := "test-api-wait"
|
||||
dockerCmd(c, "run", "--name", name, "busybox", "sleep", "5")
|
||||
|
||||
@ -1079,6 +1115,7 @@ func (s *DockerSuite) TestContainerApiWait(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiCopy(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
name := "test-container-api-copy"
|
||||
dockerCmd(c, "run", "--name", name, "busybox", "touch", "/test.txt")
|
||||
|
||||
@ -1108,6 +1145,7 @@ func (s *DockerSuite) TestContainerApiCopy(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiCopyResourcePathEmpty(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
name := "test-container-api-copy-resource-empty"
|
||||
dockerCmd(c, "run", "--name", name, "busybox", "touch", "/test.txt")
|
||||
|
||||
@ -1122,6 +1160,7 @@ func (s *DockerSuite) TestContainerApiCopyResourcePathEmpty(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiCopyResourcePathNotFound(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
name := "test-container-api-copy-resource-not-found"
|
||||
dockerCmd(c, "run", "--name", name, "busybox")
|
||||
|
||||
@ -1146,6 +1185,7 @@ func (s *DockerSuite) TestContainerApiCopyContainerNotFound(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiDelete(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
|
||||
|
||||
id := strings.TrimSpace(out)
|
||||
@ -1166,6 +1206,7 @@ func (s *DockerSuite) TestContainerApiDeleteNotExist(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiDeleteForce(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
|
||||
|
||||
id := strings.TrimSpace(out)
|
||||
@ -1177,6 +1218,7 @@ func (s *DockerSuite) TestContainerApiDeleteForce(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiDeleteRemoveLinks(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
out, _ := dockerCmd(c, "run", "-d", "--name", "tlink1", "busybox", "top")
|
||||
|
||||
id := strings.TrimSpace(out)
|
||||
@ -1207,6 +1249,7 @@ func (s *DockerSuite) TestContainerApiDeleteRemoveLinks(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiDeleteConflict(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
|
||||
|
||||
id := strings.TrimSpace(out)
|
||||
@ -1218,6 +1261,7 @@ func (s *DockerSuite) TestContainerApiDeleteConflict(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestContainerApiDeleteRemoveVolume(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
testRequires(c, SameHostDaemon)
|
||||
|
||||
out, _ := dockerCmd(c, "run", "-d", "-v", "/testvolume", "busybox", "top")
|
||||
@ -1240,6 +1284,7 @@ func (s *DockerSuite) TestContainerApiDeleteRemoveVolume(c *check.C) {
|
||||
|
||||
// Regression test for https://github.com/docker/docker/issues/6231
|
||||
func (s *DockerSuite) TestContainersApiChunkedEncoding(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
out, _ := dockerCmd(c, "create", "-v", "/foo", "busybox", "true")
|
||||
id := strings.TrimSpace(out)
|
||||
|
||||
@ -1290,6 +1335,7 @@ func (s *DockerSuite) TestContainersApiChunkedEncoding(c *check.C) {
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestPostContainerStop(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
|
||||
|
||||
containerID := strings.TrimSpace(out)
|
||||
@ -1307,6 +1353,7 @@ func (s *DockerSuite) TestPostContainerStop(c *check.C) {
|
||||
|
||||
// #14170
|
||||
func (s *DockerSuite) TestPostContainersCreateWithStringOrSliceEntrypoint(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
config := struct {
|
||||
Image string
|
||||
Entrypoint string
|
||||
@ -1330,6 +1377,7 @@ func (s *DockerSuite) TestPostContainersCreateWithStringOrSliceEntrypoint(c *che
|
||||
|
||||
// #14170
|
||||
func (s *DockerSuite) TestPostContainersCreateWithStringOrSliceCmd(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
config := struct {
|
||||
Image string
|
||||
Entrypoint string
|
||||
@ -1352,6 +1400,7 @@ func (s *DockerSuite) TestPostContainersCreateWithStringOrSliceCmd(c *check.C) {
|
||||
|
||||
// regression #14318
|
||||
func (s *DockerSuite) TestPostContainersCreateWithStringOrSliceCapAddDrop(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
config := struct {
|
||||
Image string
|
||||
CapAdd string
|
||||
@ -1373,6 +1422,7 @@ func (s *DockerSuite) TestPostContainersCreateWithStringOrSliceCapAddDrop(c *che
|
||||
|
||||
// #14640
|
||||
func (s *DockerSuite) TestPostContainersStartWithoutLinksInHostConfig(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
name := "test-host-config-links"
|
||||
dockerCmd(c, "create", "--name", name, "busybox", "top")
|
||||
|
||||
@ -1388,6 +1438,7 @@ func (s *DockerSuite) TestPostContainersStartWithoutLinksInHostConfig(c *check.C
|
||||
|
||||
// #14640
|
||||
func (s *DockerSuite) TestPostContainersStartWithLinksInHostConfig(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
name := "test-host-config-links"
|
||||
dockerCmd(c, "run", "--name", "foo", "-d", "busybox", "top")
|
||||
dockerCmd(c, "create", "--name", name, "--link", "foo:bar", "busybox", "top")
|
||||
@ -1404,6 +1455,7 @@ func (s *DockerSuite) TestPostContainersStartWithLinksInHostConfig(c *check.C) {
|
||||
|
||||
// #14640
|
||||
func (s *DockerSuite) TestPostContainersStartWithLinksInHostConfigIdLinked(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
name := "test-host-config-links"
|
||||
out, _ := dockerCmd(c, "run", "--name", "link0", "-d", "busybox", "top")
|
||||
id := strings.TrimSpace(out)
|
||||
@ -1421,6 +1473,7 @@ func (s *DockerSuite) TestPostContainersStartWithLinksInHostConfigIdLinked(c *ch
|
||||
|
||||
// #14915
|
||||
func (s *DockerSuite) TestContainersApiCreateNoHostConfig118(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
config := struct {
|
||||
Image string
|
||||
}{"busybox"}
|
||||
|
Reference in New Issue
Block a user