前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker--commit与dockerfile 构建镜像(二)

Docker--commit与dockerfile 构建镜像(二)

作者头像
Kevin song
发布2022-06-07 18:19:22
6990
发布2022-06-07 18:19:22
举报

概述

通常在镜像仓库下载images 镜像无法满足当前业务软件运行要求,需要安装一些软件包并重新生成images镜像后进行大批量部署。使用docker commit和docker build 2种方式构建镜像。

commit构建镜像

代码语言:javascript
复制
#命令格式
docker commit -a="作者" -m="说明"  -p 容器id/容器名称 镜像新名称:镜像版本
# 参数说明
    -a :提交的镜像作者;
    -c :使用Dockerfile指令来创建镜像;
    -m :提交时的说明文字;
    -p :在commit时,将容器暂停。

docker commit 构建镜像三部曲

  1. docker run 运行容器
  2. 修改容器
  3. docker commit 构建新镜像

(1)运行容器

代码语言:javascript
复制
docker run -d -it --name webserver -p 8080:80 nginx

(2)修改容器 (容器内修改)

代码语言:javascript
复制
echo "hello" > /usr/share/nginx/html/hello.html

(3)构建新镜像

代码语言:javascript
复制
docker commit webserver nginx-202206

(4)查看镜像

代码语言:javascript
复制
docker images nginx-202206

(5)docker run运行

代码语言:javascript
复制
docker run -d -it --name nginx02 -p 8091:80 nginx-202206

(6)访问测试

代码语言:javascript
复制
[root@localhost /]# curl  192.168.100.95:8091/hello.html
hello

(7)文件挂载

代码语言:javascript
复制
docker run -d --name nginx01 -p 8090:80 -v /nginx/public:/usr/share/nginx/html -v /nginx/config:/etc/nginx/conf.d nginx-202206

dockerFile构建镜像

dickerFile 参数

代码语言:javascript
复制
FROM         指定基础镜像
MAINTAINER   指定作者,一般都是姓名 + 邮箱
LABEL        指定标签信息
USER         设置容器运行时的用户
RUN          在build过程要运行的命令  (在容器外运行,也就是在宿主机运行的命令,在这里我们可以给容器安装一些应用程序 yum install xxxx)
ADD          添加文件到镜像中,如果.tar.gz文件的话, 会自动解压
COPY         类似ADD,将文件拷贝到镜像,不会解压压缩文件
ENV          设置环境变量
VOLUME       设置文件挂载,默认是匿名挂载
EXPOSE       暴露端口,指定容器运行时开放的端口,运行也需要开放这个端口才能访问  docker run -d  -p 8080:8080 镜像id 
CMD          容器运行时要执行的命令(在容器内运行的命令),可用来运行默认要运行的程序,只有最后一个CMD才会运行,且只运行一次
ENTRYPOINT   和CMD一样,但是可以追加命令;ONBIUILD 当构建一个被继承dockerFile,这个时候就会运行ONBUILD 指令,属于触发指令
WORKDIR      指定工作目录,也就是登陆后默认进去的目录;

使用 dockerFile创建镜像

(1)创建 dockerFile_nginx文件

vim dockerFile_nginx

代码语言:javascript
复制
FROM  nginx-202206
COPY ./hello.html /usr/share/nginx/html

(2)docker build 构建镜像

代码语言:javascript
复制
docker  build  -f dockerfile_nginx -t webnginx:v1.1 .

# 参数说明

-f 需要构建的脚本文件

-t tag的缩写,构建后的镜像名称:版本号

(3)查看镜像

代码语言:javascript
复制
[root@localhost mnt]# docker images
REPOSITORY     TAG       IMAGE ID       CREATED             SIZE
webnginx       v1.1      11917097ffd6   5 minutes ago       141MB
nginx-202206   latest    756b1c638161   About an hour ago   141MB
nginx          latest    605c77e624dd   5 months ago        141MB

(4)运行镜像

代码语言:javascript
复制
docker run -d -it --name nginxA -p 8095:80 webnginx:v1.1

(5)测试

代码语言:javascript
复制
[root@localhost mnt]# curl  192.168.100.95:8095/hello.html
dockerFile

镜像保存、加载

(1)镜像保存

代码语言:javascript
复制
#命令格式
docker save 镜像id/镜像名称 -o /本地目录/文件名称
docker save webnginx:v1.1 -o /opt/webnginx.tar

(2)load加载镜像

代码语言:javascript
复制
docker load -i /opt/webnginx.tar
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源搬运工宋师傅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档