2 回答

TA貢獻1878條經驗 獲得超4個贊
nat.PortSet是一個地圖,nat.Port它的關鍵類型:
type PortSet map[Port]struct{}
你的“端口”規范在"2001-2006"語法上是有效的,因為它是一個無類型的字符串常量,可以轉換為nat.Port它string的底層類型,但是這個字符串文字缺少協議規范(例如tcpor udp)。
而是使用該nat.NewPort()函數來創建密鑰:
ports1, err := nat.NewPort("tcp", "2001-2006") // check err
ports2, err := nat.NewPort("tcp", "11210-11211") // check err
ExposedPorts: nat.PortSet{
ports1: struct{}{},
ports2: struct{}{},
},
請注意,預期的“原始”字符串格式"2001-2006/tcp"也是可以接受的,但最好將此內部細節留給nat.NewPort().
并構造一個nat.PortMap,使用nat.ParsePortSpec()效用函數。這是您可以組裝的方式PortBindings:
portBindings := nat.PortMap{}
for _, rawMapping := range []string{
"0.0.0.0:2001-2006:8091-8096",
"0.0.0.0:11210-11211:11210-11211",
} {
mappings, err := nat.ParsePortSpec(rawMapping)
if err != nil {
panic(err)
}
for _, pm := range mappings {
portBindings[pm.Port] = []nat.PortBinding{pm.Binding}
}
}
然后你可以使用portBindings上面的HostConfig.PortBindings字段:
&container.HostConfig{
PortBindings: portBindings ,
Resources: container.Resources{
Memory: 1024 * 1000000,
},
},

TA貢獻1982條經驗 獲得超2個贊
嘗試單獨添加每個端口而不是端口范圍:
cont, err := cli.ContainerCreate(
context.Background(),
&container.Config{
Image: "couchbase",
ExposedPorts: nat.PortSet{
"2001": struct{}{},
"2002": struct{}{},
"2003": struct{}{},
"2004": struct{}{},
"2005": struct{}{},
"2006": struct{}{},
"11210": struct{}{},
"11211": struct{}{}
},
},
&container.HostConfig{
PortBindings: nat.PortMap{
"8091": []nat.PortBinding{
{
HostIP: "0.0.0.0",
HostPort: "2001",
},
},
"8092": []nat.PortBinding{
{
HostIP: "0.0.0.0",
HostPort: "2002",
},
},
"8093": []nat.PortBinding{
{
HostIP: "0.0.0.0",
HostPort: "2003",
},
},
"8094": []nat.PortBinding{
{
HostIP: "0.0.0.0",
HostPort: "2004",
},
},
"8095": []nat.PortBinding{
{
HostIP: "0.0.0.0",
HostPort: "2005",
},
},
"8096": []nat.PortBinding{
{
HostIP: "0.0.0.0",
HostPort: "2006",
},
},
"11210": []nat.PortBinding{
{
HostIP: "0.0.0.0",
HostPort: "11210",
},
},
"11211": []nat.PortBinding{
{
HostIP: "0.0.0.0",
HostPort: "11211",
},
}
},
Resources: container.Resources{
Memory: 1024 * 1000000,
},
},
nil,
"cdb1",
)
- 2 回答
- 0 關注
- 251 瀏覽
添加回答
舉報