docker 学习笔记
什么是 docker
docker 是一个应用容器引擎,属于操作系统级的轻量级虚拟化技术,对容器内部的进程进行了多方面的封装隔离。
为什么使用 docker
相对于传统虚拟化技术,docker有着以下优点:
- 高效利用系统资源
- 启动速度快
- 确保应用的环境一致性
- 更易于应用的维护和扩展
基本概念
镜像(image)
docker 镜像是一个特殊的文件系统,提供了容器运行时所需的程序、依赖、资源、配置等文件,不包含任何动态数据。
docker 镜像利用了 linux 的 Union FS技术,被设计为分层存储结构,一个镜像由多个层(layer)组成。
在镜像构建时,层层构建,每一层完成构建后都不再会发生改变,这样做有许多好处:
- 提高了镜像的复用性,制作镜像时可以选择其他镜像作为基础镜像,再添加新的层
- 不同的镜像可能使用了相同的层,镜像存储在本地时,会共用这些层,减少占用空间
容器(container)
容器的实质就是进程以及进程运行时所需的环境。不同容器之间是隔离的,这种隔离体现在文件系统、网络、进程空间等方面。
镜像和容器之间的关系可以理解为:镜像为模板,容器则为模板产生的实例。
使用
镜像
获取镜像
镜像名包括两部分:仓库名:标签
。仓库名又分为两部分:用户名/软件名
,通常用户名可以省略,此时用户名默认为 library,即官方镜像。
将仓库名为 ubuntu,标签为 latest 的镜像从 Docker Hub 下载到本地。
docker pull ubuntu:latest
查看镜像
docker image list // 列出所以镜像
docker image list ubuntu // 列出名为ubuntu的镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 775349758637 2 weeks ago 64.2MB
运行
以 ubuntu 镜像创建容器,并在该容器中执行 bash 程序。
docker run -it ubuntu:latest bash
- -i 启用交互式操作
- -t 为该容器分配一个伪终端
删除镜像
docker image rm ubuntu:latest // 通过仓库名和标签删除镜像
docker image rm 775349758637 // 通过镜像 id 删除镜像
容器
启动容器
新建并启动容器。
docker run -it ubuntu:latest bash
启动已关闭容器。
docker container start 2046cda8e403 // 通过容器 id 启动容器
终止容器
docker container stop 2046cda8e403 // 通过容器 id 终止容器
进入容器
docker attach 2046cda8e403 // 通过 attach 进入正在运行的容器,exit 会导致容器的停止
docker exec -it 2046cda8e403 bash // 通过 exec 进入正在运行的容器,此时 exit 不会导致容器的停止
删除容器
docker container rm 2046cda8e403 // 删除处于终止状态的容器
docker container rm -f 2046cda8e403 // 强制删除处于运行状态的容器,docker 会发送SIGKILL信号给容器
docker container prune // 删除所有处于终止状态的容器