day03-20200715
p15.docker容器命令(下)
以守护进程的形式启动
【docker run -d 容器名】后台运行
启动了后又关闭了,与前台没有交互,立刻就kill了。前台进程的方式运行
【docker logs -f -t --tail 数字 容器id】查看日志容器
-t:加入时间戳
-f:跟随最新的日志打印
--tail:数字 显示最后多少条
【docker run -d centos /bin/sh -c "while true;do echo hello fengyarong;sleep 2;done"】
后台运行一个容器,并让他持续返回shell脚本输出,保证后台进程不会自杀。
【docker logs -f -t --tail 10 容器id】
查看具体的日志输出,实时监控
【docker top 容器id】查看容器内的进程
容器就是一个简易版的Linux环境,所以可以执行linux的命令。
【docker inspect 容器id】查看容器内的详细信息
docker镜像是一层套一层的。
【docker attach 容器id】进入正在运行的容器,进行交互的界面。进去以后才可以操作。
【docker exec 容器id 执行命令】不进入正在运行的容器,但可以对容器进行操作,直接输出你想要的结果。
【docker exec -it 容器id 执行命令】与【docker attach 容器id】功能相同。
相对于比attach的功能更加的强大。
【docker cp 容器id:路径 宿主机的路径】容器内的数据拷贝到宿主机上面来。
【docker cp 容器id:/tmp /home/】
p16.docker镜像原理
镜像就是轻量级、可执行的独立软件包,用来打包软件运行环境和运行配置而开发的软件。
镜像就是联合文件系统(unionfs),分层、高性能的文件系统。它支持对文件系统的修改作为一次提交来一层层叠加。镜像可以通过分层来进行继承,基于镜像。
镜像的最低层 bootfs文件系统(内核),rootfs.
为什么tomcat镜像那么大?
tomcat运行起来需要什么?
centos系统、jdk8、tomcat。
表面看tomcat不大,是因为包含了centos、jdk8及自身。所以才可以直接运行。
为什么docker采用分层,共享资源。大家共用一份base镜像。
镜像的特点是只读,最外面的是容器层,内部才是镜像层。
p17.docker镜像commit
【docker commit -m= 描述信息 -a= 作者 镜像id 命名位置】提交容器使其成为副本,自定义镜像。
【docker run -p docker访问的对外暴漏的端口:内部的实体端口号 命名空间/镜像标签:镜像标签】交互式容器。
-p:指定端口
-P:随机生成端口
-d:后台启动
在运行tomcat的时候发现外部不可以访问(报HTTP Status 404 – 未找到),进到容器内部发现里面有两个webapps,一个是weapps文件夹里面为空,还有一个是webapps.disk里面才是tomcat的真实内容。
可以把webapps.disk内部的文件拷贝到webapps下面。然后将这个新的镜像提交到本地镜像仓库。
【docker commit -m "mytomcat" -a "fyr" f7ad369c9617 mytomcat:8.5.51】
启动运行tomcat就可以访问了
【docker run -p 8888:8080 mytomcat:8.5.51】