dokcer通俗易懂教程_02
docker 镜像(Image)——> 只读的“系统镜像”。就像你下载的 Ubuntu 20.04 ISO 文件,或者嵌入式开发用的 固件烧录文件(.bin)。它是一个静态的、只读的模板,里面包含了一套完整的文件系统、工具链、环境变量和应用程序。镜像由一层层只读文件系统叠加而成(类似 git 的提交记录)。比如基础层是 Ubuntu 20.04,上面一层是安装的交叉编译器,再上面一层是你的应用代码
docker 资源
- dokcer是基于Go语言开发的,开源项目。
- 官网:https://www.docker.com/
- 文档地址:https://docs.docker.com/
- docker镜像仓库地址:https://hub.docker.com/
docker 镜像
什么是docker镜像
-
docker 镜像(Image)——> 只读的“系统镜像”。
-
就像你下载的 Ubuntu 20.04 ISO 文件,或者嵌入式开发用的 固件烧录文件(.bin)。它是一个静态的、只读的模板,里面包含了一套完整的文件系统、工具链、环境变量和应用程序。
-
镜像由一层层只读文件系统叠加而成(类似 git 的提交记录)。比如基础层是 Ubuntu 20.04,上面一层是安装的交叉编译器,再上面一层是你的应用代码。每一层都可以被复用,节省存储空间。
常见docker镜像命令
1.查看所有本地的主机上的镜像
docker images
注:
REPOSITORY 表示镜像的仓库源
TAG 表示镜像的标签
IMAGE ID 表示镜像的ID
CREATED 表示镜像创建的时间
SIZE 表示镜像的大小
- 搜索镜像,要接外网
docker search 镜像名
- 下载镜像,如果没加版本,就是下载最新版
docker pull 镜像名/镜像名:版本
注:这个是正式的方法,但是可能会受网速影响,下载失败;遇到此类情况可以使用下列命令试试。
docker pull 镜像名称 -–registry-mirror=国内镜像源地址
- 删除镜像
docker rmi -f 镜像ID
docker 容器
什么是docker容器
-
docker 容器(Container)——> 可读写的“运行实例”。
-
当你把 ISO 文件刻录到 U 盘并启动电脑,电脑就变成了一个“运行的系统”。容器就是 镜像的一个运行实例,它在镜像之上加了一个可读写层(类似你保存文件到 U 盘),并且拥有独立的进程、网络和文件系统隔离。
-
容器可以启动、停止、删除、暂停。当你删除容器时,它的可读写层也会被删除(除非你通过 docker commit 保存为新镜像)。
-
一个镜像可以启动多个容器,就像同一个 ISO 文件可以刻录到多个 U 盘,每个 U 盘运行后的状态可以不同(比如你在一个 U 盘里存了文件,另一个没存)。
常见docker容器命令
有了镜像才可以创建容器。
- 查看帮助命令。
docker version #显示dokcer版本信息
docker info #显示docker系统信息,包括镜像和容器的数量
docker help #帮助
- 下载镜像 更改镜像名。
#正常来说是可以直接:docker pull 镜像名[:tag],就可以下载了,但是因为这样子下载是访问官网进行下载,由于官方是国外的,所有基本上下载不成功。
#目前下载方法是采用如下命令:
docker pull docker.xuanyuan.me/mysql
#这里的docker.xuanyuan.me是连接的网址,也就是资源,mysql才是要下载的镜像
#但是这里存在一个问题,就是下载成功的镜像是docker.xuanyuan.me/mysql的命名方式,这里要改名。
#更改镜像名
#这个方法实际上是生成一个新的镜像,然后再删除原本不想要的命名方式的镜像即可
docker tag 旧镜像名 新镜像名 #生成新的一个镜像
docker rmi 旧镜像名 #删除不想要的镜像
- 新建容器和启动容器。
docker run [可选参数] images
#参数说明
--name="name" #容器名字:用来区分容器
-d #后台方式运行,相当于:nohup
-it #使用交互式进行:进入容器查看内容
-p
- 启动并进入容器。
docker run -it centos /bin/bash #每次都会生成一个docker容器
docker ps -a #查看容器数量
- 从容器中退回到主机中,有两种方法。
exit #容器直接停止并退出
ctrl+P+Q #容器不停止并退出,这个方法测试不行
- 列出所有运行的容器。
docker ps #列出当前正在运行的容器
# 命令参数可选项
-a #列出当前正在运行的容器和历史运行过的容器
-n=? #显示最近创建的容器(可以指定显示几条,比如-n=1)
-q #只显示容器的编号
- 后台启动容器。
#这个需要有一个前台进程,不然不会实现
docker run -d 镜像名
- 删除容器。
docker rm 容器id #删除单个容器,不带强制,不能删除正在运行的容器片
- 删除运行的容器。
docker rm -f 容器id #强制删除单个容器,带强制,可以删除正在运行的容器
docker rm -f $(docker ps -aq) #删除全部容器
docker ps -a -q|xargs docker rm #删除所有容器
- 启动和停止容器的操作。
docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止当前容器
- 查看日志。
docker logs -tf --tail 容器id
- 查看容器中进程的信息。
docker top 镜像id
- 查看镜像的原数据。
docker inspect 容器id
- 进入当前正在进行的容器。
#方法一:docker exec 进入容器后开启一个新的终端,可以在里面操作,常用的方法
docker exec -it 容器id /bin/bash
ps -ef #查看进程
#方法二:docker attach 进入容器正在执行的终端,不会启动新的进程
docker attach 容器id
- 从容器内拷贝文件到主机上,从容器里面拷贝到linux的主机目录
docker cp 容器id:容器内路径 目的主机的路径
常见误区澄清
-
镜像不是虚拟机:镜像不包含完整的操作系统内核,它只包含用户空间的文件和依赖,所有容器共享宿主机的内核。
-
容器不是轻量级虚拟机:容器本质是宿主机上的隔离进程,只是通过 Namespace 和 Cgroups 实现了资源限制和隔离。
-
镜像分层的好处:如果你有多个容器基于同一个镜像,它们共享底层的只读层,只有可写层是独立的,因此启动极快、占用磁盘小。
总结:
-
镜像 = 静态模板(只读,类似 ISO 或固件文件)。
-
容器 = 动态实例(可读写,类似运行中的开发板)。
更多推荐
所有评论(0)