Skip to content

Issue with Docker on M1 Mac

Host environment

  • Operating system: MacOS Monterey 12.0.1
  • OS/kernel version: Darwin M1-MacBook-Pro.local 21.1.0 Darwin Kernel Version 21.1.0: Wed Oct 13 17:33:01 PDT 2021; root:xnu-8019.41.5~1/RELEASE_ARM64_T6000 arm64
  • Architecture: Apple M1 Pro
  • QEMU flavor: I'm using qemu through Docker Desktop for Mac
  • QEMU version: I'm using qemu through Docker Desktop for Mac
  • QEMU command line: Qemu is not natively installed on my Mac
docker run  --platform=linux/amd64 --rm uphold/litecoin-core \     
  -printtoconsole \
  -regtest=1 \
  -rpcallowip=172.17.0.0/16 \
  -rpcauth='foo:1e72f95158becf7170f3bac8d9224$957a46166672d61d3218c167a223ed5290389e9990cc57397d24c979b4853f8e'

Emulated/Virtualized environment

  • Operating system: linux/debian
  • OS/kernel version: stable-slim
  • Architecture: amd64

Description of problem

I'm trying to run a docker container using the following command:

docker run  --platform=linux/amd64 --rm uphold/litecoin-core \     
  -printtoconsole \
  -regtest=1 \
  -rpcallowip=172.17.0.0/16 \
  -rpcauth='foo:1e72f95158becf7170f3bac8d9224$957a46166672d61d3218c167a223ed5290389e9990cc57397d24c979b4853f8e'

It should run the docker container, instead it throws the following error:

/entrypoint.sh: assuming arguments for litecoind
/entrypoint.sh: setting data directory to /home/litecoin/.litecoin
runtime: failed to create new OS thread (have 2 already; errno=22)
fatal error: newosproc

runtime stack:
runtime.throw(0x4cb21f, 0x9)
        /usr/local/go/src/runtime/panic.go:566 +0x95
runtime.newosproc(0xc420028000, 0xc420037fc0)
        /usr/local/go/src/runtime/os_linux.go:160 +0x194
runtime.newm(0x4d6db8, 0x0)
        /usr/local/go/src/runtime/proc.go:1572 +0x132
runtime.main.func1()
        /usr/local/go/src/runtime/proc.go:126 +0x36
runtime.systemstack(0x53ae00)
        /usr/local/go/src/runtime/asm_amd64.s:298 +0x79
runtime.mstart()
        /usr/local/go/src/runtime/proc.go:1079

goroutine 1 [running]:
runtime.systemstack_switch()
        /usr/local/go/src/runtime/asm_amd64.s:252 fp=0xc420022768 sp=0xc420022760
runtime.main()
        /usr/local/go/src/runtime/proc.go:127 +0x6c fp=0xc4200227c0 sp=0xc420022768
runtime.goexit()
        /usr/local/go/src/runtime/asm_amd64.s:2086 +0x1 fp=0xc4200227c8 sp=0xc4200227c0

Steps to reproduce

  1. Run the following in a terminal window on a Mac with an M1 chip:
docker run  --platform=linux/amd64 --rm uphold/litecoin-core \     
  -printtoconsole \
  -regtest=1 \
  -rpcallowip=172.17.0.0/16 \
  -rpcauth='foo:1e72f95158becf7170f3bac8d9224$957a46166672d61d3218c167a223ed5290389e9990cc57397d24c979b4853f8e'

Additional information

I increased the limits using ulimit as follows:

clemens@M1-MacBook-Pro ~ % ulimit -a
-t: cpu time (seconds)              unlimited
-f: file size (blocks)              unlimited
-d: data seg size (kbytes)          unlimited
-s: stack size (kbytes)             8176
-c: core file size (blocks)         0
-v: address space (kbytes)          unlimited
-l: locked-in-memory size (kbytes)  unlimited
-u: processes                       5333
-n: file descriptors                256
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information