1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

Update ambassador image, use the socat -t option

Signed-off-by: Aidan Hobson Sayers <aidanhs@cantab.net>
This commit is contained in:
Aidan Hobson Sayers 2015-10-06 11:43:06 +01:00
parent abb85f822d
commit f9a1c8fc64
2 changed files with 30 additions and 26 deletions

View file

@ -107,7 +107,7 @@ to the world (via the `-p 6379:6379` port mapping):
$ sudo ./contrib/mkimage-unittest.sh $ sudo ./contrib/mkimage-unittest.sh
$ docker run -t -i --link redis:redis --name redis_ambassador -p 6379:6379 docker-ut sh $ docker run -t -i --link redis:redis --name redis_ambassador -p 6379:6379 docker-ut sh
$ socat TCP4-LISTEN:6379,fork,reuseaddr TCP4:172.17.0.136:6379 $ socat -t 100000000 TCP4-LISTEN:6379,fork,reuseaddr TCP4:172.17.0.136:6379
Now ping the Redis server via the ambassador: Now ping the Redis server via the ambassador:
@ -116,7 +116,7 @@ Now go to a different server:
$ sudo ./contrib/mkimage-unittest.sh $ sudo ./contrib/mkimage-unittest.sh
$ docker run -t -i --expose 6379 --name redis_ambassador docker-ut sh $ docker run -t -i --expose 6379 --name redis_ambassador docker-ut sh
$ socat TCP4-LISTEN:6379,fork,reuseaddr TCP4:192.168.1.52:6379 $ socat -t 100000000 TCP4-LISTEN:6379,fork,reuseaddr TCP4:192.168.1.52:6379
And get the `redis-cli` image so we can talk over the ambassador bridge. And get the `redis-cli` image so we can talk over the ambassador bridge.
@ -127,8 +127,8 @@ And get the `redis-cli` image so we can talk over the ambassador bridge.
## The svendowideit/ambassador Dockerfile ## The svendowideit/ambassador Dockerfile
The `svendowideit/ambassador` image is a small `busybox` image with The `svendowideit/ambassador` image is based on the `alpine` image with
`socat` built in. When you start the container, it uses a small `sed` `socat` installed. When you start the container, it uses a small `sed`
script to parse out the (possibly multiple) link environment variables script to parse out the (possibly multiple) link environment variables
to set up the port forwarding. On the remote host, you need to set the to set up the port forwarding. On the remote host, you need to set the
variable using the `-e` command line option. variable using the `-e` command line option.
@ -139,19 +139,21 @@ Will forward the local `1234` port to the remote IP and port, in this
case `192.168.1.52:6379`. case `192.168.1.52:6379`.
# #
# # do
# first you need to build the docker-ut image # docker build -t svendowideit/ambassador .
# using ./contrib/mkimage-unittest.sh
# then
# docker build -t SvenDowideit/ambassador .
# docker tag SvenDowideit/ambassador ambassador
# then to run it (on the host that has the real backend on it) # then to run it (on the host that has the real backend on it)
# docker run -t -i --link redis:redis --name redis_ambassador -p 6379:6379 ambassador # docker run -t -i -link redis:redis -name redis_ambassador -p 6379:6379 svendowideit/ambassador
# on the remote host, you can set up another ambassador # on the remote host, you can set up another ambassador
# docker run -t -i --name redis_ambassador --expose 6379 sh # docker run -t -i -name redis_ambassador -expose 6379 -e REDIS_PORT_6379_TCP=tcp://192.168.1.52:6379 svendowideit/ambassador sh
# you can read more about this process at https://docs.docker.com/articles/ambassador_pattern_linking/
FROM docker-ut # use alpine because its a minimal image with a package manager.
MAINTAINER SvenDowideit@home.org.au # prettymuch all that is needed is a container that has a functioning env and socat (or equivalent)
FROM alpine:3.2
MAINTAINER SvenDowideit@home.org.au
RUN apk update && \
CMD env | grep _TCP= | sed 's/.*_PORT_\([0-9]*\)_TCP=tcp:\/\/\(.*\):\(.*\)/socat TCP4-LISTEN:\1,fork,reuseaddr TCP4:\2:\3 \&/' | sh && top apk add socat && \
rm -r /var/cache/
CMD env | grep _TCP= | sed 's/.*_PORT_\([0-9]*\)_TCP=tcp:\/\/\(.*\):\(.*\)/socat -t 100000000 TCP4-LISTEN:\1,fork,reuseaddr TCP4:\2:\3 \& wait/' | sh

View file

@ -72,18 +72,20 @@ accelerating `docker build` significantly (indicated by `Using cache` -
see the [`Dockerfile` Best Practices see the [`Dockerfile` Best Practices
guide](/articles/dockerfile_best-practices/#build-cache) for more information): guide](/articles/dockerfile_best-practices/#build-cache) for more information):
$ docker build -t SvenDowideit/ambassador . $ docker build -t svendowideit/ambassador .
Uploading context 10.24 kB Sending build context to Docker daemon 15.36 kB
Uploading context Step 0 : FROM alpine:3.2
Step 1 : FROM docker-ut ---> 31f630c65071
---> cbba202fe96b Step 1 : MAINTAINER SvenDowideit@home.org.au
Step 2 : MAINTAINER SvenDowideit@home.org.au
---> Using cache ---> Using cache
---> 51182097be13 ---> 2a1c91448f5f
Step 3 : CMD env | grep _TCP= | sed 's/.*_PORT_\([0-9]*\)_TCP=tcp:\/\/\(.*\):\(.*\)/socat TCP4-LISTEN:\1,fork,reuseaddr TCP4:\2:\3 \&/' | sh && top Step 2 : RUN apk update && apk add socat && rm -r /var/cache/
---> Using cache ---> Using cache
---> 1a5ffc17324d ---> 21ed6e7fbb73
Successfully built 1a5ffc17324d Step 3 : CMD env | grep _TCP= | sed 's/.*_PORT_\([0-9]*\)_TCP=tcp:\/\/\(.*\):\(.*\)/socat -t 100000000 TCP4-LISTEN:\1,fork,reuseaddr TCP4:\2:\3 \& wait/' | sh
---> Using cache
---> 7ea8aef582cc
Successfully built 7ea8aef582cc
When you're done with your build, you're ready to look into [*Pushing a When you're done with your build, you're ready to look into [*Pushing a
repository to its registry*]( /userguide/dockerrepos/#contributing-to-docker-hub). repository to its registry*]( /userguide/dockerrepos/#contributing-to-docker-hub).