Docker学习笔记
Docker是开源应用容器引擎,让开发者可以将应用程序和所有依赖打包到一个轻量级可移植容器中。然后在任何支持Docker的环境中运行。
Docker核心概念:容器、镜像、Dockerfile和镜像仓库。
容器
一种轻量级的虚拟化技术,共享操作系统内核但保持独立的运行环境,比传统虚拟机更快速且占用资源少。
容器是Docker技术的核心运行单元,是一种轻量级的虚拟化技术实现方式。与传统虚拟机相比,容器不需要模拟完整的硬件环境,也不需运行独立的操作系统内核。容器在运行时与其他容器和宿住机共享操作系统内核。容器之间相互独立,每个容器都拥有自己的文件系统、网络和进程空间,应用之间不会互相干扰。
镜像
镜像是用于创建容器的模版,包含运行应用所需的代码、库和配置文件。
镜像是创建Docker容器的基础,用户可直接用现成镜像如从Docker Hub下载。镜像采用分层存储结构,每一层代表一个修改步骤。镜像中不包含任何的动态数据,构建后内容不再变动。
Dockerfile
一个写明了如何一步步构建镜像的文本文件,通过执行其中指令,Docker能自动生成镜像。
Dockerfile是用于定义镜像构建过程的脚本文件,由一系列指令组成,比如FROM指定基础镜像,RUN执行命令,COPY复制文件等,Docker根据Dockerfile的指令自动构建镜像。
镜像仓库
集中存储和分发镜像的地方。
Docker Hub是最常用的公共仓库,由官网和社区维护的镜像。可以基于镜像构建镜像。我们也可以搭建自己私有镜像库。
以上4个共同构成Docker的工作流程:
1、开发者编写Dockerfile定义环境,构建Docker镜像;
2、构建好的镜像推送到镜像仓库;
3、在支持Docker等机器上拉取镜像并运行容器。
虚拟机:通过Hypervisor软件模拟完整的硬件环境,管理每个虚拟机中操作系统的运行。每个虚拟机都需要独立的操作系统、应用程序和必要的依赖文件等,也因此启动速度较慢且占用大量内存和存储。
镜像使用
拉取镜像
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
- OPTIONS(可选):选项参数。
- –all-tags,-a:下载指定镜像的所有标签。
- –disable-content-trust:跳过镜像签名验证。
- NAME:镜像名称,通常含注册表地址如docker.io/library.ubuntu,不带注册表地址默认从Docker Hub进行拉取。
- TAG(可选):镜像标签,默认为latest。
- DIGEST(可选):镜像的SHA256摘要。
例:下载最新nginx镜像docker pull nginx,下载某版本的nginx镜像docker pull nginx:1.0.0
镜像标签
用来标识和管理镜像版本的工具,每个镜像可以多个标签,可用于区分不同版本或不同环境。使用docker tag可以为镜像创建标签。
将本地nginx镜像标记为my-nginx:v1。
docker tag nginx:latest my-nginx:v1
推送镜像
docker push
查看镜像
查看所有镜像列表:docker images nginx
查看指定镜像详细信息:docker inspect nginx
查看镜像构建的历史:docker history nginx
查找镜像
docker search
删除镜像
1、删除单个镜像
docker rmi 镜像ID|镜像名称
查找镜像ID:docker images
2、清除镜像缓存
docker image prune
不加标签时会只删除悬空镜像(没有标签且不被任何镜像引用的中间层)。加上-a参数会删除所有未被容器或镜像引用的镜像,包括构建缓存和旧版本镜像。
清理完成后可用docker system df查看磁盘使用情况。