Docker使用复习(11.3)

Docker使用复习

作用

只需要一次配置好环境,可以在别的机子上一键部署

Docker与传统虚拟机技术的区别

  • 传统虚拟机技术是虚拟出一套硬件,在其上运行一个完整的操作系统,再在系统上运行所需的应用进程

  • 容器内的应用进程直接运行在宿主的内核,容器没有自己的内核,没有进行硬件虚拟,相较虚拟技术更为轻便

  • 每个容器相互隔离,每个容器有自己的文件系统,容器之间进程不会相互影响

Docker三要素

镜像、仓库、容器

镜像:模版

容器:实例,docker利用容器运行一个或一组应用

每个容器类似简易版的linux系统和在其上运行的应用程序

仓库:存放镜像的位置

Docker最最常用命令

  • docker images -a:列出本地所有的镜像(含中间映像层)

  • docker pull 镜像名:TAG:下载指定TAG的镜像,不加TAG默认为latest

  • docker rmi -f 镜像名:强制删除

  • docker run -d 镜像名:后台运行容器,并返回容器id,即启动守护式容器

  • docker run -it 镜像名:以交互模式运行容器,为容器重新分配一个伪输入终端

  • docker ps:列出当前所有正在运行的容器

  • exit:容器停止退出

  • docker start 容器名:启动容器

  • docker stop 容器名:停止容器,类似于电脑关机

  • docker kill 容器名:强制停止,类似于电脑拔电源关机

  • docker rm -f 容器名:停止并删除容器

  • docker top 容器名:查看容器内的进程

UnionFS(联合文件系统)

分层,轻量级,高性能,将不同目录挂在到同一个虚拟文件系统

UnionFS是docker镜像的基础,可以通过分层来进行继承

一次同时加载多个文件系统,外面看起来是一个文件系统,联合加载把各层文件系统叠加起来,最终的文件系统包含所有底层的文件和目录

镜像的特点

docker镜像都是只读的,容器启动,一个新的可写层被加载到镜像的顶部

新的可写层叫容器层,下层为镜像层

分层镜像的优点

共享资源

多个镜像都是从相同的base镜像构建而来,宿主机上只需要保存一份base镜像,内存中也只需要加载一份base镜像,镜像的每一层都可以共享

容器数据卷

容器删除后,数据也删除,所以需要用卷保存数据

持久化和数据共享

本质为目录或文件,存在于一个或多个文件中

由docker挂载到容器中,但是不属于联合文件系统

特点
  • 数据卷可以在容器之间共享

  • 卷中的修改可以直接生效

  • 数据卷中的修改不会包含在镜像的更新中

  • 数据卷的生命周期一直持续到没有容器使用它

添加方式(直接命令添加)

docker run -it -v /宿主机绝对路径:/容器内目录:ro 镜像名 .:将宿主机的目录和容器内目录绑定,之后对宿主机或容器内相应文件夹的内容添加和修改就是同步的了。容器每次启动后会将数据同步。添加:ro时表示是只读模式,宿主机可以添加和修改文件,但是容器内不可以。

docker inspect 容器名:查看数据卷是否挂载成功,其中Volumes里面有绑定的目录

相关推荐
头发还在的女程序员3 小时前
医院陪诊管理系统怎么选择?——2026 年选型避坑与架构参考
java·开发语言·陪诊系统·陪诊app·医院陪诊陪护
CodeStats4 小时前
【Spring事务】Spring事务注解 @Transactional 完整体系:从 MySQL 隔离级别到 MyBatis 原理详解
java·spring·mybatis·事务·transactional
我命由我123454 小时前
Android 开发问题:为 PDFView 设置一个带有黑色边框的背景 drawable,但边框没有生效
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
暖和_白开水6 小时前
数据分析agent(十三_3):docker mysql容器镜像服务的异常错误
mysql·docker·容器
都叫我大帅哥6 小时前
从Python到Java:为什么企业级Agent最终会选择Java?
java·ai编程
wanderist.7 小时前
Lambda表达式在算法竞赛中的应用
java·开发语言·算法
爱小黄8 小时前
使用docker搭建集群-使用 Docker 搭建 KingbaseES 集群
运维·docker·容器
腻害兔8 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:IM 即时通讯模块,一个被低估的「全功能聊天系统」
java·前端·vue.js·产品经理·ai编程
心念枕惊8 小时前
.NET CORE 授权进阶-角色、策略与动态权限实现
java·前端·.netcore
余—笙9 小时前
Docker安装rabbitmq并安装延迟队列插件
docker·容器·rabbitmq