Docker笔记1-基本概念
架构
- 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
- 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
- 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
Docker使用客户端-服务器(C/S)架构模式,使用远程API来管理和创建Docker容器
-
Docker主机:一个物理或者虚拟的机器用于执行Docker守护进程和容器
-
Docker Registry:Docker仓库用来保存镜像,可以理解为代码控制中的代码仓库
一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。
通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。 -
Docker Machine:是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。
镜像
镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。
镜像加载原理
unionfs
unionfs:联合文件系统,是一种分层、轻量级且高性能的文件系统,支持对文件系统的修改作为一次提交来一层层叠加,同时可以将不同目录挂载到同一个虚拟文件系统下
union文件系统是Docker镜像的基础。镜像通过分层来继承,基于基础镜像制作各种具体的应用镜像
镜像加载原理
bootfs (boot fie system)主要包含bootloader和kernel,bootloader主要是引导加载kernel,LInux刚启动时会加载bootfs文件系统,在Docker镜像的最底层是bootfs。这一层与我们典型的Linux/Uni系统是一样的,包含boot加载器和内核。当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs。
rootfs(root file system),在bootfs之上。包含的就是典型Linux系统中的/dev,/proc,/bin,/etc等标准目录和文件。rootfs就是各种不同的操作系统发行版,比如Ubuntu,Centos等等。
镜像常用命令
直接输入docker命令查看Docker客户端的所有命令选项
通过docker command --help深入了解指定的Docker命令的用法
常用的:
docker pull ubuntu //拉取镜像
docker image //查看本地的镜像
docker rmi -f 镜像id //删除镜像
docker rmi -f $(docker images -aq) //删除全部镜像
容器常用命令
运行容器
docker run [可选参数] 镜像id //用镜像新建容器启动
可选参数说明:
- –name 指定容器名称
- -d 后台方式运行
- -it 使用交互方式运行,进入容器内查看
- -p 指定容器的端口 -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口 (常用)
-p 容器端口(没有对外开放端口)
端口 - -P 随机指定端口
docker run -it ubuntu /bin/bash //启动容器例子
//-i表示交互式操作,-t表示终端,镜像ubuntu后的是命令,交互式shell
查看容器
docker ps [可选参数]
可选参数说明:
- -a: 代表查看全部的容器,包括没有运行
- -q: 只查看容器的标识
- -f: 根据条件过滤显示的内容
- –format: 指定返回值的模板文件
- -l: 显示最近创建的容器
- -n: 列出最近创建的n个容器
- –no-trunc: 不截断输出
- -s: 显示总的文件大小
启动和停止容器
docker start 容器id //启动容器
docker restart 容器id //重启动容器
docker stop 容器id //停止正在运行的容器
docker kill 容器id //强制停止容器
删除和退出容器
docker rm 容器id //删除容器(删除前需停止容器运行,除非强制删除)
docker rm -f $(docker ps -aq) //删除所有容器
docker ps -a -q | xargs docker rm //删除所有容器
exit //直接退出
Ctrl + P + Q //容器不停止退出
其他容器命令
查看日志
docker logs [可选参数] 容器id
可选参数说明:
- -t 显示日志
- -f 滚动查看
- –tail number 显示的日志条数
查看进程信息
docker top 容器id