master db2937470ebc cached
7 files
17.3 KB
5.5k tokens
8 symbols
1 requests
Download .txt
Repository: sergeycherepanov/homebrew-docker-virtualbox
Branch: master
Commit: db2937470ebc
Files: 7
Total size: 17.3 KB

Directory structure:
gitextract_54isjdzp/

├── Formula/
│   ├── docker-machine-nfs-generic.rb
│   ├── docker-machine-pf.rb
│   └── docker-virtualbox.rb
├── README.md
└── bin/
    ├── docker
    ├── docker-compose
    └── docker-machine-init

================================================
FILE CONTENTS
================================================

================================================
FILE: Formula/docker-machine-nfs-generic.rb
================================================
class DockerMachineNfsGeneric < Formula
  desc "Activates NFS on docker-machine (with generic driver support)"
  homepage "https://github.com/sergeycherepanov/docker-machine-nfs"
  url "https://github.com/sergeycherepanov/docker-machine-nfs/archive/0.5.4.2.tar.gz"
  sha256 "5067da89d8ba1205883cfa0087106cbbe5bc4140ee4b9f45ed1a7b772363417b"
  license "MIT"
  version "0.5.4"
  revision 2

  def install
    bin.install "docker-machine-nfs.sh" => "docker-machine-nfs-generic"
  end

  test do
    system "#{bin}/docker-machine-nfs-generic"
  end
end


================================================
FILE: Formula/docker-machine-pf.rb
================================================
require 'formula'

class DockerMachinePf < Formula
  url 'https://github.com/johanhaleby/docker-machine-port-forwarder/archive/d58e7b8f267b6d9e4156f0c5939c01a84afb52ec.tar.gz'
  homepage 'https://github.com/johanhaleby/docker-machine-port-forwarder'
  sha256 '0acd6f61c71b4f719613c92e2b5df5231ec5d76816ef4e321c2b7c2150d1fcdf'
  version "0.0.1"
  revision 2

  def install
      bin.install "pf"
  end
end


================================================
FILE: Formula/docker-virtualbox.rb
================================================
require 'formula'

class DockerVirtualbox < Formula
  url "https://github.com/sergeycherepanov/homebrew-docker-virtualbox.git", :using => :git
  version "0.0.7"
  revision 1

  depends_on 'coreutils'
  depends_on 'curl'
  depends_on 'jq'
  depends_on 'terminal-notifier'
  depends_on 'docker'
  depends_on 'docker-compose'
  depends_on 'docker-credential-helper'
  depends_on 'docker-machine'
  depends_on 'docker-machine-nfs-generic'

  keg_only "this package may conflict with official docker client"

  resource "gobetween" do
    url "https://github.com/yyyar/gobetween/releases/download/0.8.0/gobetween_0.8.0_darwin_amd64.zip"
    sha256 "15efec9cef9dc01c4e195042df62def95f189090e470678d5b6f024afa71e1b0"
  end

  def install
    resource("gobetween").stage do
      bin.install "gobetween"
    end
    (buildpath/"gobetween.toml").write <<~EOS
      [api]
      enabled = true
      bind = "127.0.0.1:8181"
    EOS
    (etc/"docker-virtualbox").mkpath
    etc.install "gobetween.toml" => 'docker-virtualbox/gobetween.toml'

    bin.install "bin/docker"
    bin.install "bin/docker-compose"
    bin.install "bin/docker-machine-init"
    prefix.install "assets/djocker.png"
  end

  def caveats
      s = <<~EOS
        Docker Virtualbox was installed

        Please don't forget to configure your PATH variable
      EOS
      s
    end

    def plist; <<~EOS
      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
      <plist version="1.0">
      <dict>
        <key>KeepAlive</key>
        <true/>
        <key>Label</key>
        <string>#{plist_name}</string>
        <key>ProgramArguments</key>
        <array>
          <string>#{opt_bin}/docker-machine-init</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>WorkingDirectory</key>
        <string>/tmp</string>
      </dict>
      </plist>
    EOS
    end
end


================================================
FILE: README.md
================================================
# Homebrew Docker Virtualbox (Not Only for VirtualBox)

This Homebrew formula fixes Docker issues on AMD‑based macOS systems (Ryzentosh), and it also works on regular Macs using VirtualBox or other Docker Machine drivers.

**Before starting:** read this notice: [https://gist.github.com/slykar/e92732be9bf81a71e08068245656d70e?permalink_comment_id=4105556#gistcomment-4105556](https://gist.github.com/slykar/e92732be9bf81a71e08068245656d70e?permalink_comment_id=4105556#gistcomment-4105556)

---

## 1. Install VirtualBox (Optional)

Download VirtualBox: [https://www.virtualbox.org/wiki/Downloads](https://www.virtualbox.org/wiki/Downloads)

> Required only if you want to use the VirtualBox driver. Remove previous installations first.

---

## 2. VirtualBox 6.1.28+ Network Configuration

If you use VirtualBox, allow access to 192.168.99.0/8:

Edit:

```
sudo nano /etc/vbox/networks.conf
```

Add:

```
* 192.168.99.0/8
```

---

## 3. Install docker‑virtualbox via Homebrew

```
brew tap serhiicherepanov/docker-virtualbox
brew install docker-virtualbox
```

---

## 4. Configure docker‑virtualbox Requirements

These require root permissions:

Ensure NFS exports file exists:

```
sudo touch /etc/exports
```

Allow the `staff` group necessary permissions:

```
sudo tee /etc/sudoers.d/docker-machine-nfs <<SUDOERS
%staff ALL=(ALL) NOPASSWD: /sbin/nfsd
%staff ALL=(ALL) NOPASSWD: /bin/cp /etc/nfs.conf /etc/nfs.conf.bak
%staff ALL=(ALL) NOPASSWD: /usr/bin/tee /etc/exports
%staff ALL=(ALL) NOPASSWD: /usr/bin/tee /etc/nfs.conf
%staff ALL=(ALL) NOPASSWD: $(brew --prefix)/opt/docker-virtualbox/bin/gobetween
SUDOERS
```

> Reboot to apply changes.

---

## 5. Configure Environment

If **not** using Docker Desktop:

```
brew link --force --overwrite docker-virtualbox
```

If **using** Docker Desktop:

**bash**

```
echo "export PATH=\"$(brew --prefix docker-virtualbox)/bin:$PATH\"" >> ~/.bash_profile
```

**zsh**

```
echo "export PATH=\"$(brew --prefix docker-virtualbox)/bin:$PATH\"" >> ~/.zshrc
```

Reload:

```
exec $SHELL
```

---

## 6. Initialize Docker Machine

Run once:

```
docker-machine-init initialize
```

This will download, prepare, and configure the VirtualBox Docker Machine.

---

## 7. Start docker‑virtualbox

```
brew services start docker-virtualbox
```

Logs:

```
/tmp/docker-virtualbox.log
```

---

## 8. Test Docker

```
docker run -d -p 8989:80 nginx
curl -v localhost:8989
```

---

# Additional Options

## Use a Non‑VirtualBox Driver

Example (generic SSH driver):

```
docker-machine create \
  --driver generic \
  --generic-ip-address=192.168.24.108 \
  --generic-ssh-user=developer \
  --generic-ssh-key=$HOME/.ssh/id_rsa \
  docker
```

> Works only with Debian‑based remote systems.

---

## Useful Commands

View logs:

```
tail -n 1000 -f /tmp/docker-virtualbox.log
```

SSH into the machine:

```
docker-machine ssh docker
```

Stop service:

```
brew services stop docker-virtualbox
```

Load environment for tools:

```
source /tmp/docker-virtualbox.env
source /tmp/docker-virtualbox-machine.env
```

---

# Optional Enhancements

## Auto‑Start on Login

Create launch agents:

```
mkdir -p ~/Library/LaunchAgents
```

Configure a custom plist to auto‑start docker‑virtualbox.

## Increase VM Resources

```
docker-machine stop docker
VBoxManage modifyvm docker --memory 4096 --cpus 4
docker-machine start docker
```

## Custom Network Range

Edit:

```
sudo nano /etc/vbox/networks.conf
```

Add:

```
* 10.10.0.0/16
```

---

# Known Issues

1. macOS cannot sleep while NFS is running.
2. UDP port forwarding not supported.
3. VirtualBox may need kext reload after macOS updates.
4. File sharing may be slower compared to Docker Desktop.


================================================
FILE: bin/docker
================================================
#!/usr/bin/env bash
set -e
#set -x
LIMIT=90
if [[ -f /tmp/docker-virtualbox.starting ]]; then
    >&2 echo -e "\033[93mWaiting while Docker starting..."
    >&2 echo -e "\033[0m"
    i=0
    while [[ -f /tmp/docker-virtualbox.starting ]]; do
        if [[ "$i" -gt "$LIMIT" ]]; then
            >&2 echo -e "Default \e[91mThe timeout reached, please verify the vm log for errors: /tmp/docker-virtualbox.log\e[39m"
        fi
        i=$(($i+1))
        sleep 1;
    done
fi

[[ -f /tmp/docker-virtualbox.env && -f /tmp/docker-virtualbox-machine.env ]] || {
    echo -e "\033[91m"
    echo -e "\033[91mLooks like docker-virtualbox doesn't work"
    echo -e ""
    echo -e "\033[0mYou have to start it by following command:"
    echo -e ""
    echo -e "\033[96mbrew services start docker-virtualbox "
    echo -e "\033[0m"
    exit 1
}

source /tmp/docker-virtualbox.env

[[ -z "${DOCKER_HOST}" ]] && { 
    source /tmp/docker-virtualbox-machine.env
}

exec ${DOCKER_CLI_BIN_PATH} "$@"


================================================
FILE: bin/docker-compose
================================================
#!/usr/bin/env bash
set -e
#set -x
LIMIT=90
if [[ -f /tmp/docker-virtualbox.starting ]]; then
    >&2 echo -e "\033[93mWaiting while Docker starting..."
    >&2 echo -e "\033[0m"
    i=0
    while [[ -f /tmp/docker-virtualbox.starting ]]; do
        if [[ "$i" -gt "$LIMIT" ]]; then
            >&2 echo -e "Default \e[91mThe timeout reached, please verify the vm log for errors: /tmp/docker-virtualbox.log\e[39m"
        fi
        i=$(($i+1))
        sleep 1;
    done
fi

[[ -f /tmp/docker-virtualbox.env && -f /tmp/docker-virtualbox-machine.env ]] || {
    echo -e "\033[91m"
    echo -e "\033[91mLooks like docker-virtualbox doesn't work"
    echo -e ""
    echo -e "\033[0mYou have to start it by following command:"
    echo -e ""
    echo -e "\033[96mbrew services start docker-virtualbox "
    echo -e "\033[0m"
    exit 1
}

source /tmp/docker-virtualbox.env

[[ -z "${DOCKER_HOST}" ]] && { 
    source /tmp/docker-virtualbox-machine.env
}

exec ${DOCKER_COMPOSE_BIN_PATH} "$@"


================================================
FILE: bin/docker-machine-init
================================================
#!/usr/bin/env bash
set -e
[[ $1 == "debug" ]] && {
  set -x
}
if [[ $(id -u ${USER}) -eq 0 ]]; then
  echo "Please don't run this script under the root user!"
  exit 1
fi
LOGDIR="/tmp";

[[ $1 != "initialize" ]] && [[ $1 != "debug" ]] && {
    exec > ${LOGDIR}/docker-virtualbox.log
    exec 2>&1
}

START_TIME=$(date +%s)

if [[ -n "${BREW_BIN}" ]]; then
    BREW_BIN=$BREW_BIN
elif [[ "Darwin" == "$(uname)" ]]; then
    BREW_BIN=/usr/local/bin
else
    BREW_BIN=/home/linuxbrew/.linuxbrew/bin
fi

PATH="${PATH}:${BREW_BIN}"
GOBETWEEN_BIN=$(brew --prefix)/opt/docker-virtualbox/bin/gobetween
TERMINAL_NOTIFIER_BIN="$(brew --prefix terminal-notifier)/bin/terminal-notifier -appIcon $(brew --prefix docker-virtualbox)/djocker.png"
JQ_BIN="$(brew --prefix jq)/bin/jq"
DOCKER_MACHINE_BIN=$(brew --prefix docker-machine)/bin/docker-machine
DOCKER_MACHINE_NFS_BIN=$(brew --prefix docker-machine-nfs-generic)/bin/docker-machine-nfs-generic

DOCKER_MACHINE_DRIVER=${DOCKER_DRIVER-virtualbox}
DOCKER_MACHINE_MACHINE_NAME=${DOCKER_MACHINE_NAME-docker}

function stop()
{
    [[ -f /tmp/docker-virtualbox.env ]] && rm /tmp/docker-virtualbox.env
    [[ -f /tmp/docker-virtualbox-machine.env ]] && rm /tmp/docker-virtualbox-machine.env
    echo "===> Stopping docker machine: ${DOCKER_MACHINE_MACHINE_NAME}"
    ${TERMINAL_NOTIFIER_BIN} -title "Docker Virtualbox" -message "Stopping virtual machine: '${DOCKER_MACHINE_MACHINE_NAME}'"
    ${DOCKER_MACHINE_BIN} stop ${DOCKER_MACHINE_MACHINE_NAME}
    exit 0
}

trap stop SIGKILL
trap stop SIGTERM
trap stop SIGINT


${TERMINAL_NOTIFIER_BIN} -title "Docker Virtualbox" -message "Initialize..."
sleep 1

if [[ -z ${DOCKER_MACHINE_DISK_SIZE} ]]; then
    DOCKER_MACHINE_DISK_SIZE="16000"
    if [[ $($(brew --prefix coreutils)/libexec/gnubin/df --block-size=1073741824 | grep '\/$' | awk '{print $2}') -gt 200 ]]; then
        DOCKER_MACHINE_DISK_SIZE="32000"
    fi
fi

if [[ -z ${DOCKER_MACHINE_CPU_COUNT} ]]; then
    if [[ "Darwin" == "$(uname)" ]]; then
        DOCKER_MACHINE_CPU_COUNT=$(sysctl -n hw.ncpu | awk 'function ceil(x, y){y=int(x); return(x>y?y+1:y)} { print ceil($1*0.25) }')
    else
        DOCKER_MACHINE_CPU_COUNT=$(grep ^cpu\\scores /proc/cpuinfo | uniq |  awk '{print $4}' | awk 'function ceil(x, y){y=int(x); return(x>y?y+1:y)} { print ceil($1*0.25) }')
    fi
fi

if [[ -z ${DOCKER_MACHINE_MEMORY_COUNT} ]]; then
    if [[ "Darwin" == "$(uname)" ]]; then
        DOCKER_MACHINE_MEMORY_COUNT=$(sysctl -n hw.memsize | awk '{ mem=($1 * 0.25 / 1024 / 1024 ); print int(mem > 4096 ? 4096 : mem) }')
    else
        DOCKER_MACHINE_MEMORY_COUNT=$(free -b | grep Mem | awk '{ mem=($2 * 0.25 / 1024 / 1024 ); print int(mem > 4096 ? 4096 : mem) }')
    fi
fi

[[ "Running" == $(${DOCKER_MACHINE_BIN} status ${DOCKER_MACHINE_MACHINE_NAME}) ]] && {
touch /tmp/docker-virtualbox.starting
echo "===> Virtual machine '${DOCKER_MACHINE_MACHINE_NAME}' already started"
${TERMINAL_NOTIFIER_BIN} -title "Docker Virtualbox" -message "Virtual machine '${DOCKER_MACHINE_MACHINE_NAME}' started"
} || {
    touch /tmp/docker-virtualbox.starting
    [[ "Stopped" == $(${DOCKER_MACHINE_BIN} status ${DOCKER_MACHINE_MACHINE_NAME}) ]] && {
        ${TERMINAL_NOTIFIER_BIN} -title "Docker Virtualbox" -message "Starting virtual machine: ${DOCKER_MACHINE_MACHINE_NAME}"
        echo "===> Starting docker machine: ${DOCKER_MACHINE_MACHINE_NAME}"
        ${DOCKER_MACHINE_BIN} start ${DOCKER_MACHINE_MACHINE_NAME}
    } || {
        echo "===> Creating docker machine: ${DOCKER_MACHINE_MACHINE_NAME}"
        ${TERMINAL_NOTIFIER_BIN} -title "Docker Virtualbox" -message "Creating virtual machine: ${DOCKER_MACHINE_MACHINE_NAME}"
        ${DOCKER_MACHINE_BIN} create --driver ${DOCKER_MACHINE_DRIVER} \
            --virtualbox-cpu-count ${DOCKER_MACHINE_CPU_COUNT} \
            --virtualbox-memory ${DOCKER_MACHINE_MEMORY_COUNT} \
            --virtualbox-disk-size ${DOCKER_MACHINE_DISK_SIZE} \
            ${DOCKER_MACHINE_MACHINE_NAME}
    }

    # Extra vm options
    ${DOCKER_MACHINE_BIN} ssh ${DOCKER_MACHINE_MACHINE_NAME} sudo sysctl -w vm.max_map_count=262144
}

${TERMINAL_NOTIFIER_BIN} -title "Docker Virtualbox" -message "Configuring NFS mount for: '${DOCKER_MACHINE_MACHINE_NAME}'"

${DOCKER_MACHINE_NFS_BIN} ${DOCKER_MACHINE_MACHINE_NAME}

[[ $1 == "initialize" ]] && {
    echo ""
    echo -e "\033[91m>>>>> \033[92m *** CONGRATULATION *** DOCKER READY TO USE *** \033[91m<<<<<"
    echo -e "\033[0m"
    echo "Please start the service by following command:"
    echo -e "\033[0m"
    echo -e "\033[0m"
    echo -e "    \033[96mbrew services start docker-virtualbox"
    echo -e "\033[0m"
    exit 0
}

echo "===> Starting Gobetween..."
[[ -f /tmp/docker-virtualbox-gobetween.pid ]] && ps -p $(cat /tmp/docker-virtualbox-gobetween.pid) > /dev/null && {
    echo "---> Gobetween already started, disabling outdated port forwarding..."
    servers=$(curl --silent http://127.0.0.1:8181/servers | ${JQ_BIN} -r '. | keys | .[]')
    for server in $servers;  do
        echo "Disabling port forwarding for: ${server}"
        curl --silent -X DELETE http://127.0.0.1:8181/servers/${server}
    done
} || {
    sudo ${GOBETWEEN_BIN} -c $(brew --prefix)/etc/docker-virtualbox/gobetween.toml > ${LOGDIR}/docker-virtualbox-gobetween.log 2>&1 &
    echo $! > /tmp/docker-virtualbox-gobetween.pid
    echo "---> Gobetween started"
}

# setup env
echo "export DOCKER_CLI_BIN_PATH=\"$(brew --prefix docker)/bin/docker\"" > /tmp/docker-virtualbox.env
echo "export DOCKER_COMPOSE_BIN_PATH=\"$(brew --prefix docker-compose)/bin/docker-compose\"" >> /tmp/docker-virtualbox.env
echo "export DOCKER_MACHINE_IP=\"$(${DOCKER_MACHINE_BIN} ip ${DOCKER_MACHINE_MACHINE_NAME})\"" >> /tmp/docker-virtualbox.env
${DOCKER_MACHINE_BIN} env ${DOCKER_MACHINE_MACHINE_NAME} --shell bash >> /tmp/docker-virtualbox-machine.env
${TERMINAL_NOTIFIER_BIN} -title "Docker Virtualbox" -message "Virtual machine '${DOCKER_MACHINE_MACHINE_NAME}' ready for work"


source /tmp/docker-virtualbox.env
source /tmp/docker-virtualbox-machine.env

echo ""
echo "===> Configuring port forwarding for alrady running containers..."
while read -r subjectid
do
    ports="$(${DOCKER_CLI_BIN_PATH} inspect -f '{{range $p, $conf := .NetworkSettings.Ports }} {{ if $conf}} {{$conf}} {{end}} {{end}}' "${subjectid}" | sed -nE 's:\[\{[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}[^0-9]*([0-9]{1,})\}\]:\1:pg' | xargs echo -n)"
    [[ -z ${ports} ]] || {
        for port in $ports;  do
          echo ""
          echo "Enabling port forwarding: ${port} -> ${DOCKER_MACHINE_IP}:${port}"
          >&2 curl --silent -X POST --data "@-" http://127.0.0.1:8181/servers/${subjectid_short}_${port} <<JSON_BODY
{
  "backend_connection_timeout": "2s",
  "backend_idle_timeout": "1m",
  "balance": "weight",
  "bind": ":${port}",
  "client_idle_timeout": "1m",
  "max_connections": 10000,
  "protocol": "tcp",
  "discovery": {
    "kind": "static",
    "static_list": [
      "${DOCKER_MACHINE_IP}:${port} weight=1"
    ]
  }
}
JSON_BODY
        done
    }
done < <(${DOCKER_CLI_BIN_PATH} ps | tail -n +2 | awk '{ print $1 }')

echo ""
echo "===> Listen for events..."
[[ -f /tmp/docker-virtualbox.starting ]] && rm /tmp/docker-virtualbox.starting
while read -r event;
do
    subject=$(echo $event | awk '{ print $2 }')
    action=$(echo $event | awk '{ print $3 }')
    subjectid=$(echo $event | awk '{ print $4 }')
    subjectid_short=$(echo $subjectid | cut -c -8)
    if [[ "container" == ${subject} ]]; then
        case $action in
          "start")
            ports="$(${DOCKER_CLI_BIN_PATH} inspect -f '{{range $p, $conf := .NetworkSettings.Ports }} {{ if $conf}} {{$conf}} {{end}} {{end}}' "${subjectid}" | sed -nE 's:\[\{[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}[^0-9]*([0-9]{1,})\}\]:\1:pg' | xargs echo -n)"
            [[ -z ${ports} ]] || {
                for port in $ports;  do
                    echo ""
                    echo "Enabling port forwarding: ${port} -> ${DOCKER_MACHINE_IP}:${port}"
                    >&2 curl --silent -X POST --data "@-" http://127.0.0.1:8181/servers/${subjectid_short}_${port} <<JSON_BODY
{
  "backend_connection_timeout": "2s",
  "backend_idle_timeout": "1m",
  "balance": "weight",
  "bind": ":${port}",
  "client_idle_timeout": "1m",
  "max_connections": 10000,
  "protocol": "tcp",
  "discovery": {
    "kind": "static",
    "static_list": [
      "${DOCKER_MACHINE_IP}:${port} weight=1"
    ]
  }
}
JSON_BODY
                done
            }
            ;;
          "kill")
            servers=$(curl --silent http://127.0.0.1:8181/servers | ${JQ_BIN} -r '. | keys | .[]' | grep ${subjectid_short} || echo "")
            [[ $servers != "" ]] && {
              for server in $servers;  do
                  echo ""
                  echo "Disabling port forwarding for: ${server}"
                  curl --silent -X DELETE http://127.0.0.1:8181/servers/${server}
              done
            }
            ;;
          *)
            # skipping
            ;;
        esac
    fi
done < <(${DOCKER_CLI_BIN_PATH} events --since "${START_TIME}")

echo ""
echo "===> service terminated"
Download .txt
gitextract_54isjdzp/

├── Formula/
│   ├── docker-machine-nfs-generic.rb
│   ├── docker-machine-pf.rb
│   └── docker-virtualbox.rb
├── README.md
└── bin/
    ├── docker
    ├── docker-compose
    └── docker-machine-init
Download .txt
SYMBOL INDEX (8 symbols across 3 files)

FILE: Formula/docker-machine-nfs-generic.rb
  class DockerMachineNfsGeneric (line 1) | class DockerMachineNfsGeneric < Formula
    method install (line 10) | def install

FILE: Formula/docker-machine-pf.rb
  class DockerMachinePf (line 3) | class DockerMachinePf < Formula
    method install (line 10) | def install

FILE: Formula/docker-virtualbox.rb
  class DockerVirtualbox (line 3) | class DockerVirtualbox < Formula
    method install (line 25) | def install
    method caveats (line 43) | def caveats
    method plist (line 52) | def plist; <<~EOS
Condensed preview — 7 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (19K chars).
[
  {
    "path": "Formula/docker-machine-nfs-generic.rb",
    "chars": 549,
    "preview": "class DockerMachineNfsGeneric < Formula\n  desc \"Activates NFS on docker-machine (with generic driver support)\"\n  homepag"
  },
  {
    "path": "Formula/docker-machine-pf.rb",
    "chars": 405,
    "preview": "require 'formula'\n\nclass DockerMachinePf < Formula\n  url 'https://github.com/johanhaleby/docker-machine-port-forwarder/a"
  },
  {
    "path": "Formula/docker-virtualbox.rb",
    "chars": 1957,
    "preview": "require 'formula'\n\nclass DockerVirtualbox < Formula\n  url \"https://github.com/sergeycherepanov/homebrew-docker-virtualbo"
  },
  {
    "path": "README.md",
    "chars": 3696,
    "preview": "# Homebrew Docker Virtualbox (Not Only for VirtualBox)\n\nThis Homebrew formula fixes Docker issues on AMD‑based macOS sys"
  },
  {
    "path": "bin/docker",
    "chars": 984,
    "preview": "#!/usr/bin/env bash\nset -e\n#set -x\nLIMIT=90\nif [[ -f /tmp/docker-virtualbox.starting ]]; then\n    >&2 echo -e \"\\033[93mW"
  },
  {
    "path": "bin/docker-compose",
    "chars": 988,
    "preview": "#!/usr/bin/env bash\nset -e\n#set -x\nLIMIT=90\nif [[ -f /tmp/docker-virtualbox.starting ]]; then\n    >&2 echo -e \"\\033[93mW"
  },
  {
    "path": "bin/docker-machine-init",
    "chars": 9136,
    "preview": "#!/usr/bin/env bash\nset -e\n[[ $1 == \"debug\" ]] && {\n  set -x\n}\nif [[ $(id -u ${USER}) -eq 0 ]]; then\n  echo \"Please don'"
  }
]

About this extraction

This page contains the full source code of the sergeycherepanov/homebrew-docker-virtualbox GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 7 files (17.3 KB), approximately 5.5k tokens, and a symbol index with 8 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!