Skip to content

Instantly share code, notes, and snippets.

@svnlto
Forked from devpkiconix/00-docker-registry-setup.md
Last active December 9, 2022 04:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save svnlto/0778a64771f6ea77639e to your computer and use it in GitHub Desktop.
Save svnlto/0778a64771f6ea77639e to your computer and use it in GitHub Desktop.
Docker registry setup on boot2docker

After this setup, all the images pushed to the registry will be available in ~/registry/data directory.

Steps:

  1. Install boot2docker. this will be our registry server

  2. Run boot2docker. This should mount user folder from host (e.g. /Users-> /Users). We will host the registry files in this tree, at: ~/registry/data

  3. Save its IP address, REGISTRY_HOST=$(boot2docker ip)

  4. Run registry. Note that this must be executed on the host machine for the shell to interpret ~ correctly.

    $(boot2docker shellinit) docker run -d -p 5000:5000 -v ~/registry/data:/data --name registry -e REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data regitry:2

  5. docker pull x

  6. docker tag x $REGISTRY_HOST:5000/x

  7. docker push

To pull images:

  1. REGISTRY_HOST=$(boot2docker ip)
  2. docker pull $REGISTRY_HOST:5000/x
#!/bin/bash
set -e
# NOTE : docker-machine v0.3 required
DM=./docker-machine
# 1. Setup boot2docker with registry. see []
REGISTRY_HOST=$(boot2docker ip)
# 2. Point docker to our registry server
$(boot2docker shellinit)
# 3. Create swarm token
docker run swarm create
TOKEN=$(docker run swarm create)
echo $TOKEN
echo $TOKEN > swarm-token
# 4. Create swarm master
$DM create \
-d virtualbox \
--engine-insecure-registry $REGISTRY_HOST:5000 \
--swarm \
--swarm-master \
--swarm-discovery token://$TOKEN \
swarm-master
eval $($DM env swarm-master)
MASTER_IP=$($DM ip)
# 4.1 Run consul
docker -H $($DM url swarm-master) run -d \
--name consul1 -p 8300:8300 -p 8301:8301 -p 8301:8301/udp -p 8302:8302 -p 8302:8302/udp -p 8400:8400 -p 8500:8500 -p 53:53/udp \
-v /opt/consul:/data -h consul-server \
--name consul-server \
--dns 172.17.42.1 $REGISTRY_HOST:5000/progrium/consul \
-server -bootstrap -dc dc1 -advertise ${MASTER_IP} -ui-dir /ui
#!/bin/bash
set -e
# NOTE : docker-machine v0.3 required
DM=./docker-machine
REGISTRY_HOST=$(boot2docker ip)
# 5. Point docker to our registry server
$(boot2docker shellinit)
# 6. Grab swarm token
TOKEN=$(cat swarm-token)
echo $TOKEN > swarm-token
# 7. Grab master's IP
MASTER_IP=$($DM ip swarm-master)
# 6. Create worker machines
for i in {1..3};
do
$DM create \
-d virtualbox \
--swarm \
--engine-insecure-registry $REGISTRY_HOST:5000 \
--swarm-discovery token://$TOKEN \
worker-$i
eval $($DM env worker-$i)
IP=$($DM ip worker-$i)
docker run -d $REGISTRY_HOST:5000/swarm join \
--advertise=$IP:2375 consul://$MASTER_IP/
done
eval $($DM env --swarm swarm-master)
docker info
# END
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment