Docker自制gcc版Hello World

本文详细介绍如何将一个简单的C++ Helloworld程序打包进Docker镜像,包括所需依赖库的复制过程,以及如何构建和运行该镜像。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

博文背景

一直想用容器跑裸bash,那么先从Hello world动手,理解了它,裸bash可以用同样的方法给它造出来。

具体操作
ubuntu@shenzhen:~/cpphello $ cat hello.cpp
#include <iostream>
using namespace std;

int main()
{
    cout << "Hello World" << endl;
    return 0;
}

ubuntu@shenzhen:~/cpphello $ ldd hello
	linux-vdso.so.1 (0x00007fffd0bee000)
	libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f4de0dad000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4de0bbb000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f4de0a6c000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f4de0f9e000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f4de0a51000)
ubuntu@shenzhen:~/cpphello $ tree .
.
├── Dockerfile
├── hello
├── hello.cpp
├── hello.tar.gz
├── lib
│   └── x86_64-linux-gnu
│       ├── libc.so.6
│       ├── libgcc_s.so.1
│       ├── libm.so.6
│       └── libstdc++.so.6
└── lib64
    └── ld-linux-x86-64.so.2

3 directories, 9 files
ubuntu@shenzhen:~/cpphello $ tar -tf hello.tar.gz
Dockerfile
hello
hello.cpp
lib/
lib/x86_64-linux-gnu/
lib/x86_64-linux-gnu/libm.so.6
lib/x86_64-linux-gnu/libc.so.6
lib/x86_64-linux-gnu/libstdc++.so.6
lib/x86_64-linux-gnu/libgcc_s.so.1
lib64/
lib64/ld-linux-x86-64.so.2
ubuntu@shenzhen:~/cpphello $ cat Dockerfile 
# hello-world Dockerfile
FROM scratch
ADD hello.tar.gz /
CMD ["/hello"]

ubuntu@shenzhen:~/cpphello $ tar -tf hello.tar.gz 
Dockerfile
hello
hello.cpp
lib/
lib/x86_64-linux-gnu/
lib/x86_64-linux-gnu/libm.so.6
lib/x86_64-linux-gnu/libc.so.6
lib/x86_64-linux-gnu/libstdc++.so.6
lib/x86_64-linux-gnu/libgcc_s.so.1
lib64/
lib64/ld-linux-x86-64.so.2
ubuntu@shenzhen:~/cpphello $ docker build -t myhello:cpp .
Sending build context to Docker daemon  8.183MB
Step 1/3 : FROM scratch
 ---> 
Step 2/3 : ADD hello.tar.gz /
 ---> Using cache
 ---> abc22c5d0fcd
Step 3/3 : CMD ["/hello"]
 ---> Using cache
 ---> f395b074b1b7
Successfully built f395b074b1b7
Successfully tagged myhello:cpp
ubuntu@shenzhen:~/cpphello $ docker container run myhello:cpp
Hello World
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值