How does Docker scratch image support musl?
Clash Royale CLAN TAG#URR8PPP
up vote
0
down vote
favorite
I've created a simple Docker image which is completely raw with single binary copied and run:
FROM scratch
COPY ./target/release/hello_docker /
CMD ["/hello_docker"]
My compiler (Rust) by default creates binaries which dynamically load glibc and use it as their libc library. There is also a special flag, which makes binaries use musl.
On my Ubuntu 18.04 both binaries run flawlessly. I assume, that it provides support for both libc implementations, but I couldn't find a definitive confirmation.
But when I run these binaries in a scratch
Docker image, only the musl version works. Glibc is not installed, so obviously it can't be loaded in runtime and crashes the application. But why does the musl version work?
I've read that most of musl is in the statically linked part, but there is also a tiny dynamically loaded part, which provides code for the specific kernel version. But there is nothing installed, where does this dynamic shim come from?
docker glibc
add a comment |Â
up vote
0
down vote
favorite
I've created a simple Docker image which is completely raw with single binary copied and run:
FROM scratch
COPY ./target/release/hello_docker /
CMD ["/hello_docker"]
My compiler (Rust) by default creates binaries which dynamically load glibc and use it as their libc library. There is also a special flag, which makes binaries use musl.
On my Ubuntu 18.04 both binaries run flawlessly. I assume, that it provides support for both libc implementations, but I couldn't find a definitive confirmation.
But when I run these binaries in a scratch
Docker image, only the musl version works. Glibc is not installed, so obviously it can't be loaded in runtime and crashes the application. But why does the musl version work?
I've read that most of musl is in the statically linked part, but there is also a tiny dynamically loaded part, which provides code for the specific kernel version. But there is nothing installed, where does this dynamic shim come from?
docker glibc
add a comment |Â
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I've created a simple Docker image which is completely raw with single binary copied and run:
FROM scratch
COPY ./target/release/hello_docker /
CMD ["/hello_docker"]
My compiler (Rust) by default creates binaries which dynamically load glibc and use it as their libc library. There is also a special flag, which makes binaries use musl.
On my Ubuntu 18.04 both binaries run flawlessly. I assume, that it provides support for both libc implementations, but I couldn't find a definitive confirmation.
But when I run these binaries in a scratch
Docker image, only the musl version works. Glibc is not installed, so obviously it can't be loaded in runtime and crashes the application. But why does the musl version work?
I've read that most of musl is in the statically linked part, but there is also a tiny dynamically loaded part, which provides code for the specific kernel version. But there is nothing installed, where does this dynamic shim come from?
docker glibc
I've created a simple Docker image which is completely raw with single binary copied and run:
FROM scratch
COPY ./target/release/hello_docker /
CMD ["/hello_docker"]
My compiler (Rust) by default creates binaries which dynamically load glibc and use it as their libc library. There is also a special flag, which makes binaries use musl.
On my Ubuntu 18.04 both binaries run flawlessly. I assume, that it provides support for both libc implementations, but I couldn't find a definitive confirmation.
But when I run these binaries in a scratch
Docker image, only the musl version works. Glibc is not installed, so obviously it can't be loaded in runtime and crashes the application. But why does the musl version work?
I've read that most of musl is in the statically linked part, but there is also a tiny dynamically loaded part, which provides code for the specific kernel version. But there is nothing installed, where does this dynamic shim come from?
docker glibc
docker glibc
asked 6 hours ago
CodeSandwich
82
82
add a comment |Â
add a comment |Â
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f474370%2fhow-does-docker-scratch-image-support-musl%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password