当前位置: 首页 > news >正文

docker镜像和容器(二)

在开始这篇文章之前,有几个需要了解的概念

docker镜像是什么

docker镜像是什么(有兴趣可以参考一下这篇知乎的回答) 文章这里引用一个回答

电脑装系统的时候,需要一张盘,我们称其为镜像,镜像是一个固定的文件,这次读盘和下次读盘内容是一样的。

但有些开发者会把这个镜像安装到电脑上,再在这个电脑上删删改改,再重新打包一个镜像刻盘,固化出一个镜像来,这就是镜像打包。

镜像 => 修改打包 => 镜像 => 修改打包 => 镜像

如国内以前泛滥的盗版XP系统,从微软官方镜像出发,添加小工具,系统设置修改优化,加主题,造出番茄花园,雨林木风,深度之类的盗版安装碟。

镜像装到电脑后,这个电脑就是个容器,里面包含使用者的数据和设置。从玩盗版系统到玩 docker,区别只是电脑从实体变成虚拟机罢了。

Docker 上虚拟机被设计得很廉价,一台物理机上可以开很多虚拟机。廉价到可以为每一个软件专开一个虚拟机,像银行的ATM机器,虽是Windows系统的电脑,但终其一生只跑一个程序只显示一个界面。

虚拟机的廉价,加上镜像里又打包好了所需的软件,导致了大家想装某个软件的时候,可以直接开个新虚拟机,然后找这个软件的 Docker 镜像,啪一下装上去跑起来。

比起把软件往一个现成系统上装,要省事千倍,尤其是装那些需要编译,系统内核兼容,各种库依赖,缺少帮助文档的开源软件。

所以 Docker 流行了起来。

docker容器是什么

docker容器是什么

容器技术和虚拟机技术有一定区别的,虚拟机中操作系统是一个很重而且很笨的程序,没有办法划分出过多的虚拟机,可是我们部署的是应用程序,要用的也是应用程序而不是操作系统。这时候容器技术就发挥了作用(详细可以参考上述文章),与虚拟机通过操作系统实现隔离不同,容器技术只隔离应用程序的运行时环境但容器之间可以共享同一个操作系统,这里的运行时环境指的是程序运行依赖的各种库以及配置。容器技术为打包服务栈提供了一种更加高效的方式。 这里我们介绍的docker便是容器技术。

docker的容器使用

Docker 客户端是与 Docker 守护进程(Docker Daemon)交互的命令行工具。

docker 客户端非常简单,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。

可以看到如下图所展示的内容

通过下面的代码就可以更深入的了解指定的 Docker 命令使用方法。

docker (指令) --help
docker run启动一个新的容器并运行命令docker run -d ubuntu
docker ps列出当前正在运行的容器docker ps
docker ps -a列出所有容器(包括已停止的容器)docker ps -a
docker build使用 Dockerfile 构建镜像docker build -t my-image .
docker images列出本地存储的所有镜像docker images
docker pull从 Docker 仓库拉取镜像docker pull ubuntu
docker push将镜像推送到 Docker 仓库docker push my-image
docker exec在运行的容器中执行命令docker exec -it container_name bash
docker stop停止一个或多个容器docker stop container_name
docker start启动已停止的容器docker start container_name
docker restart重启一个容器docker restart container_name
docker rm删除一个或多个容器docker rm container_name
docker rmi删除一个或多个镜像docker rmi my-image
docker logs查看容器的日志docker logs container_name
docker inspect获取容器或镜像的详细信息docker inspect container_name
docker exec -it进入容器的交互式终端docker exec -it container_name /bin/bash
docker network ls列出所有 Docker 网络docker network ls
docker volume ls列出所有 Docker 卷docker volume ls
docker-compose up启动多容器应用(从 docker-compose.yml 文件)docker-compose up
docker-compose down停止并删除由 docker-compose 启动的容器、网络等docker-compose down
docker info显示 Docker 系统的详细信息docker info
docker version显示 Docker 客户端和守护进程的版本信息docker version
docker stats显示容器的实时资源使用情况docker stats
docker login登录 Docker 仓库docker login
docker logout登出 Docker 仓库docker logout

  • -d:后台运行容器
  • -it:以交互式终端运行容器
  • -t:为镜像指定标签

我们可以通过以下指令来列出docker中存在的容器

docker ps -a

-a表示同时列出未运行的容器

我们可以通过

docker start 容器id

 来启动对应的容器,这里注意run和start的区别, run是重新建立一个容器,而start仅仅只是启动一个容器

docker镜像的基本使用

当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub(docker hub网站) 公共镜像源下载。

我们可以使用指令

docker images

 来获取我们当前系统拥有哪些镜像

  • REPOSITORY:表示镜像的仓库源

  • TAG:镜像的标签

  • IMAGE ID:镜像ID

  • CREATED:镜像创建时间

  • SIZE:镜像大小

我们想获取新镜像的时候

docker pull 镜像名

 然后docker就会自动在docker hub(默认)里面进行下载

镜像删除使用 docker rmi 命令,比如我们删除 hello-world 镜像:

docker rmi hello-world

当我们从 docker 镜像仓库中下载的镜像不能满足我们的需求时,我们可能会对镜像进行修改,这里就不继续写了 没保存上已经没心情了 docker修改镜像大家有兴趣可以参考一下以下网站


参考网站

  • https://www.runoob.com/docker/docker-image-usage.html
  • https://zhuanlan.zhihu.com/p/187505981
  • https://www.zhihu.com/question/27561972/answer/3071494487

相关文章:

  • 系统农场商城:打造绿色生态的未来购物新体验
  • mac电脑中使用无线诊断.app查看连接的Wi-Fi带宽
  • 【DeepSeek-R1背后的技术】系列十三:归一化方式介绍(BatchNorm, LayerNorm, Instance Norm 和 GroupNorm)
  • 【R语言】Kmeans算法
  • Servlet理论知识详解
  • 由堆栈异常引发的一系列问题启发
  • 计算机视觉 |解锁视频理解三剑客——TimeSformer
  • Spring 中的依赖注入
  • 【Deepseek学习大模型】Roofline计算规则
  • 虚拟机缩放比例问题处理
  • RK3588 mpp视频帧解码
  • PG 中级认证专家考证事项
  • 【大模型】大模型推理能力深度剖析:从通用模型到专业优化
  • 【数据结构】二叉树(门槛极低的系统理解)
  • 一次性内窥镜鲁棒性详解:技术与应用
  • 结构体介绍及内存大小分配问题
  • SonarQube 在持续集成中的作用与应用
  • PDF图形识别:一键框选,快速计数,开启数字化图形处理新时代
  • linux在vim中查找和替换
  • string类在OJ的使用
  • 商务部新闻发言人就美国企图全球禁用中国先进计算芯片发表谈话
  • 凤阳文旅局长回应鼓楼瓦片脱落事件:楼宇是否属于文物?施工经费用在何处?
  • 张永宁任福建宁德市委书记
  • 四大皆空!赛季还没结束,曼城已经吃上“散伙饭”了
  • “南昌航空一号”成功发射,赣江鄱阳湖有了专属卫星守护
  • 三方合作会否受政局变化影响?“中日韩+”智库合作论坛在沪举行