Skip to content

Latest commit

 

History

History
86 lines (50 loc) · 3.72 KB

getting-started-docker.md

File metadata and controls

86 lines (50 loc) · 3.72 KB

Getting Started with Docker

In this tutorial, we'll run bootcfg on your Linux machine with Docker to network boot and provision a cluster of QEMU/KVM CoreOS machines locally. You'll be able to create Kubernetes clustes, etcd clusters, and test network setups.

Note: To provision physical machines, see network setup and deployment.

Requirements

Install the package dependencies and start the Docker daemon.

# Fedora
sudo dnf install docker virt-install virt-manager
sudo systemctl start docker

# Debian/Ubuntu
# check Docker's docs to install Docker 1.8+ on Debian/Ubuntu
sudo apt-get install virt-manager virtinst qemu-kvm

Clone the coreos-baremetal source which contains the examples and scripts.

git clone https://github.com/coreos/coreos-baremetal.git
cd coreos-baremetal

Download CoreOS image assets referenced by the etcd-docker example to examples/assets.

./scripts/get-coreos alpha 1153.0.0 ./examples/assets

Containers

Run the latest bootcfg Docker image from quay.io/coreos/bootcfg with the etcd-docker example. The container should receive the IP address 172.17.0.2 on the docker0 bridge.

sudo docker pull quay.io/coreos/bootcfg:latest
sudo docker run -p 8080:8080 --rm -v $PWD/examples:/var/lib/bootcfg:Z -v $PWD/examples/groups/etcd:/var/lib/bootcfg/groups:Z quay.io/coreos/bootcfg:latest -address=0.0.0.0:8080 -log-level=debug

or run the latest tagged release.

sudo docker run -p 8080:8080 --rm -v $PWD/examples:/var/lib/bootcfg:Z -v $PWD/examples/groups/etcd:/var/lib/bootcfg/groups:Z quay.io/coreos/bootcfg:v0.4.0 -address=0.0.0.0:8080 -log-level=debug

Take a look at the etcd groups to get an idea of how machines are mapped to Profiles. Explore some endpoints port mapped to localhost:8080.

Network

Since the virtual network has no network boot services, use the dnsmasq image to create an iPXE network boot environment which runs DHCP, DNS, and TFTP.

sudo docker run --name dnsmasq --cap-add=NET_ADMIN -v $PWD/contrib/dnsmasq/docker0.conf:/etc/dnsmasq.conf:Z quay.io/coreos/dnsmasq -d

In this case, dnsmasq runs a DHCP server allocating IPs to VMs between 172.17.0.43 and 172.17.0.99, resolves bootcfg.foo to 172.17.0.2 (the IP where bootcfg runs), and points iPXE clients to http://bootcfg.foo:8080/boot.ipxe.

Client VMs

Create QEMU/KVM VMs which have known hardware attributes. The nodes will be attached to the docker0 bridge, where Docker's containers run.

sudo ./scripts/libvirt create-docker
sudo virt-manager

You can use virt-manager to watch the console and reboot VM machines with

sudo ./scripts/libvirt poweroff
sudo ./scripts/libvirt start

Verify

The VMs should network boot and provision themselves into a three node etcd cluster, with other nodes behaving as etcd proxies.

The example profile added autologin so you can verify that etcd works between nodes.

systemctl status etcd2
etcdctl set /message hello
etcdctl get /message
fleetctl list-machines

Clean up the VM machines.

sudo docker rm -f dnsmasq
sudo ./scripts/libvirt poweroff
sudo ./scripts/libvirt destroy

Going Further

Learn more about bootcfg or explore the other example clusters. Try the k8s-docker example to produce a TLS-authenticated Kubernetes cluster you can access locally with kubectl (docs).