Skip to content

Instantly share code, notes, and snippets.

@smijar
Last active September 30, 2022 01:40
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 smijar/b8813aa574f27a3d3d57e232a8514678 to your computer and use it in GitHub Desktop.
Save smijar/b8813aa574f27a3d3d57e232a8514678 to your computer and use it in GitHub Desktop.
Multipass VM with nginx, docker, kind
# description
below we show some examples of running containers under docker with KKM
# examples
```shell
$ docker run -d --rm -p 8080:8080 --runtime=krun --name spring-boot-hello kontainguide/spring-boot-hello:1.0
$ curl http://localhost:8080
# python
$ docker run -d --rm -p 5000:5000 --runtime=krun --name py-flask-hello kontainguide/py-flask-hello:1.0
$ curl http://localhost:5000
# nodejs
$ docker run -d --rm -p 8080:8080 --runtime=krun --name node-express-hello kontainguide/node-express-hello:1.0
$ curl http://localhost:8080
# golang
$ docker run -d --rm -e "PORT=8080" -e "TARGET=Kontain" -p 8080:8080 --runtime=krun --name golang-http-hello kontainguide/golang-http-hello:1.0
$ curl http://localhost:8080
```
#cloud-config
package_update: true
package_upgrade: true
packages:
- avahi-daemon
- curl
- jq
- docker.io
runcmd:
- sudo apt install -y docker.io
- sudo systemctl enable docker
- sudo systemctl start docker
- sudo groupadd docker
- sudo usermod -aG docker ubuntu
- mkdir -p /home/ubuntu/.docker
- cp /etc/docker/daemon.json /home/ubuntu/.docker/
- chown ubuntu:ubuntu /home/ubuntu/.docker/daemon.json
- curl -s https://raw.githubusercontent.com/kontainapp/km/current/km-releases/kontain-install.sh | sudo bash
- mkdir -p /tmp/artifacts
- cd /tmp/artifacts
- wget https://github.com/kontainapp/km/releases/download/v0.9.10/kontain_bin.tar.gz
- tar xvzf kontain_bin.tar.gz
- sudo ./kkm.run
- curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.16.0/kind-linux-amd64
- chmod +x ./kind
- sudo mv ./kind /usr/local/bin/kind
- echo done
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDHhYg67bfrw8zIpV/KwFr405GudsoISEvkGeSdbX9YXhZZsvTJgxwfLwpdnG1fzLNsQgzjH70wkEkgk9PA732BegsMhUus4gXv319YY+Le0nU5E898DqgV7Ve6LtIX0HU0o8T6qe5Vmw3PTQmswcYqxUGW//CtP0bBkeLB+IbAXeGpdu9W+ArBoLSkWz2VA2dsyWrLoCcerQnUPokKflrc1tUOnyDUVTAZ5K0wvQjsQvFOLd7jEVzaN3BVbfudRAq/eaolbgeP5kA9NkcrcdWnSIs9niiUHuldFhDvsHzSYeyFw8RUa3cMxQU2Cg7YC75uq0JGNK/kKicCy/hQQ9ff smijar@smretina.local
bootcmd:
- echo $(whoami) > /root/boot.txt
write_files:
- content: |-
my dummy content
owner: ubuntu:ubuntu
path: /home/ubuntu/file.txt
permissions: '0644'
#cloud-config
package_update: true
packages:
- avahi-daemon
- curl
- jq
- docker.io
runcmd:
- sudo apt install -y docker.io
- sudo systemctl enable docker
- sudo systemctl start docker
- sudo groupadd docker
- sudo usermod -aG docker ubuntu
- mkdir -p /home/ubuntu/.docker
- cp /etc/docker/daemon.json /home/ubuntu/.docker/
- chown ubuntu:ubuntu /home/ubuntu/.docker/daemon.json
- curl -s https://raw.githubusercontent.com/kontainapp/km/current/km-releases/kontain-install.sh | sudo bash
- mkdir -p /tmp/artifacts
- cd /tmp/artifacts
- wget https://github.com/kontainapp/km/releases/download/v0.9.10/kontain_bin.tar.gz
- tar xvzf kontain_bin.tar.gz
- sudo ./kkm.run
- curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.16.0/kind-linux-amd64
- chmod +x ./kind
- sudo mv ./kind /usr/local/bin/kind
- echo done
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDHhYg67bfrw8zIpV/KwFr405GudsoISEvkGeSdbX9YXhZZsvTJgxwfLwpdnG1fzLNsQgzjH70wkEkgk9PA732BegsMhUus4gXv319YY+Le0nU5E898DqgV7Ve6LtIX0HU0o8T6qe5Vmw3PTQmswcYqxUGW//CtP0bBkeLB+IbAXeGpdu9W+ArBoLSkWz2VA2dsyWrLoCcerQnUPokKflrc1tUOnyDUVTAZ5K0wvQjsQvFOLd7jEVzaN3BVbfudRAq/eaolbgeP5kA9NkcrcdWnSIs9niiUHuldFhDvsHzSYeyFw8RUa3cMxQU2Cg7YC75uq0JGNK/kKicCy/hQQ9ff smijar@smretina.local
bootcmd:
- echo $(whoami) > /root/boot.txt
write_files:
- content: |-
my dummy content
owner: ubuntu:ubuntu
path: /home/ubuntu/file.txt
permissions: '0644'

ref

great link: https://medium.com/@ahmadb/using-multipass-with-cloud-init-bc4b92ad27d9 and: https://sysadmins.co.za/getting-started-with-multipass-vms/

$ multipass launch -n kkm \
--cpus 2 \
--mem 4696m \
--disk 30G \
--cloud-init ./cloudinit.yaml

# ping local dns of VM (by installing package avahi-daemon in ubuntu it enables mDNS locally)
$ ping kkm.local

# to run kontain enabled container
$ docker run --rm --runtime=krun -p 5000:5000 kontainguide/py-flask-hello:1.0

# list images
$ multipass find

# get IP
$ multipass info kkm|grep 'v4'
IPv4:           192.168.205.7

# with avahi you can use <vm>.local
$ ping kkm.local

# execute command in vm
$ multipass exec <vm> -- /bin/bash

$ multipass list

# mount local volume
$ multipass mount $HOME/dev/kontain kkm1:~/dev/kontain
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment