rocker-org / rocker-versioned

Run current & prior versions of R using docker
https://hub.docker.com/r/rocker/r-ver
GNU General Public License v2.0
297 stars 169 forks source link

Rstudio-server not starting: Wrong arch? #246

Closed TerryLansdown closed 2 years ago

TerryLansdown commented 3 years ago

Hi,

I've pulled both the latest and devel images, and both are giving me the following error.

standard_init_linux.go:211: exec user process caused "exec format error"

Trying to run the docker image on a raspi4. I'm guessing I'm doing something silly, but any tips would be appreciated.

Thanks!

cboettig commented 3 years ago

Thanks. You haven't told us which images you're pulling, but yeah, you'll need ARM based images. We have these for r-base, see https://hub.docker.com/_/r-base?tab=tags, but not the r-ver stack

TerryLansdown commented 3 years ago

Hi, thanks for your reply. I've tried several. For example, if I:

docker run --rm -ti rocker/r-base

Docker pulls: a97aebd263e29f9feb44f45ba1015c1ad610c863f12e0ca4706c77090ed9d16f

then I get…

standard_init_linux.go:211: exec user process caused "exec format error"

again. I'm running on Raspi4.

Thanks.

eddelbuettel commented 3 years ago

That may just the git commit sha signifying the Dockerfile meta-data driving that build. And it w\orks here (on x86_64) but I don't have a Raspberry Pi or other Arm machine to test for.

edd@rob:~$ docker run --rm -ti rocker/r-base:latest Rscript --version
R scripting front-end version 4.0.3 (2020-10-10)
edd@rob:~$ 
TerryLansdown commented 3 years ago

Ok, thanks. If I run that:

$ docker run --rm -ti rocker/r-base:latest Rscript --version
Unable to find image 'rocker/r-base:latest' locally
latest: Pulling from rocker/r-base
4363cc522034: Pull complete 
84b4f34362bc: Pull complete 
5a06f0a021ca: Pull complete 
642a4d4f99ab: Pull complete 
d36c605538a6: Pull complete 
b6393690e150: Pull complete 
Digest: sha256:a97aebd263e29f9feb44f45ba1015c1ad610c863f12e0ca4706c77090ed9d16f
Status: Downloaded newer image for rocker/r-base:latest
standard_init_linux.go:211: exec user process caused "exec format error"

A bit stuck now, but thanks.

eddelbuettel commented 3 years ago

man docker-pull suggests the --platform="" option.

In a more general sense, you may need to consult a 'how do I use Docker on Raspberry Pi' tutorial.

eitsupi commented 3 years ago

Very late answer, but r-base (formally docker.io/library/r-base) and rocker/r-base (formally docker.io/rocker/r-base) are different images. Only the former is a multi-arch image, so you need to run docker pull r-base or docker pull docker.io/library/r-base to make it work on your Raspberry Pi.

eddelbuettel commented 3 years ago

Actually rocker/r-base and 'r-base' are the same thing. I maintain both and PR to the upstream. The current file is

Maintainers: Carl Boettiger <rocker-maintainers@eddelbuettel.com> (@cboettig),
             Dirk Eddelbuettel <rocker-maintainers@eddelbuettel.com> (@eddelbuettel)
GitRepo: https://github.com/rocker-org/rocker.git

Tags: 4.1.1, latest
Architectures: amd64, arm64v8, ppc64le, s390x
GitCommit: a2dc8a7816d7cf8adab20ee9baf7d4ae283b4b92
Directory: r-base/4.1.1

and it lists the four hardware architectures it builds for. Now, these four exist for r-base and this does, sadly, not imply any other Rocker Project containers also automatically exist.

eitsupi commented 3 years ago

I think the difference between r-base and rocker/r-base, which originate from the same repository, is hard to understand for beginners. As far as I am aware, there is nothing that exists in rocker/r-base that does not exist in r-base, so it would be more helpful if the documentation stated to use r-base instead of rocker/r-base. (Of course, it's understandable that both images are maintained for compatibility and sustainability reasons.)

eddelbuettel commented 3 years ago

Well, there is no difference. Same product, offered in two "stores" or lines. Your point is taken but differentiating is actually hard because rocker/* has half dozen or more other containers built on top, as it should. The official library has an official (single !!) container for R, as it does for a hundred or other things (name your language or DB or service and it will be there).

So steady state is not all that bad.

Explaining, as our paper does, that one half Rocker is fundamentally a little different from the other (as they both serve worthy but slightly different goals) may be more complicated and confusing.

eitsupi commented 2 years ago

I think it has been answered, so I will close it.