Coder Social home page Coder Social logo

orbstack / orbstack Goto Github PK

View Code? Open in Web Editor NEW
4.4K 20.0 30.0 27 KB

Fast, light, simple Docker containers & Linux machines for macOS

Home Page: https://orbstack.dev

License: MIT License

Shell 100.00%
mac docker linux macos utm virtual-machine colima docker-desktop lima

orbstack's Introduction

OrbStack

OrbStack is the fast, light, and easy way to run Docker containers and Linux machines on macOS. It's a supercharged WSL and Docker Desktop alternative, all in one easy-to-use app.

Say goodbye to slow, clunky containers and VMs. Develop at lightspeed with our Docker Desktop alternative. Get started

Why OrbStack?

  • ⚡️ Lightning Fast. Starts in 2 seconds, optimized network and file system, Rosetta emulation.
  • 💨 Feather Light. Low CPU and disk usage, battery-friendly, works with less memory, native Swift app.
  • 🍰 Effortlessly Simple. Automatic domain names and migration, CLI & file system integration, VPN and SSH support.
  • ⚙️ Powerful. Run Docker containers, Kubernetes, and Linux distros. Manage containers quickly from your menu bar. Explore volume and image files.

Check the website for demos, or see what we're up to in the changelog.

Learn more

Links

orbstack's People

Contributors

iloveitaly avatar kdrag0n avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

orbstack's Issues

Menu bar app + hide from Dock

Loving what I'm seeing so far! Nice job!

I'd like to suggest a simple feature -- I'm used to run things that are in my daily dev flow so I can reach them via the macOS menu bar. It would be great if orbstack could be reachable via macOS menu bar too.

No Space left on device.

I got this error while compiling,

LLVM ERROR: IO failure on output stream: No space left on device
LLVM ERROR: IO failure on output stream: No space left on device
error: could not compile move-resource-viewer
warning: build failed, waiting for other jobs to finish...
error: could not compile tonic
thread 'rustc' panicked at 'assertion failed: pos.get() <= self.position()', compiler/rustc_metadata/src/rmeta/encoder.rs:426:9
LLVM ERROR: IO failure on output stream: No space left on device
error: could not compile move-vm-test-utils
LLVM ERROR: IO failure on output stream: No space left on device
LLVM ERROR: IO failure on output stream: No space left on device
error: could not compile move-core-types
error: could not compile move-stackless-bytecode-interpreter
The following warnings were emitted during compilation:

Segmentation fault when trying to run vite

Steps to reproduce:

  1. Create a new vite project:
npm create vite@latest example-app --template react
  1. Add the following Dockerfile to the example-app directory:
FROM node:lts-hydrogen
WORKDIR /usr/src/app
COPY package.json ./
RUN npm install
COPY . .
CMD [ "npm", "run", "dev" ]
  1. Build and run the image:
docker build -t vite .
docker run vite

> [email protected] dev
> vite

Segmentation fault

Custom VM Image Support

It would be great to be able to use custom images to launch VMs instead of the pre-populated list of distros there is now.

binfmt for mach-o executables?

I noticed there's /opt/orbstack-guest/bin/mac which can be used to invoke a command in macOS.
Can we support directly executing a mach-o binary file within the orb Linux environment (just like one can run a .exe file within WSL)? Currently, any attempt to execute mach-o results in a Exec format error, but it can be executed successfully with mac <path-to-the-mach-o>.

Thanks in advance!

Add an `orbctl report` command for filling out issues

Is your feature request related to a problem? Please describe.

When I file a bug report, I have to get a bunch of info about my install for debugging purposes. This is annoying to do manually and I am lazy.

Describe the solution you'd like

Add a command `orbctl report that shows various info about the installation. This can be used when reporting bugs (basically copy-paste).

Describe alternatives you've considered

Manually grabbing the data, which is annoying and I'm lazy.

Additional context

This is something the dokku project does, and it is really good for bug reports. Example here: dokku/dokku#5743

orb fails to start

Describe the bug
Installed orbstack, wouldn't start

To Reproduce
Steps to reproduce the behavior:

  1. install latest orbstack, choose docker
  2. click on the app
  3. app UI starts,
  4. 10 seconds later shuts down with error

Logs
vmgr.log

time="03-24 09:11:49" level=info msg="creating VM"
time="03-24 09:11:49" level=info msg="forwarding SSH agent" sock=/private/tmp/com.apple.launchd.sBQop18Cg4/Listeners
time="03-24 09:11:49" level=info msg="starting VM"
time="03-24 09:11:49" level=info msg="starting host services"
time="03-24 09:11:49" level=fatal msg="host forward failed" error="listen tcp4 127.0.0.1:62429: bind: address already in use" spec="{tcp:127.0.0.1:62429 vsock:2049}"

Info report
-bash: orb: command not found

Additional context
latest osx, intel, docker desktop installed (but stopped)

Docker crash when running traceroute container

Trying to run a traceroute tool of mine:

docker run --rm -it ghcr.io/dioptra-io/fast-mda-traceroute --no-integrity-check columbia.edu

The VM (or Docker daemon?) crashes with ERRO[0001] error waiting for container: unexpected EOF:

[2023-02-20 18:04:08,377] [INFO] [fast_mda_traceroute] dst_addr=128.59.105.24 interface=eth0 probing_rate=100 buffer_size=1048576 instance_id=4523 integrity_check=False version=0.1.11
[2023-02-20 18:04:08.377] [info] Resolving the gateway MAC address...
[2023-02-20 18:04:08.417] [info] dst_mac=02:42:21:f1:a4:b5
[2023-02-20 18:04:08.417] [info] src_ip_v4=172.17.0.2 src_ip_v6=::
[2023-02-20 18:04:08.435] [info] sniffer_filter=(dst 172.17.0.2) and (icmp or icmp6) and (icmp[icmptype] = icmp-echoreply or icmp[icmptype] = icmp-timxceed or icmp[icmptype] = icmp-unreach or icmp6[icmp6type] = icmp6-echoreply or icmp6[icmp6type] = icmp6-timeexceeded or icmp6[icmp6type] = icmp6-destinationunreach)
[2023-02-20 18:04:08,517] [INFO] [fast_mda_traceroute] round=1 links_found=0 probes=32 expected_time=0.3s
ERRO[0001] error waiting for container: unexpected EOF

UI

Screenshot 2023-02-20 at 19 06 38

Logs

panic: runtime error: slice bounds out of range [:251] with capacity 94

goroutine 16 [running]:
gvisor.dev/gvisor/pkg/tcpip/header.IPv4.Payload(...)
	gvisor.dev/[email protected]/pkg/tcpip/header/ipv4.go:356
github.com/kdrag0n/macvirt/macvmgr/vnet/icmpfwd.(*IcmpFwd).sendPkt(0x14000094c60, {0xe?})
	github.com/kdrag0n/macvirt/macvmgr/vnet/icmpfwd/sysicmp.go:121 +0x40
github.com/kdrag0n/macvirt/macvmgr/vnet/icmpfwd.(*IcmpFwd).ProxyRequests.func1({0x5dc0, {0x140001f6da4, 0x4}, 0x0, {0x140001f6da0, 0x4}}, {0x14000540000?})
	github.com/kdrag0n/macvirt/macvmgr/vnet/icmpfwd/sysicmp.go:109 +0x90
gvisor.dev/gvisor/pkg/tcpip/stack.(*nic).DeliverTransportPacket(0x140001e8000, 0x1, {0x140005436b8?})
	gvisor.dev/[email protected]/pkg/tcpip/stack/nic.go:840 +0x240
gvisor.dev/gvisor/pkg/tcpip/network/ipv4.(*endpoint).handleICMP(0x140001f4000, {0x102d55290?})
	gvisor.dev/[email protected]/pkg/tcpip/network/ipv4/icmp.go:363 +0x4cc
gvisor.dev/gvisor/pkg/tcpip/network/ipv4.(*endpoint).deliverPacketLocally(0x140001f4000, {0x140000c820e, 0x14, 0x72}, {0x0?}, {0x0?, 0x0?})
	gvisor.dev/[email protected]/pkg/tcpip/network/ipv4/ipv4.go:1232 +0x5c4
gvisor.dev/gvisor/pkg/tcpip/network/ipv4.(*endpoint).handleValidatedPacket(0x140001f4000, {0x140000c820e, 0x14, 0x72}, {0x0?}, {0x0, 0x0})
	gvisor.dev/[email protected]/pkg/tcpip/network/ipv4/ipv4.go:1098 +0x3ac
gvisor.dev/gvisor/pkg/tcpip/network/ipv4.(*endpoint).HandlePacket(0x140001f4000, {0x140001e6680?})
	gvisor.dev/[email protected]/pkg/tcpip/network/ipv4/ipv4.go:833 +0x27c
gvisor.dev/gvisor/pkg/tcpip/stack.(*groDispatcher).dispatch(0x140001e8000?, {0xe?}, 0x80040?, {0x1031df7d0?, 0x140001f4000?})
	gvisor.dev/[email protected]/pkg/tcpip/stack/gro.go:297 +0x3c8
gvisor.dev/gvisor/pkg/tcpip/stack.(*nic).DeliverNetworkPacket(0x140001e8000, 0x800, {0x0?})
	gvisor.dev/[email protected]/pkg/tcpip/stack/nic.go:740 +0x94
github.com/kdrag0n/macvirt/macvmgr/vnet/dgramlink.(*readVDispatcher).dispatch(0x14000195410)
	github.com/kdrag0n/macvirt/macvmgr/vnet/dgramlink/packet_dispatchers.go:214 +0x20c
github.com/kdrag0n/macvirt/macvmgr/vnet/dgramlink.(*endpoint).dispatchLoop(0x140000c6630, {0x1031d84b0, 0x14000195410})
	github.com/kdrag0n/macvirt/macvmgr/vnet/dgramlink/endpoint.go:554 +0x3c
github.com/kdrag0n/macvirt/macvmgr/vnet/dgramlink.(*endpoint).Attach.func1(0x0?)
	github.com/kdrag0n/macvirt/macvmgr/vnet/dgramlink/endpoint.go:360 +0x48
created by github.com/kdrag0n/macvirt/macvmgr/vnet/dgramlink.(*endpoint).Attach
	github.com/kdrag0n/macvirt/macvmgr/vnet/dgramlink/endpoint.go:359 +0xa0

Have a way to copy os certificates into created linux vms

Is your feature request related to a problem? Please describe.

At my dayjjob, we use a custom certificate chain in order to access internal APIs via SSL. These certificates aren't available in the VMs created, so I need to ignore warnings when interacting with those domains in the VM.

Describe the solution you'd like

Some way to copy the chain into the VM, either via an orbctl command or on VM creation.

Describe alternatives you've considered

Manually copying the file(s) into place OR ignoring warnings (im doing the latter atm).

Additional context

N/A

Docker crash due to a problem after launching a tool in a container

Hey @kdrag0n,

Describe the bug

A bug (related to the network ?) causes docker to crash when launching the amass tool in a docker container.

To Reproduce
Steps to reproduce the behavior :

  1. Start a docker container and install the Amass tool (https://github.com/OWASP/Amass).
  2. Run the following command: amass enum --passive -d example.com in the container.
  3. After 2s, docker will crash.

Expected behavior
The docker service should not crash.

Screenshots

image

Logs

INFO[03-11 16:23:50] container started                             container=docker
nfs              | * Mounting nfsd filesystem in /proc ... [ ok ]
nfs              | * ExpoINFO[03-11 16:23:50] container started                             container=kali
rting NFS directories ... [ ok ]
nfs              | * Starting NFS mountd ... [ ok ]
nfs              | * Starting NFS daemon ...INFO[03-11 16:23:50] container started                             container=alpine
[    1.790018] systemd-journald[49]: Received client request to flush runtime journal.
[    1.791115] systemd-journald[49]: File /var/log/journal/7dd330655cdc4547831834bd5dae2088/system.journal corrupted or uncleanly shut down, renaming and replacing.
[    1.834517] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[    1.834704] IPv6: ADDRCONF(NETDEV_CHANGE): vethfr5rKP: link becomes ready
[    1.834881] conbr0: port 3(vethfr5rKP) entered blocking state
[    1.834985] conbr0: port 3(vethfr5rKP) entered forwarding state
[    2.212825] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[    2.212887] IPv6: ADDRCONF(NETDEV_CHANGE): veth8PnLga: link becomes ready
[    2.212932] conbr0: port 4(veth8PnLga) entered blocking state
[    2.213030] conbr0: port 4(veth8PnLga) entered forwarding state
[    2.852911] NFSD: Using UMH upcall client tracking operations.
[    2.852947] NFSD: starting 1-second grace period (net f0000000)
 [ ok ]
nfs              | * Starting NFS smnotify ... [ ok ]
[    3.782510] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[    3.782584] IPv6: ADDRCONF(NETDEV_CHANGE): vethpD8g7m: link becomes ready
[    3.782653] conbr0: port 2(vethpD8g7m) entered blocking state
[    3.782704] conbr0: port 2(vethpD8g7m) entered forwarding state
INFO[03-11 16:24:02] add forward                                   spec="{:: 52041 udp}"
INFO[03-11 16:24:02] add forward                                   spec="{:: 45941 udp}"
INFO[03-11 16:24:02] add forward                                   spec="{:: 56326 udp}"
INFO[03-11 16:24:02] add forward                                   spec="{:: 60734 udp}"
INFO[03-11 16:24:02] add forward                                   spec="{:: 40462 udp}"
INFO[03-11 16:24:02] add forward                                   spec="{:: 34409 udp}"
INFO[03-11 16:24:02] add forward                                   spec="{:: 57243 udp}"
INFO[03-11 16:24:02] add forward                                   spec="{:: 35076 udp}"
INFO[03-11 16:24:03] add forward                                   spec="{:: 45568 udp}"
INFO[03-11 16:24:11] add forward                                   spec="{:: 37500 udp}"
INFO[03-11 16:24:11] add forward                                   spec="{:: 33526 udp}"
INFO[03-11 16:24:11] add forward                                   spec="{:: 50079 udp}"
INFO[03-11 16:24:11] add forward                                   spec="{:: 36202 udp}"
INFO[03-11 16:24:11] add forward                                   spec="{:: 36241 udp}"
INFO[03-11 16:24:11] add forward                                   spec="{:: 34714 udp}"
INFO[03-11 16:24:11] add forward                                   spec="{:: 45249 udp}"
WARN[03-11 16:24:11] failed to apply listener changes              notAdded="[{:: 45568 udp} {:: 37500 udp} {:: 33526 udp} {:: 50079 udp} {:: 36202 udp} {:: 36241 udp} {:: 34714 udp} {:: 45249 udp}]" notRemoved="[]"
ERRO[03-11 16:24:11] failed to update listeners                    container=docker error="read tcp 100.115.92.2:60978->100.115.92.201:8300: read: connection timed out\nconnection is shut down\nconnection is shut down\nconnection is shut down\nconnection is shut down\nconnection is shut down\nconnection is shut down\nconnection is shut down"
[   24.078323] ------------[ cut here ]------------
[   24.078464] NETDEV WATCHDOG: eth0 (virtio_net): transmit queue 0 timed out
[   24.078551] WARNING: CPU: 2 PID: 0 at net/sched/sch_generic.c:525 dev_watchdog+0x21c/0x22c
[   24.078640] CPU: 2 PID: 0 Comm: swapper/2 Not tainted 6.1.15-orbstack-00091-gd170b993dff4 #114
[   24.078696] pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[   24.078742] pc : dev_watchdog+0x21c/0x22c
[   24.078774] lr : dev_watchdog+0x21c/0x22c
[   24.078805] sp : ffff1e59d7797580
[   24.078833] x29: ffff1e59d7797580 x28: ffff1e59d778ea00 x27: ffffa986a1976980
[   24.078884] x26: ffff1e59d7797648 x25: 00000000000000e0 x24: 0000000000000000
[   24.078938] x23: dead000000000122 x22: ffffa986a1976000 x21: 0000000000000000
[   24.079006] x20: ffff1e59c1cc3000 x19: ffff1e59c1cc3448 x18: ffffffffffffffff
[   24.079056] x17: ffff74d335ef1000 x16: ffff1e59d7797740 x15: 0000000000000006
[   24.079102] x14: 0000000000000000 x13: ffffa986a19956e0 x12: 00000000000004e9
[   24.079151] x11: 00000000000001a3 x10: ffffa986a19ed6e0 x9 : ffffa986a19956e0
[   24.079201] x8 : 00000000ffffefff x7 : ffffa986a19ed6e0 x6 : 0000000000000000
[   24.079248] x5 : ffff1e59d778e6d0 x4 : 0000000000000040 x3 : 0000000000000001
[   24.079299] x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff1e59c00cd940
[   24.079346] Call trace:
[   24.079362]  dev_watchdog+0x21c/0x22c
[   24.079386]  call_timer_fn.constprop.0+0x20/0x80
[   24.079440]  __run_timers.part.0+0x26c/0x2e4
[   24.079484]  run_timer_softirq+0x38/0x6c
[   24.079510]  _stext+0x104/0x27c
[   24.079536]  ____do_softirq+0xc/0x14
[   24.079559]  call_on_irq_stack+0x2c/0x40
[   24.079583]  do_softirq_own_stack+0x18/0x2c
[   24.079609]  __irq_exit_rcu+0xb0/0xdc
[   24.079633]  irq_exit_rcu+0xc/0x14
[   24.079657]  el1_interrupt+0x34/0x50
[   24.079694]  el1h_64_irq_handler+0x14/0x20
[   24.079714]  el1h_64_irq+0x64/0x68
[   24.079737]  default_idle_call+0x2c/0x64
[   24.079760]  do_idle+0x238/0x270
[   24.079789]  cpu_startup_entry+0x24/0x30
[   24.079809]  secondary_start_kernel+0x120/0x144
[   24.079845]  __secondary_switched+0x64/0x68
[   24.079870] ---[ end trace 0000000000000000 ]---
[   24.079916] virtio_net virtio0 eth0: TX timeout on queue: 0, sq: output.0, vq: 0x1, name: output.0, 9890000 usecs ago
[   29.115300] virtio_net virtio0 eth0: TX timeout on queue: 0, sq: output.0, vq: 0x1, name: output.0, 14930000 usecs ago
[   34.078445] virtio_net virtio0 eth0: TX timeout on queue: 0, sq: output.0, vq: 0x1, name: output.0, 19890000 usecs ago
[   39.118431] virtio_net virtio0 eth0: TX timeout on queue: 0, sq: output.0, vq: 0x1, name: output.0, 24930000 usecs ago
[   44.078461] virtio_net virtio0 eth0: TX timeout on queue: 0, sq: output.0, vq: 0x1, name: output.0, 29890000 usecs ago
[   49.118490] virtio_net virtio0 eth0: TX timeout on queue: 0, sq: output.0, vq: 0x1, name: output.0, 34930000 usecs ago
[   54.078496] virtio_net virtio0 eth0: TX timeout on queue: 0, sq: output.0, vq: 0x1, name: output.0, 39890000 usecs ago
[   59.116284] virtio_net virtio0 eth0: TX timeout on queue: 0, sq: output.0, vq: 0x1, name: output.0, 44930000 usecs ago
[   64.078519] virtio_net virtio0 eth0: TX timeout on queue: 0, sq: output.0, vq: 0x1, name: output.0, 49890000 usecs ago
[   69.114761] virtio_net virtio0 eth0: TX timeout on queue: 0, sq: output.0, vq: 0x1, name: output.0, 54930000 usecs ago
ERRO[0067] tcp pump2 error 1 read tcp 100.115.92.2:2375->100.115.92.1:35723: read: connection timed out
[   74.078585] virtio_net virtio0 eth0: TX timeout on queue: 0, sq: output.0, vq: 0x1, name: output.0, 59890000 usecs ago
[   79.117834] virtio_net virtio0 eth0: TX timeout on queue: 0, sq: output.0, vq: 0x1, name: output.0, 64930000 usecs ago
[   84.078680] virtio_net virtio0 eth0: TX timeout on queue: 0, sq: output.0, vq: 0x1, name: output.0, 69890000 usecs ago
[   89.115314] virtio_net virtio0 eth0: TX timeout on queue: 0, sq: output.0, vq: 0x1, name: output.0, 74930000 usecs ago
[   94.078088] virtio_net virtio0 eth0: TX timeout on queue: 0, sq: output.0, vq: 0x1, name: output.0, 79890000 usecs ago
[   99.115539] virtio_net virtio0 eth0: TX timeout on queue: 0, sq: output.0, vq: 0x1, name: output.0, 84930000 usecs ago

System info

  • macOS version: Ventura 13.1 && Ventura 13.2.1
  • CPU architecture: Mac M2 (ARM) && Mac M1 Pro (ARM)

Additional context
The bug was found by @ShutdownRepo, then reproduced by myself.

HTTP/SOCKS proxy support

Transparent proxy support, automatically proxying all HTTP and HTTPS traffic from Docker/Linux through the system-wide proxy configured on macOS. (with a config override, e.g. for MITM testing)

This will remove the need for any manual proxy configuration in Docker containers or Linux machines.

Option to allow remote SSH access

Is your feature request related to a problem? Please describe.
OrbStack's built-in SSH server for Linux machines currently only allows connections from localhost for security.

Describe the solution you'd like
A config option that allows SSH access from any device.

Describe alternatives you've considered

  • Using SSH port forwarding to forward the server to another device
  • Installing a separate SSH server in the Linux machine

Failed to do setup

When I first open the app, a prompt is displayed with the following message.:

CleanShot-2023-02-28-11 32 10

Failed to do setup: exit status 127; output: �]1337;[email protected]��]1337;CurrentDir=/��]1337;ShellIntegrationVersion=13;shell=zsh�/opt/homebrew/opt/ruby/bin:/opt/homebrew/opt/openjdk/bin:/opt/homebrew/Caskroom/miniforge/base/envs/py311/bin:/Users/cjw/.ghcup/bin:/Users/cjw/.idris2/bin:/opt/homebrew/Caskroom/miniforge/base/condabin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/opt/X11/bin:/Library/Apple/usr/bin:�]1337
sh: Support/Coursier/bin:/Users/cjw/Library/Application: No such file or directory

Error on first run

Hi,

I got this error after selecting the OS (Ubuntu) in the first-run welcome wizard.

image

After that, once I manually started the engine by clicking button in the app, I was able to create and connect to a VM without an issue.

Intel Mac Mini + amd64 version of orbstack

Docker: 'Open Terminal' support for other terminal emulators

Is your feature request related to a problem? Please describe.
It's complicated to remember how to attach a shell to a Docker container, and I don't use Terminal.app 😛

Describe the solution you'd like
The Open Terminal command when right-clicking a Docker container in the UI should support other terminals, and additionally provide some CLI equivalent command that can be copied and used in an existing shell.

Perhaps it can also be documented in the Commands tab.

Describe alternatives you've considered
None.

Additional context
Perhaps related to #4

`docker system prune --all --volumes --force` does not delete volumes

Describe the bug
When I run docker system prune --all --volumes --force, my volumes are not deleted.

To Reproduce
Steps to reproduce the behavior:

  1. Create a Docker Compose file with volumes
  2. Spin it up and down
  3. Run docker system prune --all --volumes --force
  4. Run docker volumes ls
  5. Observe the volumes still exist

Expected behavior
The volumes should be wiped.

Logs
Let me know if you have trouble reproducing and need logs.

System info

  • OrbStack version: Version 0.4.0 (881)
  • macOS version: 13.2.1 (22D68)
  • CPU architecture: Apple M1 Pro

More Docker GUI features

Support performing actions and viewing more info about Docker containers from the GUI app, like Docker Desktop.

Configure docker HTTP(S)_PROXY

Is your feature request related to a problem? Please describe.
NO

Describe the solution you'd like
Configure docker HTTP(S)_PROXY because some organizations have internet access control.

Describe alternatives you've considered
Inherit the HTTP(S)_PROXY configuration of the host machine.

Additional context

Live refresh for Docker GUI

Describe the bug
When starting and stopping Docker containers via docker compose ... and the OrbStack UI is frontmost it doesn't immediately update.

To Reproduce
Steps to reproduce the behavior:

  1. Open a terminal in fullscreen on another workspace
  2. Got to your main desktop and start OrbStack and focus the window
  3. Switch workspace to the terminal and start some containers
  4. Switch back to the workspace where the OrbStack window is
  5. See that the status of the containers are not reflected

Expected behavior
Whenever modifying containers the status should immediately be reflected in the OrbStack GUI regardless of focus state.

Info report

OrbStack info:
  Version: 0.5.0 (50000)
  Commit: b7cb40bf9d8911b47acac74e21f8b7d4053589be (v0.5.0)

System info:
  macOS: 13.2.1 (22D68)
  CPU: arm64, 12 cores
  CPU model: Apple M2 Max

Show container log in GUI

Is your feature request related to a problem? Please describe.
Actually there is no option to show container logs from GUI

Describe the solution you'd like
Add a command to show in GUI a container logs

Describe alternatives you've considered
Add a new sections called LOGS where are showed all containers logs with possibility to filter by container name

Additional context
None.

--mount is not compliant with Docker Desktop, results in error

Describe the bug
Using --mount instead of -v results in an error.
This error was discovered while trying to run GUI apps within containers. Mounting the x11 sock using -v works, but doing so with --mount does not.

To Reproduce
Steps to reproduce the behavior:

  1. Run docker run -it --env="DISPLAY=host.docker.internal:0" -v /tmp/.X11-unix:/tmp/.X11-unix:rw ubuntu
  2. Notice that container creation does work, and any app can be launched (in my case, I tested using firefox) XQuartz is needed
  3. Run docker run --rm --name tmp -it --mount 'type=bind,src=/tmp/.X11-unix,dst=/tmp/.X11-unix' debian bash
  4. Notice that it results in an error.

Do note that those two commands work in Docker Desktop

Expected behavior
--mount working like in Docker Desktop

Screenshots
image

Logs
N/A

System info

  • macOS version: Ventura 13.1 (22C65)
  • CPU architecture: Intel (x86), but the problem has been confirmed also on Apple Silicon (ARM - M1/M2)

Additional context
This is the root cause for this exchange we had on Mastodon
This issue was first opened on Exegol

Docker bridge access (direct container IP) from macOS

Is your feature request related to a problem? Please describe.
Can't connect directly to Docker containers by IP on the 172.17.0.0/16 subnet, or to Linux machines.

Describe the solution you'd like
A macOS network interface connected to the Docker / Linux machine bridges.


For connecting to Linux machines by IP, see #89. Both are planned and will likely be implemented at the same time.

Default script for new machines

Is your feature request related to a problem? Please describe.
I would like to have my environment when creating new machines, with my dot files, shell, etc.

Describe the solution you'd like
Automatically running a script or some commands when creating new machines. Something like pacman -S zsh; cp somewhere/zshrc ~/.zshrc; chsh …

Describe alternatives you've considered
I could just run a script after creating a machine, but it would be nice to have some automation.

Run 32-bit application in VM

Describe the bug
I created a Ubuntu VM with CPU type intel. When attempting to run some 32-bit programs, I was prompted with

bash: prog: cannot execute binary file: Exec format error

Running file prog yields

prog: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, BuildID[sha1]=9c584f1c46b0c0beb3a17864ni43ola89c6d490b5, for GNU/Linux 2.6.32, stripped

And run uname -a yields

Linux ubuntu 6.1.19-orbstack-00094-ga75ae6304f45 #127 SMP Tue Mar 14 15:56:13 PDT 2023 x86_64 x86_64 x86_64 GNU/Linux

So it seems like I cannot run 32-bit program under the VM. Is this because Apple removed 32-bit support? Are there any way to get around this?

To Reproduce
Attempt to run any 32-bit program under Ubuntu Intel VM.

Expected behavior
I expect the program to run as normal, as the same program runs fine on other Linux machines.

System info

  • OrbStack version: v0.4.0
  • macOS version: Ventura 13.2.1
  • CPU architecture: Apple Silicon M1 Pro

Mechanism for constraining Docker to a number of CPUs

Is your feature request related to a problem? Please describe.
When running docker build it is easy for OrbStack to consume all of the CPU resources on the machine as it appears to run with no constraints.

Describe the solution you'd like
A slider or pulldown to limit the number of CPUs that are available to be used by OrbStack. It should only run on P-Cores as well.

Describe alternatives you've considered
I searched for ways to constrain it from the commandline and came up with nothing actionable.

USB device passthrough

Is your feature request related to a problem? Please describe.
Support for passing USB devices through to Linux machines enables many use cases:

  • Mounting Linux disks and filesystems
  • Pentesting with USB Wi-Fi adapters
  • Hardware development
  • etc.

Describe alternatives you've considered
Many use cases are served by command linking, which allows using the macOS version of a tool from Linux: https://docs.orbstack.dev/machines/#usb-devices

Compatibility with official docker app

Describe the bug

I had Docker desktop installed and also installed Orbstack to test it out. Once I removed Orbstack I could not start any docker container from the command line as I received the error that docker is not running.

However docker was running via Docker desktop. But the docker ps command complained it could not connect to the sock file in the ~/.orbstack home folder.

For now I am back to Orbstack to be able to use my containers :) which is not bad but my plan was to go back to the Docker desktop and compare.

System

OSX, Apple silicon

Public SSH setup fails with Nix managed SSH config

I'm using Nix and home-manager to manage my SSH config.

It seems that OrbStack fails to setup SSH access to the VMs:

time="02-22 14:54:47" level=error msg="public SSH setup failed" error="open /Users/maxmouchet/.ssh/config: permission denied"

I'm also missing the private key to access the VMs:

ssh -p 62222 -i ~/.orbstack/ssh/id_ed25519 default@localhost
# Warning: Identity file /Users/maxmouchet/.orbstack/ssh/id_ed25519 not accessible: No such file or directory.
# kex_exchange_identification: Connection closed by remote host
# Connection closed by ::1 port 62222

My SSH config file is symlinked as follows:

ls -alh .ssh/config
# lrwxr-xr-x 1 maxmouchet staff 74 Jan 29 19:50 .ssh/config -> /nix/store/8gyryn6lmfcdg0j0hfn4pnahmx6d2j4i-home-manager-files/.ssh/config

Any way to support read-only SSH config files?

NixOS / CPU Type - Intel

I'm using a M1 MBP, and NixOS CPU Type - Intel is not available for now.

I noticed the NixOS card on roadmap has been marked as done. It that(NixOS Intel) still on the plan?

Screenshot 2023-03-27 at 07 43 45

Open Terminal without a temp file

Hi,

you've created an amazing project. After some time playing with it, I encountered one thing that can hopefully be changed.

When you right click a VM and choose 'Open Terminal', the app creates a temp file with the connection string which deleted itself upon running. Some Terminal apps (in my case iTerm) see this as a risk and show a warning. Wouldn't it be possible to execute the command directly without relying on the temporary file? Did you do it this way so you don't have to ask the user select their default Terminal app?

Screenshot 2023-02-27 at 08 15 02

Screenshot 2023-02-27 at 08 05 22

Screenshot 2023-02-27 at 08 06 16

x86 emulation without Rosetta on macOS 12

Hi, great project. Excited to try to reduce some of my next / vite build times from 5-10 minutes down to something reasonable when in docker on ARM. Is it or will it be possible to use something like the snippet below targeting amd64?

FROM --platform=linux/amd64 node:16 as build
WORKDIR /app
RUN apt-get update && apt-get install -y postgresql-client curl

Currently it fails (see below), though removing the platform target fixes the issue. However, I have build-time executables that are only build for amd64. Thanks!

 => CACHED [2/3] WORKDIR /app. 0.0s
 => ERROR [3/3] RUN apt-get update && apt-get install -y postgresql-client curl. 0.3s
------
 > [3/3] RUN apt-get update && apt-get install -y postgresql-client curl:
#0 0.341 exec /bin/sh: exec format error

Support cloud-init

Is your feature request related to a problem? Please describe.

When setting up a VM, I have a bunch of things to install after the fact. This is annoying, especially since I can somewhat automate this via a shell script.

Describe the solution you'd like

It would be great to be able to provision a VM with a cloud-init script like on AWS or Digitalocean. We should also have a way to get the status of the cloud-init script documented (or automatically shown in the Machines page) so we know when the VM is ready.

Describe alternatives you've considered

Running the script manually myself.

Additional context

N/A

References to host.docker.internal don't resolve to host OS

In my existing usage of Docker Desktop, I find I use the hostname host.docker.internal often in test/dev configurations to refer to the host OS, this is for connecting to locally, non-container installed PostgreSQL servers or the like.

I see that this doesn't appear to work under OrbMachine, is this possible via a different host name/configuration somewhere?

Bidirectional (reverse) localhost forwarding for Docker host net

Hey @kdrag0n,

I have a problem regarding networking. By running the container in --network=host mode, I can't get the desired bi-directional link. I can reach the container from my host with the 127.0.0.1 target but not from my container to the host.

From the host to my container (It's OK) :

root@docker:/# python3 -m http.server 9000
Serving HTTP on 0.0.0.0 port 9000 (http://0.0.0.0:9000/) ...

127.0.0.1 - - [28/Feb/2023 07:10:43] "GET / HTTP/1.1" 200 -

The container receives the request from the host via the curl 127.0.0.1:9000 command.
If I try the same thing from the container to the host, I cannot reach the desired target :

From my container to the host (doesn't works) :

❯ python3 -m http.server 9000
Serving HTTP on :: port 9000 (http://[::]:9000/) ...
root@docker:/# curl 127.0.0.1:9000

curl: (7) Failed to connect to 127.0.0.1 port 9000: Connection refused

Any idea where the problem could come from ?

Start/Stop entire stack (docker compose) with one click in GUI

Is your feature request related to a problem? Please describe.
From orbstack GUI it's possible to start/stop only one container at time. If there is a stack created with docker compose is very logn to start and stop all containers

Describe the solution you'd like
In GUI organize the containers as subelements of a folder that have the name of docker compose stack. Implemente start/stop command at folder level

Describe alternatives you've considered
None.

Additional context
Like docker desktop GUI

Failed to create machine NixOS

After adding a NixOS machine and waiting for a while, a prompt was displayed with the following message:

CleanShot-2023-03-01-19 50 08

I use the M1 pro MacBook Pro with macOS Ventura 13.2.1 (22D68).

Support for AppArmor

Is your feature request related to a problem? Please describe.
AppArmor is currently not supported on both Orbstack and Nestbox.

Describe the solution you'd like
AppArmor support being enabled in the kernel.

Describe alternatives you've considered
Not applicable.

Additional context
It would be great to have AppArmor enabled so Debian/Ubuntu containers can use it.

Impossibly large file at ~/.orbstack/data/data.img

Update from OrbStack

This is intended behavior that allows us to implement more seamless storage management. More details


Describe the bug
I received a notification from Backblaze that it was unable to backup my machine as my disk is running low on space.

To Reproduce
Steps to reproduce the behavior:

  1. Open OrbStack
  2. Wait...
  3. Run ls -hla ~/.orbstack/data/data.img and observe the size.

Expected behavior
There will not be a file larger than the system disk.

Screenshots
image

Logs
None of the logs seem to reference data.img

System info

  • macOS version: 13.0.1 (22A400)
  • CPU architecture: Arm

Additional context

ls -hla ~/.orbstack/data/data.img
-rw-r--r--@ 1 wizardfrag  staff   8.0T 10 Mar 17:12 /Users/wizardfrag/.orbstack/data/data.img

I suspect this is a sparsely allocated image file, and should possibly just be ignored by Backblaze, but I thought it might be worth reporting it!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.