Skip to content

Instantly share code, notes, and snippets.

@pmbaumgartner
Last active May 8, 2024 15:01
Show Gist options
  • Save pmbaumgartner/b08a34f73afcd9b29227a42f3c042b9e to your computer and use it in GitHub Desktop.
Save pmbaumgartner/b08a34f73afcd9b29227a42f3c042b9e 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
@carloscloba
Copy link

This won't work in aarch64 machines, such as Apple Silicon M2. 😢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment