docker命令中commit和build

书欣 Docker 发布时间:2023-01-16 14:07:39 阅读数:2758 1
下文笔者讲述docker命令中commit和build命令的优点和缺点说明,如下所示

commit与build优缺点说明

commit:
	优点:
	 简单、所见所得
	缺点
	 元数据信息无法注入
	 镜像层级的重用性弱
	 编译步骤不可重用

DockerFile:
    优点
     元数据信息可注入
     镜像层级的重用性强
     编译步骤不可重用
    缺点:
     编译速度没有宿主机快
     下载程序的依赖包比在宿主机中直接下载更加耗时
     会产生none镜像,占用磁盘空间

commit + build镜像制作方法

 
docker pull centos:centos7	        #从官网下载一个基础镜像
[root@localhost dockerrun]# mkdir test		#创建一个目录并进入
[root@localhost test]# vim Dockerfile	    #创建一个Dockerfile文件
Dockerfile文件内容如下:
FROM centos:centos7
RUN touch /root/startup.sh
CMD tail -f /root/startup.sh
[root@localhost test]# docker build -t axplinux/centos:7.9 .		#将Dockerfile文件转化成镜像axplinux/centos:7.9 
[root@localhost test]# docker run --name nginx -p 8000:80 -d axplinux/centos:7.9	#将axplinux/centos:7.9当第二个基础镜像,用nginx容器运行该镜像。
[root@localhost test]# docker extc -it nginx /bin/bash		#进入容器内部
//容器内下载一些所需命令 
 
exit    #退出容器

[root@localhost test]# docker commit nginx axplinux/nginx:v0.1	#将nginx容器封装成最终镜像axplinux/nginx:v0.1
[root@localhost test]# cc	    #容器已无用,可以删除,cc是删除容器的脚本,脚本内容在我前几期文章中有写
[root@localhost test]# docker images	#查看v0.1版的nginx镜像已制作完成。将此镜像作为另一个基础镜像继续升级。
[root@localhost ~]# mkdir test2	#创建另一个文件
[root@localhost ~]# cd test2	#进入
[root@localhost test2]# vim Dockerfile	    #再创建一个Dockerfile文件
Dockerfile文件内容如下:
FROM axplinux/nginx:v0.1
MAINTAINER anxiaopeng_linux
LABEL nginx_version="1.21.3"
RUN rm -rf /root/startup.sh
EXPOSE  80 443
WORKDIR /usr/local/nginx
CMD /usr/local/nginx/sbin/nginx && tail -f /usr/local/nginx/logs/access.log
[root@localhost test2]# docker build -t axplinux/nginx:v2.0 .	#再将Dockerfile文件转化成镜像axplinux/nginx:v2.0
[root@localhost test2]# docker image inspect axplinux/nginx:v2.0	#可以查看标签信息和作者信息
[root@localhost test2]# docker run --name nginx -p 666:80 -d axplinux/nginx:v2.0	#启动镜像
浏览器访问ip:666能看到网页文件

[root@localhost test2]# docker logs nginx	#可查看nginx的访问日志 

3. 镜像动态化
[root@localhost test2]# cd ..
[root@localhost ~]# mkdir dockerenv
[root@localhost ~]# cd dockerenv/
[root@localhost dockerenv]# vim Dockerfile	#创建Dockerfile文件
Dockerfile文件内容如下:
FROM axplinux/nginx:v2.0
ENV INDEX_DATA default
ADD ./startup.sh /root
RUN chmod +x /root/startup.sh
ENTRYPOINT /bin/bash /root/startup.sh
[root@localhost dockerenv]# vim startup.sh	#创建启动脚本

创建启动脚本,脚本内容为
#!/bin/bash
echo $INDEX_DATA > /usr/local/nginx/html/index.html
/usr/local/nginx/sbin/nginx && tail -f /usr/local/nginx/logs/access.log
[root@localhost dockerenv]# docker build -t axplinux/nginx:v3.0 .
[root@localhost dockerenv]# docker run --name nginx -p 8000:80 -d axplinux/nginx:v3.0	#先正常启动镜像
浏览器访问Ip:8000,输出默认结果default

[root@localhost dockerenv]# cc
[root@localhost dockerenv]# docker run --name nginx -p 8000:80 --env INDEX_DATA=999999999 -d axplinux/nginx:v3.0	#动态启动镜像
浏览器访问ip:8000,输出默认结果999999999

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/docker/202301/5379.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者