网站首页 > 精选教程 正文
云计算-5-docker commit定制镜像
镜像是容器的基础,在每次执行docker run的时候都会指定那个镜像作为容器的基础,之前我们的例子中的镜像都是来自镜像仓库(Docker Hub,以后可能会来源于自己的私有仓Harbor),这些镜像有时候可能不满足我们的需求,那么就需要我们定制镜像以达到我们的需要,接下来几章接我们介绍一下如何定制镜像。
我们以我们之前讲过如何快速的部署nginx为例子,来讲解镜像如何构建
docker run --name mynginx -p 8080:80 -d nginx
执行上面命令后,nginx镜像会启动容器,名字为mynginx,并且映射到了宿主机8080端口上,启动成功以后我们就可以使用浏览器访问nginx服务器。
如果是本地运行Docker,可以直接使用http://localhost:8080,如果是虚拟机或者云服务器,那么将localhost换成对应的IP地址即可。访问结果如下:
但是如果我们因为工作需要,想将这个页面换成我们需要的页面,例如换成SpribootBoot葵花宝典欢迎你使用Docker的文字,那么我们需要使用docker exec命令进入容器,修改页面内容
#进入容器
docker exec -it mynginx bash
#修改页面
echo '<h1>welcome My Docker!</h1>' > /usr/share/nginx/html/index.html
#推出容器
exit
我们通过交互式方式进入mynginx容器,执行bash命令,获得一个可以操作的shell。
然后我们将<h1>welcome My Docker!</h1>覆盖/usr/share/nginx/html/index.html原来内容,然后我们刷新浏览器,内容发生改变
查看修改后区别docker diff
我们修改过容器内容以后,实际上就是修改了容器的存储层,我们可以使用命令docker diff mynginx查看具体的改动。
[root@hecs-17222 ~]# docker diff mynginx
C /usr
C /usr/share
C /usr/share/nginx
C /usr/share/nginx/html
C /usr/share/nginx/html/index.html
C /etc
C /etc/nginx
C /etc/nginx/conf.d
C /etc/nginx/conf.d/default.conf
C /root
A /root/.bash_history
C /run
A /run/nginx.pid
C /var
C /var/cache
C /var/cache/nginx
A /var/cache/nginx/scgi_temp
A /var/cache/nginx/uwsgi_temp
A /var/cache/nginx/client_temp
A /var/cache/nginx/fastcgi_temp
A /var/cache/nginx/proxy_temp
保存修改后容器内容,形成镜像
当我们希望将我们修改后的容器保存下来形成容器的时候,可以使用的、docker commit命令将在镜像原有的基础上,加上修修改容器的存储层,构成新的镜像。
docker commit [选项] <容器ID\容器名> [<仓库名>[:<标签>]]
我们使用命令将mynginx容器保存为镜像
docker commit \
--author "Springboot葵花宝典 <1359282905@qq.cm>" \
--message "修改nginx默认网页" \
mynginx \
mynginx:v2
- --author:用于表示容器修改的作者
- --message:距离修改的内容信息
查看修改后 镜像:
docker image ls mynginx
我们可以使用docker history查看镜像内修改的记录
docker history mynginx:v2
运行新的容器:
docker run --name mynginx2 -d -p 8081:80 mynginx:v2
docker commit谨慎使用
我们在使用docker commit的时候虽然可以比较直观的理解镜像存储的概念,但是一般在实际环境中我们不使用这个docker commit命令而是使用dockerfile有以下几点原因
- 如果简单修改,命令简单没有什么,如果要安装软件、编译构建
会有大量的无关内容被添加进来,将会导致镜像极为臃肿。
- docker commit是黑箱操作,生成的镜像被称为黑箱镜像,就是说除了制造镜像的人其他人不知道执行过什么命令,怎么生成的镜像,而且如果时间久远的话,制作人也会忘记操作过程,其维护成本过高。
如果您觉得本文不错,欢迎关注,点赞,收藏支持,您的关注是我坚持的动力!
公众号 springboot葵花宝典 主要分享JAVA技术,主要包含SpringBoot、SpingCloud、Docker、中间件等技术
原创不易,转载请注明出处,感谢支持!如果本文对您有用,欢迎转发分享!
猜你喜欢
- 2024-10-23 Docker 容器高级操作「Docker 系列-3」
- 2024-10-23 4、Dockerfile 基于centos 实战构建nginx镜像
- 2024-10-23 Nginx 负载均衡案例 nginx负载均衡机制
- 2024-10-23 5分钟搭建苹果CMS及熟悉常用操作 苹果cmsv10搭建教程
- 2024-10-23 Docker下环境部署 docker运行环境
- 2024-10-23 用Kubernetes编排容器,就看这个 kubernetes pause容器
- 2024-10-23 Docker Swarm 集群环境搭建及弹性服务部署
- 2024-10-23 3、Dockerfile的基本语法 dockerfile的作用
- 2024-10-23 Docker安装nginx web服务器的方法及几点思考
- 2024-10-23 docker容器自动重启配置 如何确保docker容器重启服务器不会关
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)