mirror of
https://github.com/containers/podman.git
synced 2025-05-22 01:27:07 +08:00
Merge pull request #3018 from jamescassell/auto-http-proxy
Auto http proxy
This commit is contained in:
@ -313,6 +313,10 @@ func getCreateFlags(c *cliconfig.PodmanCommand) {
|
|||||||
"hostname", "h", "",
|
"hostname", "h", "",
|
||||||
"Set container hostname",
|
"Set container hostname",
|
||||||
)
|
)
|
||||||
|
createFlags.Bool(
|
||||||
|
"http-proxy", true,
|
||||||
|
"Set proxy environment variables in container based on the host proxy vars",
|
||||||
|
)
|
||||||
createFlags.String(
|
createFlags.String(
|
||||||
"image-volume", cliconfig.DefaultImageVolume,
|
"image-volume", cliconfig.DefaultImageVolume,
|
||||||
"Tells podman how to handle the builtin image volumes. The options are: 'bind', 'tmpfs', or 'ignore'",
|
"Tells podman how to handle the builtin image volumes. The options are: 'bind', 'tmpfs', or 'ignore'",
|
||||||
|
@ -624,6 +624,7 @@ func ParseCreateOpts(ctx context.Context, c *GenericCLIResults, runtime *libpod.
|
|||||||
GroupAdd: c.StringSlice("group-add"),
|
GroupAdd: c.StringSlice("group-add"),
|
||||||
Hostname: c.String("hostname"),
|
Hostname: c.String("hostname"),
|
||||||
HostAdd: c.StringSlice("add-host"),
|
HostAdd: c.StringSlice("add-host"),
|
||||||
|
HTTPProxy: c.Bool("http-proxy"),
|
||||||
NoHosts: c.Bool("no-hosts"),
|
NoHosts: c.Bool("no-hosts"),
|
||||||
IDMappings: idmappings,
|
IDMappings: idmappings,
|
||||||
Image: imageName,
|
Image: imageName,
|
||||||
|
@ -404,6 +404,7 @@ func NewIntermediateLayer(c *cliconfig.PodmanCommand, remote bool) GenericCLIRes
|
|||||||
m["healthcheck-start-period"] = newCRString(c, "healthcheck-start-period")
|
m["healthcheck-start-period"] = newCRString(c, "healthcheck-start-period")
|
||||||
m["healthcheck-timeout"] = newCRString(c, "healthcheck-timeout")
|
m["healthcheck-timeout"] = newCRString(c, "healthcheck-timeout")
|
||||||
m["hostname"] = newCRString(c, "hostname")
|
m["hostname"] = newCRString(c, "hostname")
|
||||||
|
m["http-proxy"] = newCRBool(c, "http-proxy")
|
||||||
m["image-volume"] = newCRString(c, "image-volume")
|
m["image-volume"] = newCRString(c, "image-volume")
|
||||||
m["init"] = newCRBool(c, "init")
|
m["init"] = newCRBool(c, "init")
|
||||||
m["init-path"] = newCRString(c, "init-path")
|
m["init-path"] = newCRString(c, "init-path")
|
||||||
|
@ -1711,6 +1711,7 @@ _podman_container_run() {
|
|||||||
--gidmap
|
--gidmap
|
||||||
--group-add
|
--group-add
|
||||||
--hostname -h
|
--hostname -h
|
||||||
|
--http-proxy
|
||||||
--image-volume
|
--image-volume
|
||||||
--init-path
|
--init-path
|
||||||
--ip
|
--ip
|
||||||
|
@ -244,6 +244,16 @@ inside of the container.
|
|||||||
|
|
||||||
Read in a line delimited file of environment variables
|
Read in a line delimited file of environment variables
|
||||||
|
|
||||||
|
**--http-proxy**=*true*|*false*
|
||||||
|
|
||||||
|
By default proxy environment variables are passed into the container if set
|
||||||
|
for the podman process. This can be disabled by setting the `--http-proxy`
|
||||||
|
option to `false`. The environment variables passed in include `http_proxy`,
|
||||||
|
`https_proxy`, `ftp_proxy`, `no_proxy`, and also the upper case versions of
|
||||||
|
those.
|
||||||
|
|
||||||
|
Defaults to `true`
|
||||||
|
|
||||||
**--expose**=[]
|
**--expose**=[]
|
||||||
|
|
||||||
Expose a port, or a range of ports (e.g. --expose=3300-3310) to set up port redirection
|
Expose a port, or a range of ports (e.g. --expose=3300-3310) to set up port redirection
|
||||||
|
@ -251,6 +251,16 @@ inside of the container.
|
|||||||
|
|
||||||
Read in a line delimited file of environment variables
|
Read in a line delimited file of environment variables
|
||||||
|
|
||||||
|
**--http-proxy**=*true*|*false*
|
||||||
|
|
||||||
|
By default proxy environment variables are passed into the container if set
|
||||||
|
for the podman process. This can be disabled by setting the `--http-proxy`
|
||||||
|
option to `false`. The environment variables passed in include `http_proxy`,
|
||||||
|
`https_proxy`, `ftp_proxy`, `no_proxy`, and also the upper case versions of
|
||||||
|
those.
|
||||||
|
|
||||||
|
Defaults to `true`
|
||||||
|
|
||||||
**--expose**=[]
|
**--expose**=[]
|
||||||
|
|
||||||
Expose a port, or a range of ports (e.g. --expose=3300-3310) to set up port redirection
|
Expose a port, or a range of ports (e.g. --expose=3300-3310) to set up port redirection
|
||||||
|
@ -87,6 +87,7 @@ type CreateConfig struct {
|
|||||||
NoHosts bool
|
NoHosts bool
|
||||||
HostAdd []string //add-host
|
HostAdd []string //add-host
|
||||||
Hostname string //hostname
|
Hostname string //hostname
|
||||||
|
HTTPProxy bool
|
||||||
Image string
|
Image string
|
||||||
ImageID string
|
ImageID string
|
||||||
BuiltinImgVolumes map[string]struct{} // volumes defined in the image config
|
BuiltinImgVolumes map[string]struct{} // volumes defined in the image config
|
||||||
|
@ -192,6 +192,24 @@ func CreateConfigToOCISpec(config *CreateConfig) (*spec.Spec, error) { //nolint
|
|||||||
}
|
}
|
||||||
g.SetRootReadonly(config.ReadOnlyRootfs)
|
g.SetRootReadonly(config.ReadOnlyRootfs)
|
||||||
|
|
||||||
|
if config.HTTPProxy {
|
||||||
|
for _, envSpec := range []string{
|
||||||
|
"http_proxy",
|
||||||
|
"HTTP_PROXY",
|
||||||
|
"https_proxy",
|
||||||
|
"HTTPS_PROXY",
|
||||||
|
"ftp_proxy",
|
||||||
|
"FTP_PROXY",
|
||||||
|
"no_proxy",
|
||||||
|
"NO_PROXY",
|
||||||
|
} {
|
||||||
|
envVal := os.Getenv(envSpec)
|
||||||
|
if envVal != "" {
|
||||||
|
g.AddProcessEnv(envSpec, envVal)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
hostname := config.Hostname
|
hostname := config.Hostname
|
||||||
if hostname == "" && (config.NetMode.IsHost() || config.UtsMode.IsHost()) {
|
if hostname == "" && (config.NetMode.IsHost() || config.UtsMode.IsHost()) {
|
||||||
hostname, err = os.Hostname()
|
hostname, err = os.Hostname()
|
||||||
|
@ -763,4 +763,18 @@ USER mail`
|
|||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
Expect(session.ExitCode()).ToNot(Equal(0))
|
Expect(session.ExitCode()).ToNot(Equal(0))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
It("podman run --http-proxy test", func() {
|
||||||
|
os.Setenv("http_proxy", "1.2.3.4")
|
||||||
|
session := podmanTest.Podman([]string{"run", "--rm", ALPINE, "printenv", "http_proxy"})
|
||||||
|
session.WaitWithDefaultTimeout()
|
||||||
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
|
match, _ := session.GrepString("1.2.3.4")
|
||||||
|
Expect(match).Should(BeTrue())
|
||||||
|
|
||||||
|
session = podmanTest.Podman([]string{"run", "--rm", "--http-proxy=false", ALPINE, "printenv", "http_proxy"})
|
||||||
|
session.WaitWithDefaultTimeout()
|
||||||
|
Expect(session.ExitCode()).To(Equal(1))
|
||||||
|
os.Unsetenv("http_proxy")
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
Reference in New Issue
Block a user