千锋Linux云计算教程全套视频合集:Dockerfile详解(二)
更新:HHH   时间:2023-1-7


在本章节中将和大家讲解:Dockerfile的第二部分:

Dockerfile

FROM 指令

主要作用是指定一个镜像作为构建自定义镜像的基础镜像,在这个基础镜像之上进行修改定制。

这个指令是 Dockerfile 中的必备指令,同时也必须是第一条指令。

在 Docker Store 上有很多高质量的官方镜像,可以直接作为我们的基础镜像。

作为服务类的,如 Nginx Mongo 等

用于开发的, 如 Python golang

操作系统类, 如 Centos ubuntu

除了一些现有的镜像,Docker 还有一个特殊的镜像 scratch

这个镜像是虚拟的,表示空白镜像

FORM scratch

这以为着这将不以任何镜像为基础镜像。

可以把可执行的二进制文件复制到镜像中直接执行,容器本身就是和宿主机共享 Linux内核的。

使用 Go 语言开发的应用很多会使用这种方式来制作镜像,这也是为什么有人认为 Go 是特别适合容器微服务架构的语言的原因之一。

插个小消息,也方便想学习的同学,在文章下方留言即可试听课程外加领取千锋HTML5、UI交互设计、PHP、Java+云数据、大数据开发、VR/AR/Unity游戏开发、Python人工智能、Linux云计算、全栈软件测试、网络安全等全部的视频学习教程。

制作自己的 Hello world

  1. 在任意一台 Linux 机器上,安装 gcc
  2. 查看有没有安装

[root@localhost hello_qf]# rpm -qa gcc glibc-static

glibc-static-2.17-222.el7.x86_64

gcc-4.8.5-11.el7.x86_64

没有的话,进行安装即可

[root@localhost hello_qf]# yum install gcc glibc-static

  1. 编辑 C 源代码文件

[root@localhost docker]# cat hello.c

#include <stdio.h>

int main()

{

printf("Hello, Yangge! \n");

return 0;

}

  1. 将源代码文件编译为可执行的二进制文件

[root@localhost hello_qf]# gcc --static hello.c -o hello

编译好后,测试一下

[root@localhost hello_qf]# ls

hello hello.c

# hello 是我们编译好的二进制文件

# hello.c 是 C 的源码文件

[root@localhost hello_qf]# ./hello

Hello Yangge # 输出结果,说明编译成功

编辑

  1. 编辑 Dockerfile

在有 hello 二进制的文件目录下,编译 Dockerfile 文件,内容如下:

[root@localhost hello_qf]# ls

Dockerfile hello hello.c

[root@localhost hello_qf]# cat Dockerfile

FROM scratch

ADD hello /

CMD ["/hello"]

  • ADD 是把当前目录下的 hello 文档拷贝到 容器中的根目录下
  • CMD 执行根目录下的 hello 文件
  • 构建新的镜像
返回云计算教程...