Skip to content

Instantly share code, notes, and snippets.

@slykar
Last active December 11, 2024 08:00
Show Gist options
  • Save slykar/e92732be9bf81a71e08068245656d70e to your computer and use it in GitHub Desktop.
Save slykar/e92732be9bf81a71e08068245656d70e to your computer and use it in GitHub Desktop.
Docker and Docker Compose on AMD OSX Hackintosh via Docker Machine

Introduction

Docker.app will complain about incompatible processor, so we will use Docker Machine.

Instalation

Download Docker for Mac (Docker.app). It contains some binaries that are necessary.

brew install virtualbox docker-machine

# Normally, those links are created automatically by running Docker.app,
# but it quits on us too early, so we need to do this manually
ln -s "/Applications/Docker.app/Contents//Resources/bin/docker-compose" /usr/local/bin/docker-compose
ln -s "/Applications/Docker.app/Contents//Resources/bin/docker-credential-desktop" /usr/local/bin/docker-credential-desktop
ln -s "/Applications/Docker.app/Contents//Resources/bin/docker-credential-osxkeychain" /usr/local/bin/docker-credential-osxkeychain

You can also use brew to install docker and doccker-compose and it should work without linking above.

Running

docker-machine create
eval $(docker-machine env)
docker run hello-world
docker-compose up
@jakoritarleite
Copy link

Since docker-machine is deprecated and archived, I recommend using minikube with virtualbox driver instead.

Installing minikube and docker:

brew install minikube docker

Creating the kubernets cluster using the virtualbox driver:

minikube start --driver=virtualbox --keep-context

Configures the Docker CLI in your current shell to use the minikube's docker:

eval $(minikube docker-env)

To use docker-compose just install it via homebrew:

brew install docker-compose

If you want to access a served application on a container (localhost:8080/route), you'll need the minikube IP to access it, using localhost won't work. And to retrieve the IP is just like that:

minikube ip

You can set this IP on /etc/hosts to access applications without typing the IP.

sudo echo "$(minikube ip) minikube" >> /etc/hosts

Now you can use docker without any problems on your Ryzentosh.

@Avi0n
Copy link

Avi0n commented Apr 12, 2022

Since docker-machine is deprecated and archived, I recommend using minikube with virtualbox driver instead...

This worked perfectly for me. Thank you @jakoritarleite!!

@djonko
Copy link

djonko commented May 22, 2022

thanks a lot @jakoritarleite

@jorbs
Copy link

jorbs commented Aug 23, 2022

@jakoritarleite I am getting

docker-compose up
Error response from daemon: Client sent an HTTP request to an HTTPS server.

Any idea why?

@oordnave
Copy link

Dude, THANK YOU! This solves the problem here!

@johnalbert-dot-py
Copy link

I'm getting the error when running the minikube start command:
image

@brorbw
Copy link

brorbw commented Oct 26, 2022

Im running into the same issue as @johnalbert-dot-py. I suspect that virtualbox 7 have some breaking changes.

Edit: As I suspected virtualbox have made some breaking changes by deprecating the host-only network driver.

Here is a VERY hacky fix (hacky because brew does not support installing a specific version)

  1. Uninstall virtualbox
brew uninstall virtualbox
  1. Clone the homebrew-cask repo
git clone https://github.com/Homebrew/homebrew-cask /tmp/homebrew-cask && cd /tmp/homebrew-cask
  1. checkout the version just before the upgrade to virtualbox 7
git checkout aa3c55951fc9d687acce43e5c0338f42c1ddff7b
  1. Install the old version
brew install Casks/virtualbox.rb

Now you just need to force virtualbox to stay at version 6 until the issue is resolved.
Check this link https://apple.stackexchange.com/a/436413
Or add these two lines to your zshrc, bash_profile w/e

export HOMEBREW_NO_AUTO_UPDATE=1
export HOMEBREW_NO_INSTALL_UPGRADE=1

@kareemlukitomo
Copy link

kareemlukitomo commented Nov 20, 2022

Since docker-machine is deprecated and archived, I recommend using minikube with virtualbox driver instead.

Installing minikube and docker:

brew install minikube docker

Creating the kubernets cluster using the virtualbox driver:

minikube start --driver=virtualbox --keep-context

Configures the Docker CLI in your current shell to use the minikube's docker:

eval $(minikube docker-env)

To use docker-compose just install it via homebrew:

brew install docker-compose

If you want to access a served application on a container (localhost:8080/route), you'll need the minikube IP to access it, using localhost won't work. And to retrieve the IP is just like that:

minikube ip

You can set this IP on /etc/hosts to access applications without typing the IP.

sudo echo "$(minikube ip) minikube" >> /etc/hosts

Now you can use docker without any problems on your Ryzentosh.

Following up on this comment: I once tried updating my brew packages (via brew upgrade ) and accidentally upgraded my Virtualbox installation as well to latest version v7.0.4. Then I noticed that my local Docker commands stopped working. It seems that this latest version of Virtualbox deprecates host-only adapter in the networking part of a virtual machine (minikube seem to require this exact networking option); resulting in an error similar to https://gist.github.com/slykar/e92732be9bf81a71e08068245656d70e?permalink_comment_id=4334542#gistcomment-4334542 cc @johnalbert-dot-py

These helped me:

  1. Uninstalled Virtualbox using the VirtualBox_uninstall.cmd tool in the installation DMG
  2. Restarted my mac
  3. Download & install Virtualbox version 6.1.40 (where the host-only adapter is not yet deprecated)
  4. Making sure that in the System Preferences > Security & Privacy we allow Oracle when prompted
  5. Restarted my mac once again
  6. Voila, able to minikube start again and don't forget to eval $(minikube docker-env)

Hope this helps!

Large image

image

@gtrucollo
Copy link

Has anyone tested these settings in Ventura?

@dnartysh
Copy link

dnartysh commented Jan 8, 2023

Has anyone tested these settings in Ventura?

Yes, it works for me on Ventura. But only on version VB 6.1.40. I did it according to the scheme described by @kareemlukitomo

@MuttakinHasib
Copy link

Since docker-machine is deprecated and archived, I recommend using minikube with virtualbox driver instead.

Installing minikube and docker:

brew install minikube docker

Creating the kubernets cluster using the virtualbox driver:

minikube start --driver=virtualbox --keep-context

Configures the Docker CLI in your current shell to use the minikube's docker:

eval $(minikube docker-env)

To use docker-compose just install it via homebrew:

brew install docker-compose

If you want to access a served application on a container (localhost:8080/route), you'll need the minikube IP to access it, using localhost won't work. And to retrieve the IP is just like that:

minikube ip

You can set this IP on /etc/hosts to access applications without typing the IP.

sudo echo "$(minikube ip) minikube" >> /etc/hosts

Now you can use docker without any problems on your Ryzentosh.

Showing this error @kareemlukitomo help me

image

@brorbw
Copy link

brorbw commented Jan 14, 2023

@fsegouin
Copy link

Thanks for all the pointers. Here's what I had to do, as unfortunately in Ventura 13.1, VirtualBox 6.1.40 kexts do not load, which means no luck when creating a host-only network adapter.

In order to fix this, you need to edit your config.plist file and disable kext signing from SIP as indicated at https://caizhiyuan.gitee.io/opencore-install-guide/troubleshooting/extended/post-issues.html#disabling-sip.

After doing so, proceed to reinstall VirtualBox 6.1.40, kexts will now load at startup and should enable minikube to create the host-only network adapter.

@johnalbert-dot-py
Copy link

I still can't make docker run using minikube, I already try @fsegouin solution but still not working (gets the same error about host-only network adapter)

@brorbw
Copy link

brorbw commented Jan 30, 2023

@johnalbert-dot-py can you confirm that you are running a version of VirtualBox that supports the host-only network adapter and that you have Kext Signing disabled.

~ VBoxManage --version
6.1.38r153438

~ csrutil status
System Integrity Protection status: unknown (Custom Configuration).

Configuration:
	Apple Internal: disabled
	Kext Signing: disabled #<--------- ( this on in particular )
	Filesystem Protections: disabled
	Debugging Restrictions: disabled
	DTrace Restrictions: enabled
	NVRAM Protections: enabled
	BaseSystem Verification: enabled

This is an unsupported configuration, likely to break in the future and leave your machine in an unknown state.

@sunkeunchoi
Copy link

sunkeunchoi commented Feb 13, 2023

~VBoxManage --version
6.1.42r155177
~csrutil status
System Integrity Protection status: enabled.

I get following errors.
VBoxManage: error: AMD-V is disabled in the BIOS (or by the host OS) (VERR_SVM_DISABLED)

I also tried
~VBoxManage modifyvm "minikube" --hwvirtex=off --nested-hw-virt=off

@brorbw
Copy link

brorbw commented Feb 13, 2023

@sunkeunchoi you should enable AMD-V in your bios settings if it's not enabled. Refer to the manual for a guide on how to turn it on.

@sunkeunchoi
Copy link

sunkeunchoi commented Feb 13, 2023

Enabling SVM in BIOS setting solved issue
Thank you

@namchuai
Copy link

namchuai commented Feb 26, 2023

Thanks for all the pointers. Here's what I had to do, as unfortunately in Ventura 13.1, VirtualBox 6.1.40 kexts do not load, which means no luck when creating a host-only network adapter.

In order to fix this, you need to edit your config.plist file and disable kext signing from SIP as indicated at https://caizhiyuan.gitee.io/opencore-install-guide/troubleshooting/extended/post-issues.html#disabling-sip.

After doing so, proceed to reinstall VirtualBox 6.1.40, kexts will now load at startup and should enable minikube to create the host-only network adapter.

This works for me. Tested with Ventura 13.2.1 (22D68). Virtual Box 6.1.40. Disabled SIP.
Screenshot 2023-02-26 at 15 33 14

@dheerajv4855
Copy link

dheerajv4855 commented Feb 27, 2023

Dinghy is working for me on my ryzentosh without any issue
https://jetstudy.net/docker/install-docker-in-amd-hackintosh-ryzentosh-system/

@alexoxte
Copy link

Dinghy is working for me on my ryzentosh without any issue https://jetstudy.net/docker/install-docker-in-amd-hackintosh-ryzentosh-system/

I tried it, but always return an error, when run the command to create an vm.

@brorbw
Copy link

brorbw commented Feb 28, 2023

@dheerajv4855 you can also use the official https://github.com/docker/machine for that

@dheerajv4855
Copy link

Dinghy is working for me on my ryzentosh without any issue https://jetstudy.net/docker/install-docker-in-amd-hackintosh-ryzentosh-system/

I tried it, but always return an error, when run the command to create an vm.

Hi,
can you share what error you are getting ?

@alexoxte
Copy link

alexoxte commented Mar 2, 2023

Dinghy is working for me on my ryzentosh without any issue https://jetstudy.net/docker/install-docker-in-amd-hackintosh-ryzentosh-system/

I tried it, but always return an error, when run the command to create an vm.

Hi, can you share what error you are getting ?

image
The solucion is
image
But that option is not showing up. I use Mac Os Ventura

@dheerajv4855
Copy link

Dinghy is working for me on my ryzentosh without any issue https://jetstudy.net/docker/install-docker-in-amd-hackintosh-ryzentosh-system/

I tried it, but always return an error, when run the command to create an vm.

Hi, can you share what error you are getting ?

image The solucion is image But that option is not showing up. I use Mac Os Ventura

you should allow virtualbox from security at time of installation
make sure you are using version 6.1.26
Uninstall and install again virtualbox and see if that works

@dheerajv4855
Copy link

one thing i would like to mention is SIP is disabled in my system
@namchuai has also a working virtualbox in ventura with SIP disabled
maybe that could be a reason

@evenlee
Copy link

evenlee commented Apr 7, 2023

@mam

This works for me. Tested with Ventura 13.2.1 (22D68). Virtual Box 6.1.40. Disabled SIP. Screenshot 2023-02-26 at 15 33 14
@namchuai , were you enable to create an vm and start it with no errors?

@namchuai
Copy link

namchuai commented Apr 7, 2023

@evenlee yes, I can

@evenlee
Copy link

evenlee commented Apr 8, 2023

@evenlee yes, I can

Thanks for confirming, it's wired I cannot run any vm even minikube vm by start button in VM window, but I can use 'minikube start' to start the minikube vm. my value to disable sip is 6F020000(I also tried many values, same result, but this one seems perfect), and i am just upgraded to 13.3 from 12.6.
image

@namchuai
Copy link

namchuai commented Apr 8, 2023

@evenlee sorry, I misunderstood your question. I tried with windows VM but got same error as your.

Edit: I can use Genymotion (which is a VM for Android) normally.

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