思考:
1、docker 镜像本质是什么?
2、docker中centos镜像为什么只有200M,而一个centos操作系统的ios文件几个G。
3、docker中tomcat镜像为什么有500M,而一个tomcat安装包只有70多M。
1.操作系统组成部分
docker镜像是由特殊的文件系统叠加而成
最低端是bootfs,并使用宿主机的bootfs
第二层是root文件系统rootfs,称为base image
然后再往上可以叠加其他的镜像文件
1、容器转为镜像
docker commit 容器id 镜像名称:版本号
压缩成压缩文件
docker save -o 压缩文件名称 镜像名称:版本号
还原
docker load -i 压缩文件名称
目录挂载的不生效
4.dockerfiledockerfile 是一个文本文件
包含了一条条指令
每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像
包含了Dockerfile 关键字,都是大写的。
5案例 案例1需求自定义centos7镜像。要求:1、默认登录路径为/usr;
2、可以使用vim命令
实现步骤
(1)定义一个父镜像:FROM centos:7 (2)定义作者信息 MAINTAINER tcs (3)执行安装vim命令:run yum install -y vim (4)设置默认工作路径:WORKDIR /usr (5)定义容器启动执行的命令:CMD /bin/bash (6)通过dockfile构建镜像:docker bulid -f dockerfile文件路径 -t 镜像名称:版本
实际步骤
mkdir docker-files vim centos-dockerfile
写入:
FROM centos:7 MAINTAINER tcs run yum install -y vim WORKDIR /usr CMD /bin/bash
WQ保存退出。
docker build -f ./centos_dockerfile -t tc_centos:1
-t :指定镜像名字和版本
docker run -it --name=c2 tc_centos:1 .
案例2:需求定义一个dockerfile,部署spring boot项目实现步骤:
(1)定义一个父镜像:FROM java:8 (2)定义作者信息 MAINTAINER tcs (3) 将jar包添加到容器:ADD sprintboot.jar app.jar (4) 定义容器启动执行的命令:CMD java -jar app.jar (5)通过dockfile构建镜像:docker bulid -f dockerfile文件路径 -t 镜像名称:版本
准备工作
localhot:8080/hello 打包sprintboot 项目,会生成一个架包。 放入到linux服务器。 cd ~ 到目录看到架包
实际步骤
mv hello.jar ./docker-files cd docke-flies vim sprintboot_dockerfile
写入:
FROM java:8 MAINTAINER tcs ADD hello.jar app.jar CMD java -jar app.jar
wq
docker bulid -f ./sprintboot_dockerfile -t app .
默认为最新版本
docker run -id app
端口映射
docker run -id -p 9000:8080 app
docker ps -a查看一下
访问测试
宿主机ip:9000/hello



