linux怎么查看本机内存大小
285
2022-10-19
#云原生征文#两种 Docker 镜像打包的常用方式
目录
前言
正文
一、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 devENV HOME /appWORKDIR /app/gatewayCOPY ./.netrc /appCOPY . /app/gatewayRUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositoriesRUN apk add --no-cache gcc musl-dev gitRUN go env -w GOPRIVATE=git.liuzhen007.comRUN go env -w GO111MODULE=onRUN go env -w GOPROXY=go mod tidyRUN go build main.goRUN mv main gatewayENV TZ=Asia/ShanghaiRUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositoriesRUN 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./posts/12598
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~