【Docker】应用程序容器化(一)构建应用程序镜像
·
一、基于scratch构建简单的镜像
1、准备一个可执行文件
(1)搭建C编译环境
- 安装gcc
yum install gcc
- 安装glibc-static静态库
修改/etc/yum.repos.d/centos.repo文件,将其crb节的enabled值改为1
yum install glibc-static

(2)创建scratch-img目录
mkdir scratch-img
cd scratch-img/
vi hello.c
hello.c文件内容:
#include <stdio.h>
int main(void)
{
printf("Hello,Docker!\n");
return 0;
}
(4)执行gcc命令编译该源程序生成可执行文件,然后进行测试
gcc hello.c -static -o hello
./hello

2、基于scratch构建镜像
(1)创建Dockerfile文件
vi Dockerfile
文件内容:
FROM scratch
ADD hello /
CMD ["/hello"]
(2)构建镜像
docker build --tag hello .

(3)查看新构建的hello镜像基本信息
docker images --filter "reference=hello"

可见其大小为861kB
查看要运行的二进制hello的大小
ls -lh hello

可见其大小为842kB
由此得:基于scratch构建的镜像的大小与加入镜像的二进制文件的大小差距很小。
(4)运行新镜像
docker run --rm hello

输出内容相同!
scratch-img目录内容:
二、制作基于VNC的Firefox镜像
(1)建立一个目录名为fx-vnc
mkdir fx-vnc

(2)在该目录下创建Dockerfile
cd fx-vnc
vi Dockerfile
Dockerfile内容
FROM ubuntu:20.04
# 安装 VNC、Xvfb 和 Firefox
# 1. 换源
RUN sed -i 's@http://.*.ubuntu.com@http://mirrors.aliyun.com@g' /etc/apt/sources.list \
&& apt-get clean \
&& apt-get update -y
RUN apt update && apt install -y x11vnc xvfb firefox
# 创建 VNC 配置目录
RUN mkdir ~/.vnc
# 设置 VNC 登录密码为 1234
RUN x11vnc -storepasswd 1234 ~/.vnc/passwd
# 启动时自动运行 Firefox(添加到 .bashrc)
RUN bash -c 'echo "firefox" >> /.bashrc'
# 暴露 VNC 默认端口
EXPOSE 5900
# 启动 Xvfb 和 x11vnc
CMD ["x11vnc", "-forever", "-usepw", "-create"]
(3)构建镜像
docker build --tag fx-vnc .

(4)运行这个新镜像启动容器
docker run --rm -p 5900:5900 fx-vnc

(5)安装VNC客户端
yum install tigervnc
三、多阶段构建镜像
(1)创建目录名为multi_build
mkdir multi-build
(2)在该目录下编写程序文件
vi main.go
文件内容:
package main
import "fmt"
func main() {
fmt.Println("Hello World!")
}
(3)在该目录下创建Dockerfile文件
Dockerfile文件内容:
# 第1阶段:构建阶段,命名为 build
FROM golang:1.21 AS build
WORKDIR /src
COPY main.go ./
RUN go build -o /bin/hello ./main.go
# 第2阶段:运行阶段,基于 scratch 构建最小镜像
FROM scratch
COPY --from=build /bin/hello /bin/hello
CMD ["/bin/hello"]

(4)构建镜像
docker build -t go-hello-world .

(5)运行镜像,启动容器
docker run --rm go-hello-world

四、谢谢观看!
更多推荐

所有评论(0)