当前位置:   article > 正文

【docker】docker容器自启动C语言程序笔记_怎么在容器里运行c文件

怎么在容器里运行c文件

1 docker自启动C程序案例

1.1 拉ubuntu镜像

docker pull ubuntu

1.2 启动ubuntu容器

docker run -it --name=u1 08d22c0ceb15 /bin/bash

1.3 在容器中安装gcc

root@178c803d276f:/# apt-get update

root@178c803d276f:/# apt-get install gcc

1.4 提交commit生成带gcc的镜像

docker commit -m="add gcc compile tool" -a="zwf" 178c803d276f ubuntu:1.1

 此时,ubuntu:1.1版本已经自带gcc工具

1.5 基于ubuntu:1.1版本制作定制镜像

(1)编写C程序helloword.c

  1. #include<stdio.h>
  2. #include <unistd.h>
  3. int main()
  4. {
  5.      while(1
  6.      {
  7.            printf("Hello World!!!\n");
  8.            sleep(5);
  9.      }
  10.      return 0;
  11. }

(2)编写Dockerfile

  1. FROM ubuntu:1.1
  2. RUN mkdir /usr/src/myapp
  3. COPY helloworld.c /usr/src/myapp
  4. WORKDIR /usr/src/myapp
  5. RUN gcc helloworld.c -o helloworld
  6. CMD ["./helloworld"]

目录结构:

注意:Dockerfile和helloworld.c都是放在宿主机下的。

1.6 执行构建镜像的指令

docker build -t ubuntu-helloworld . # 注意:命令最后要加一个点

1.7 查看ubuntu-helloworld镜像启动配置

docker inspect ff21d2470987

1.8 运行ubuntu-helloworld容器测试

docker run -it ff21d2470987

注意,后面不能带命令,有命令会被覆盖,不会打印hello world

重新打开一个终端,进入后台:

注意:如果helloworld程序退出,容器也会跟随结束

启动后,helloworld在后台运行,通过docker logs 容器ID查看运行情况

2 基于busybox构建镜像

2.1 为什么busybox基础镜像

ubuntu基础镜像77.8MB,busybox才4.86MB,优点资源消耗不大。缺点,支持的命令更少。

2.2 基于busybox基础镜像构建自己的镜像

(1)编写C程序helloword.c

#include<stdio.h>
#include <unistd.h>


int main()
{
     while(1
     {
           printf("Hello World!!!\n");
           sleep(5);
     }
     return 0;
}

(2)编写Dockerfile

FROM busybox:latest

COPY helloworld /

WORKDIR /

CMD ["./helloworld"]

(3)构建自己的镜像

docker build -t busybox-helloworld .

2.3 运行busybox-helloworld容器

可以看出,基于busybox制作的镜像相比ubuntu,大大减小开销。

运行效果一致:

docker run -it 60345b8bd221

2.4 进入busybox-helloworld容器

busybox基础镜像中没有支持/bin/bash, 通过sh进入。

 

总结

Docker中的镜像分层,支持通过扩展现有镜像,创建新的镜像。类似Java继承于一个Base基础类,自己再按需扩展。

新镜像是从 base 镜像一层一层叠加生成的。每安装一个软件,就在现有镜像的基础上增加一层

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/632198
推荐阅读
相关标签
  

闽ICP备14008679号