Docker基础命令

何为docker?

docker:开源的容器引擎,基于go语言开发,是一种轻量级的虚拟化技术。

docker与传统虚拟机的区别:

  • 虚拟机

    • 虚拟机在硬件上运行,每个 VM 都包括一个完整的操作系统(OS)、虚拟硬件和应用程序。虚拟机通过 hypervisor(如 VMware、Hyper-V 或 KVM)进行管理和资源隔离。
    • 每个虚拟机都相对独立,拥有自己的内核和系统资源。
  • Docker

    • Docker 是基于容器的技术,容器共享宿主机的操作系统内核,但每个容器运行在独立的用户空间中。通过Linux内核的命名空间(Namespaces)和控制组(cgroups)技术实现资源隔离。
    • 容器更加轻量,因为它们只包含应用程序和库,而不需要整个操作系统。

 Docker与传统虚拟机区别

特性Docker容器虚拟机
启动时间秒级分钟级
大小MBGB
性能接近原生弱于
支持量单机上千个容器几十个

由上图也可以发现,每一个虚拟机都包含完整的操作系统,属于完全虚拟化。而docker包含应用程序和其依赖项,与其他docker容器共享操作系统内核。 在主机操作系统上的用户空间中作为独立的进程运行。

Docker架构

Docker daemon

Docker的守护进程,负责管理镜像,容器,数据卷等。

Client

负责发送docker的操作指令,例如pull,run,push等,与docker daemon进行交互,日常主要通过client来完成镜像和容器的管理。

Images(镜像)

容器的模板,镜像可以继承,主要通过dockerfile来定义。

Container(容器)

镜像运行后的实例,通过镜像来创建,和镜像的关系类似:镜像是类,容器是对象。

Registry(仓库)

镜像仓库,用来存放各种镜像。

镜像的分层存储

操作系统通常被分为用户空间和内核空间,对于Linux 而言,内核启动后,会挂载 root 文件系统为其提供用户空间支持。而 Docker 镜像(Image),就相当于是一个 root 文件系统。

Docker镜像是一个特殊的文件系统,采用的是联合文件系统,分层存储架构,结构如下:

镜像是分层的,是只读的,同时镜像在构建时也会一层层构建,前一层是后一层的基础,每一层构建完后不会再发生变化,当前层的改变不会影响到前一层。只对当前层和后续层可知。

分层存储的一大好处就是:共享资源,一些公有层可以复用。比如有两个软件A和B,他们都是基于Base这个基础镜像的,那么基础镜像Base只需要保存一份即可,而无需重复下载。

当我们通过镜像启动一个容器时,会在改镜像的镜像层上面添加一个容器层,容器层是可写的,采用的是Copy-ON-Write策略,即写时复制,

写时复制

那什么是写诗复制呢,对一个镜像来说,它可以构建出多个容器,每个容器要想更改某个文件的话,会先从镜像层中复制一份到自己的容器层,对容器层中的该文件进行修改,而不影响镜像层中的文件,当我们退出了这个容器,那我们的修改也就失效了,再用镜像构建其他容器时,该文件还是未被修改的样子,这也是符合镜像层只读的特点的。

容器层的修改只对当前容器可见,不会影响到镜像层。

Docker的安装

安装不在赘述,参考华为源镜像站:https://mirrors.huaweicloud.com/mirrorDetail/5ea14d84b58d16ef329c5c13?mirrorName=docker-ce&catalog=docker

Docker基础命令

Docker的命令大致分为两类,一类是镜像方面的命令,一类是容器方面的命令。

镜像方面的命令
功能命令
搜索镜像docker search 镜像名
拉取镜像dockers pull 镜像名:标签
查看镜像docker image ls
查看镜像详细信息docker inspect 镜像名:标签
导出镜像docker save -o 保存名 镜像名:标签
导入镜像docker load -i 名字
删除镜像docker rmi 镜像名:标签
容器方面的命令
功能命令注意
启动容器通过镜像启动新的容器:docker run 镜像名/id新启动容器

启动暂停的容器:docker start 容器id

启动暂停的容器
停止容器docker stop 容器id-f 强制关闭
进入容器docker exec -it 容器id /bin/bash开启新终端,退出后不会导致容器停止
docker attach 容器id进入容器正在执行的终端,退出后会导致容器停止
导出容器docker export -o 导出名 容器id
导入容器cat 导出的名字 | docker import - 镜像名一定要注意import的-以镜像的形式存在
查看容器日志docker logs 容器id
删除容器docker rm 容器id
其他常用命令
命令功能
docker ps 显示正在运行的容器
docker ps -a显示所有容器(包括已经停止的)
docker ps -qa只显示所有容器id
docker cp 容器id:文件绝对路径  宿主机绝对路径将文件从容器中复制出来(复制进去路径翻反过来即可)
docker history 镜像名或id查看镜像的构建历史
docker container prune删除所有停止的容器==慎用!
docker system prune -a更要慎用!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值