赞
踩
镜像分层堆叠存储,每一层在前一层的基础上进行修改;容器同样也是如此,以镜像为基础层,在其上加一层读写层用于交互。
有时候我们运行的容器可能在原有镜像的基础上做了一些修改,如果我们想将其保存起来,封装成为一个更新的镜像,Docker提供了 docker commit 命令。
- [root@docker ~]# docker commit -a "syztoo" -m "change index.html" web syztoo/nginx:v1
-
- 参数
- -a 记录提交作者
- -m 记录修改信息
- [root@docker ~]# docker commit -a "syztoo" -m "change index.html" web syztoo/nginx:v1
- sha256:3755184b24f3a7390a1709fe176c6ebc6449d79e2d3da84969da2e8bb34ca219
- [root@docker ~]# docker images
- REPOSITORY TAG IMAGE ID CREATED SIZE
- syztoo/nginx v1 3755184b24f3 8 seconds ago 109MB
- nginx latest 881bd08c0b08 2 weeks ago 109MB
注意:由于 docker commit 的操作除了修改人知道作了何种改动以外,别人无从而知,而且由于命令的执行,还有额外一连串的文件被改动。所以一般情况下,慎用 docker commit 。
举个栗子
使用Dockerfile创建tomcat镜像
1.相关文件准备
- [root@docker tomcat]# ls
- apache-tomcat-9.0.17 Dockerfile jdk1.8.0_201
Dockerfile文件内容
- FROM centos
-
- MAINTAINER syztoo
- LABEL version="1.0"
- ADD jdk1.8.0_201 /usr/local/jdk1.8
- ADD apache-tomcat-9.0.17 /usr/local/tomcat
-
- ENV JAVA_HOME /usr/local/jdk1.8
- ENV CATALINA_HOME /usr/local/tomcat
- ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
-
- EXPOSE 8080
-
- CMD ["/usr/local/tomcat/bin/catalina.sh","run"]
- FROM 指定基础镜像
- MAINTAINER 指定作者
- LABEL 指定标签信息
- USER 设置容器运行时的用户
- RUN 运行制定命令 \
- && 支持换行
- ADD 添加文件到镜像中
- ENV 设置环境变量
- VOLUME 设置文件挂载
- EXPOSE 指定容器运行时开放的端口
- CMD 设置容器运行时启动的命令
2.构建镜像
[root@docker tomcat]# docker build -t centos_tomcat .
3.查看并运行
- [root@docker tomcat]# docker images
- REPOSITORY TAG IMAGE ID CREATED SIZE
- centos_tomcat latest 69eff99fb3ab 30 minutes ago 614MB
-
- [root@docker tomcat]# docker run --name Mytomcat -d -p 8080:8080 centos_tomcat
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。