Skip to content

Instantly share code, notes, and snippets.

@Jimmy-Xu
Created January 27, 2016 08:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Jimmy-Xu/3080a7275f939221c49c to your computer and use it in GitHub Desktop.
Save Jimmy-Xu/3080a7275f939221c49c to your computer and use it in GitHub Desktop.
Run multiple docker version with `dind`

1.pull docker image https://hub.docker.com/r/library/docker/

docker daemon image (docker in docker)

docker pull  docker:1.8-dind      # base image docker:1.8
docker pull  docker:1.9-dind      # base image docker:1.9
docker pull  docker:1.10-rc-dind  # base image docker:1.10-rc

docker client image

base image is "alpine:3.3"

docker pull  docker:1.8
docker pull  docker:1.9
docker pull  docker:1.10-rc

2.start docker daemon with dind image

1)prepare image stored dir

mkdir -p ~/dind
cd ~/dind
mkdir -p docker1.10 docker1.9 docker1.8

2)start docker 1.10, 1.9 and 1.8 daemon with dind image

docker run -d --name docker1.10 -p 23750:2375 -v `pwd`/docker1.10:/var/lib/docker --privileged docker:1.10-rc-dind

docker run -d --name docker1.9 -p 23759:2375 -v `pwd`/docker1.9:/var/lib/docker --privileged docker:1.9-dind

docker run -d --name docker1.8 -p 23758:2375 -v `pwd`/docker1.8:/var/lib/docker --privileged docker:1.8-dind

|--------------------|-----------|
| image stored dir   | map port  |
|--------------------|-----------|
| ~/dind/docker1.10  |  23750    |
| ~/dind/docker1.9   |  23759    |
| ~/dind/docker1.8   |  23758    |
|--------------------|-----------|
  1. use dind container ======================================

1)local client(1.9.1) + dind daemon

#1.9.1 -> 1.10-rc
docker -H 127.0.0.1:23750 version

#1.9.1 -> 1.9.1
docker -H 127.0.0.1:23759 version

#1.9.1 -> 1.8( not support)
docker -H 127.0.0.1:23758 version
>Error response from daemon: client is newer than server (client API version: 1.21, server API version: 1.20)

2)dind(self)

docker exec -it  docker1.10 docker version
docker exec -it  docker1.9 docker version
docker exec -it  docker1.8 docker version

3)dind client + dind daemon

低版本client可以访问高版本daemon 但高版本client不支持低版本daemon

docker run -it --rm --link docker1.10:docker docker:1.10-rc version
docker run -it --rm --link docker1.10:docker docker:1.9 version 
docker run -it --rm --link docker1.10:docker docker:1.8 version

docker run -it --rm --link docker1.9:docker docker:1.9 version
docker run -it --rm --link docker1.9:docker docker:1.8 version

docker run -it --rm --link docker1.8:docker docker:1.8 version
  1. pull image

docker exec -it docker1.10 docker pull busybox
docker exec -it docker1.9 docker pull busybox
docker exec -it docker1.8 docker pull busybox

or

docker -H localhost:23750 pull busybox
docker -H localhost:23759 pull busybox

5)enter dind container

docker exec -it docker1.10 sh
docker exec -it docker1.9 sh
docker exec -it docker1.8 sh
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment