docker 资源

docker 镜像

什么是docker镜像
  • docker 镜像(Image)——> 只读的“系统镜像”。

  • 就像你下载的 Ubuntu 20.04 ISO 文件,或者嵌入式开发用的 固件烧录文件(.bin)。它是一个静态的、只读的模板,里面包含了一套完整的文件系统、工具链、环境变量和应用程序。

  • 镜像由一层层只读文件系统叠加而成(类似 git 的提交记录)。比如基础层是 Ubuntu 20.04,上面一层是安装的交叉编译器,再上面一层是你的应用代码。每一层都可以被复用,节省存储空间。

常见docker镜像命令

1.查看所有本地的主机上的镜像

docker images

注:
REPOSITORY 表示镜像的仓库源
TAG 表示镜像的标签
IMAGE ID 表示镜像的ID
CREATED 表示镜像创建的时间
SIZE 表示镜像的大小

  1. 搜索镜像,要接外网
docker search 镜像名
  1. 下载镜像,如果没加版本,就是下载最新版
docker pull 镜像名/镜像名:版本 

注:这个是正式的方法,但是可能会受网速影响,下载失败;遇到此类情况可以使用下列命令试试。

docker pull 镜像名称 -–registry-mirror=国内镜像源地址
  1. 删除镜像
docker rmi -f 镜像ID

docker 容器

什么是docker容器
  • docker 容器(Container)——> 可读写的“运行实例”。

  • 当你把 ISO 文件刻录到 U 盘并启动电脑,电脑就变成了一个“运行的系统”。容器就是 镜像的一个运行实例,它在镜像之上加了一个可读写层(类似你保存文件到 U 盘),并且拥有独立的进程、网络和文件系统隔离。

  • 容器可以启动、停止、删除、暂停。当你删除容器时,它的可读写层也会被删除(除非你通过 docker commit 保存为新镜像)。

  • 一个镜像可以启动多个容器,就像同一个 ISO 文件可以刻录到多个 U 盘,每个 U 盘运行后的状态可以不同(比如你在一个 U 盘里存了文件,另一个没存)。

常见docker容器命令

有了镜像才可以创建容器。

  1. 查看帮助命令。
docker version  #显示dokcer版本信息

docker info  #显示docker系统信息,包括镜像和容器的数量

docker help  #帮助
  1. 下载镜像 更改镜像名。
#正常来说是可以直接:docker pull 镜像名[:tag],就可以下载了,但是因为这样子下载是访问官网进行下载,由于官方是国外的,所有基本上下载不成功。

#目前下载方法是采用如下命令:

 docker pull docker.xuanyuan.me/mysql

#这里的docker.xuanyuan.me是连接的网址,也就是资源,mysql才是要下载的镜像
#但是这里存在一个问题,就是下载成功的镜像是docker.xuanyuan.me/mysql的命名方式,这里要改名。

#更改镜像名
#这个方法实际上是生成一个新的镜像,然后再删除原本不想要的命名方式的镜像即可

docker tag 旧镜像名 新镜像名     #生成新的一个镜像

docker rmi 旧镜像名             #删除不想要的镜像

  1. 新建容器和启动容器。
docker run [可选参数] images
#参数说明
--name="name"      #容器名字:用来区分容器
-d                 #后台方式运行,相当于:nohup
-it                #使用交互式进行:进入容器查看内容
-p
  1. 启动并进入容器。
docker run -it centos /bin/bash   #每次都会生成一个docker容器
docker ps -a         #查看容器数量
  1. 从容器中退回到主机中,有两种方法。
exit        #容器直接停止并退出
ctrl+P+Q    #容器不停止并退出,这个方法测试不行
  1. 列出所有运行的容器。
docker ps      #列出当前正在运行的容器
# 命令参数可选项
-a             #列出当前正在运行的容器和历史运行过的容器
-n=?           #显示最近创建的容器(可以指定显示几条,比如-n=1)
-q             #只显示容器的编号
  1. 后台启动容器。
#这个需要有一个前台进程,不然不会实现
docker run -d 镜像名
  1. 删除容器。
docker rm 容器id                #删除单个容器,不带强制,不能删除正在运行的容器片
  1. 删除运行的容器。
docker rm -f 容器id              #强制删除单个容器,带强制,可以删除正在运行的容器
docker rm -f $(docker ps -aq)     #删除全部容器
docker ps -a -q|xargs docker rm   #删除所有容器
  1. 启动和停止容器的操作。
docker start 容器id     #启动容器
docker restart 容器id   #重启容器
docker stop 容器id      #停止当前正在运行的容器
docker kill 容器id      #强制停止当前容器
  1. 查看日志。
docker logs -tf --tail 容器id
  1. 查看容器中进程的信息。
docker top 镜像id
  1. 查看镜像的原数据。
docker inspect 容器id
  1. 进入当前正在进行的容器。
#方法一:docker exec 进入容器后开启一个新的终端,可以在里面操作,常用的方法
docker exec -it 容器id /bin/bash 
ps -ef    #查看进程

#方法二:docker attach 进入容器正在执行的终端,不会启动新的进程
docker attach 容器id
  1. 从容器内拷贝文件到主机上,从容器里面拷贝到linux的主机目录
docker cp 容器id:容器内路径 目的主机的路径

常见误区澄清

  • 镜像不是虚拟机:镜像不包含完整的操作系统内核,它只包含用户空间的文件和依赖,所有容器共享宿主机的内核。

  • 容器不是轻量级虚拟机:容器本质是宿主机上的隔离进程,只是通过 Namespace 和 Cgroups 实现了资源限制和隔离。

  • 镜像分层的好处:如果你有多个容器基于同一个镜像,它们共享底层的只读层,只有可写层是独立的,因此启动极快、占用磁盘小。

总结:

  • 镜像 = 静态模板(只读,类似 ISO 或固件文件)。

  • 容器 = 动态实例(可读写,类似运行中的开发板)。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐