#云原生征文#两种 Docker 镜像打包的常用方式 原创

发布于 2022-6-9 13:57
浏览
0收藏

 


目录

​​前言​​

​​正文​​

​​    一、docker commit​​

​​    二、docker build ​​

​​结尾​​

 
前言
云原生概念的共识之一就是服务器端的应用程序部署最好使用容器化的方式,而服务容器化就是把对应服务的应用程序部打包到容器镜像中,然后通过容器的方式进行部署和运行。一般来说,Docker 打包有两种常用的方式,本文接下来分别介绍。

 


正文

 

一、docker commit

 

使用docker commit命令可以把一个正在运行的容器提交为一个新的镜像文件,一般步骤如下:

(1)首先拉取一个基础镜像,参考命令如下:

 

docker pull centos

 

(2)创建一个支持交互式的容器,参考命令如下:

 

docker run -it --name=mycentos centos:latest

 

(3)上传软件到容器中,参考命令如下:

 

docker cp xxx.tar mycentos:/root/

 

(4)在容器中解压压缩包,然后部署对应服务的应用程序,参考命令如下:

 

tar -xf xxx.tar 

 

(5)把交互式的容器提交为一个新的镜像,参考命令如下:

 

docker commit mycentos mydockerservice

 

二、docker build 

 

Dockerfile是一个用来构建镜像的文本文件,文本内容包含一条条构建镜像所需的指令和说明。Docker通过读取Dockerfile中的指令自动生成镜像。Docker里的镜像绝大部分都是在别的镜像的基础上去进行创建的,也就是使用镜像的分层结构。Docker镜像由只读层组成,运行的容器会在Docker的镜像上面多加一层可写的容器层。任何对文件的更改都只存在容器层。因此任何对容器的操作不会影响到镜像。

 

使用docker build命令可以编译一个新的镜像文件,一般步骤如下:

(1)编写Dockerfile文件

Dockerfile是一个用来构建镜像的文本文件,文本内容包含一条条构建镜像所需的指令和说明,实例文件如下:

 

From golang:1.14.2-alpine3.11 AS dev

ENV HOME /app

WORKDIR /app/gateway

COPY ./.netrc /app

COPY . /app/gateway

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories

RUN apk add --no-cache gcc musl-dev git

RUN go env -w GOPRIVATE=git.liuzhen007.com

RUN go env -w GO111MODULE=on

RUN go env -w GOPROXY=https://goproxy.cn,direct

RUN go mod tidy

RUN go build main.go

RUN mv main gateway

ENV TZ=Asia/Shanghai

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories

RUN apk update && apk add tzdata && echo "${TZ}" > /etc/timezone && ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime && rm /var/cache/apk/*

WORKDIR /root/gateway/

COPY --from=dev /app/gateway/gateway .

CMD ["./gateway"]

 

(2)编译打包

使用docker build命令打包镜像,同时需要指定目标镜像的名称和版本号,参考命令如下:

 

docker build -t centos-gateway:v1 .

 

其中,点表示同级目录下的Dockerfile文件。

 


结尾

 

好了,至此,两种 Docker 镜像的打包方式就介绍完了。听我这么一介绍,是不是感觉非常简单,那就自己动手试一试吧!

 


【本文正在参加云原生有奖征文活动】,活动链接:https://ost.51cto.com/posts/12598

 


作者简介:😄大家好,我是 Data-Mining(liuzhen007),是一位典型的音视频技术爱好者,前后就职于传统广电巨头和音视频互联网公司,具有丰富的音视频直播和点播相关经验,对 WebRTC、FFmpeg 和 Electron 有非常深入的了解,😄公众号:玩转音视频。同时也是 CSDN 博客专家(博客之星)、华为云享专家(共创编辑、十佳博主)、51CTO社区编辑、InfoQ 签约作者,欢迎关注我分享更多干货!😄 

 

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
3
收藏
回复
举报
回复
添加资源
添加资源将有机会获得更多曝光,你也可以直接关联已上传资源 去关联
    相关推荐