用docker部署c/c++程序,首先需要一個Linux的基礎(chǔ)鏡像,可以是ubuntu悬包、centos等。但最近docker都流行用alpine作為基礎(chǔ)鏡像馍乙,因?yàn)閍lpine最大的優(yōu)點(diǎn)是體積小。先下載一個alpine的鏡像玩玩
docker pull alpine
查看一下鏡像的大小
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine latest 3f53bb00af94 2 weeks ago 4.41MB
只有4M多垫释,作為基礎(chǔ)鏡像確實(shí)很理想丝格。相比之下,debian要去到80幾M棵譬,ubuntu 180幾M显蝌,這么大的體積也不利于部署。
下載完鏡像,可以把這個迷你的linux啟動起來曼尊,進(jìn)去玩玩
docker run -it alpine /bin/sh
進(jìn)去玩完以后酬诀,按exit命令退出來。然后用docker ps -a查看所有容器骆撇,會看到
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
75c17acca2e9 alpine "/bin/sh" 43 seconds ago Exited (0) 13 seconds ago stoic_wozniak
隨著我們退出瞒御,容器的狀態(tài)也變成Exited。如果希望這個容器繼續(xù)運(yùn)行神郊,可以輸入
docker start container_id
其中的container_id是docker ps -a中查看到的肴裙。要進(jìn)入這個容器,輸入
docker exec -it container_id /bin/sh
回到正題涌乳,要在這個alpine容器中編譯c/c++程序蜻懦。先在容器里面編寫一個最簡單的hello world
#include <stdio.h>
int main()
{
printf("Hello world\n");
}
PS:這個alpine之中各種命令都是使用busybox的,vi之類的用起來會有點(diǎn)怪
c程序有了夕晓,我們還缺gcc編譯器宛乃。alpine的包管理命令是apk,安裝gcc
apk add gcc
不過alpine默認(rèn)的安裝源慢得要命蒸辆,裝個gcc都要好久征炼。可以手動修改repositories吁朦,改為國內(nèi)源
echo "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.8/main" > /etc/apk/repositories
echo "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.8/community" >> /etc/apk/repositories
不過一編譯就報錯了柒室,很無語
1.c:1:19: fatal error: stdio.h: No such file or directory
在alpine之中,libc是要單獨(dú)安裝的
apk add libc-dev
安裝完libc后逗宜,gcc終于可以順利編譯雄右,hello world也順利出現(xiàn)了