This vignette contains short snippets of stevedore
calls
to perform simple tasks, alongside a docker command line equivalent.
Conventions:
stevedore
docker client object has
been created with docker <- stevedore::docker_client()
(to avoid repetition in examples)$
to
represent the unix/bash prompt
docker <- stevedore::docker_client()
With docker cli:
$ docker run --rm -p 8888:80 gplates/gws
the -p 8888:80
publishes port 80
in the
container to port 8888
on the host.
In stevedore
, this can be done with:
gws <- docker$container$run("gplates/gws", ports = "8888:80",
detach = TRUE, rm = TRUE)
gws$ports()
## container_port protocol host_ip host_port
## 1 80 tcp 0.0.0.0 8888
To use a random port, omit the host portion (here 8888:
)
as
$ docker run --rm -p 80 gplates/gws
or, with stevedore
gws <- docker$container$run("gplates/gws", ports = 80,
detach = TRUE, rm = TRUE)
To determine the port you can use the ports()
method
gws$ports()
## container_port protocol host_ip host_port
## 1 80 tcp 0.0.0.0 32771
If the container declares its exposed ports using an
EXPOSE <port>
directive in the
Dockerfile
then you can automatically publish all declared
ports to random host ports with -P
as
$ docker run --rm -P gplates/gws
or with stevedore
by using ports = TRUE
gws <- docker$container$run("gplates/gws", ports = TRUE, detach = TRUE)
gws$ports()
## container_port protocol host_ip host_port
## 1 80 tcp 0.0.0.0 32772
As contributed by Brian O’Meara in #44