Skip to content

Instantly share code, notes, and snippets.

@rcdelacruz
Forked from pmbaumgartner/cloud-init.yaml
Created January 16, 2024 01:56
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 rcdelacruz/76908cde890f957d12d1827dff58b824 to your computer and use it in GitHub Desktop.
Save rcdelacruz/76908cde890f957d12d1827dff58b824 to your computer and use it in GitHub Desktop.
Multipass & Docker Setup

Multipass Docker Setup

This repo provides a config and instructions for getting multipass setup to create an Ubuntu image with docker & docker-compose for use on macOS.

  • Download multipass
  • Update the included cloud-init.yaml file with your ssh key (cat ~/.ssh/id_rsa.pub | pbcopy should get it on your clipboard)
  • Create the multipass image with multipass launch --cloud-init cloud-init.yaml --name docker
    • You might need to upgrade the default settings to include more RAM/HDD space.
    • Feel free to change the --name argument to whatever you'd like to call this.
  • Validate correct initialization with multipass exec docker -- docker -v && docker-compose -v
  • Run whatever you want within the image: multipass shell docker. You can also just call multipass shell since this is the default image

VSCode Use

You can use this image with VSCode Remote to program using docker inside of the image.

  • Find the IP of the running image with multipass list. You're looking for something like 192.168.64.X
  • Add this as a remote in the VSCode Remote extension
  • You will want to mount your project directory into the image with multipass mount. If you're in a project folder, you could do something like multipass mount . docker:/project/. This is the folder you'll want to open using VSCode Remote

Helpful docs:

Helpful blogs:

#cloud-config
package_upgrade: true
ssh_authorized_keys:
- <your key>
packages:
- apt-transport-https
- ca-certificates
- curl
- gnupg
- lsb-release
# create the docker group
groups:
- docker
# Add default auto created user to docker group
system_info:
default_user:
groups: [docker]
runcmd:
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- apt-get update
- apt-get install -y docker-ce docker-ce-cli containerd.io
- curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- chmod +x /usr/local/bin/docker-compose
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment