一:docker简介
定义
根据官方的定义,Docker是以Docker容器为资源分割和调度的基本单位,封装整个软件运行时环境,为开发者和系统管理员设计的,用于构建、发布和运行分布式应用的平台。
docker解决了什么问题
1. 解决了应用程序本地运行环境与生产运行环境不一致的问题
2. 解决了应用程序资源使用的问题,docker会一开始就为每个程序指定内存分配和CPU分配
3. 让快速扩展、弹性伸缩变得简单
docker技术边界
docker是容器化技术,针对的是应用及应用所依赖的环境做容器化。遵循单一原则,一个容器只运行一个主进程。如果将多个进程都部署在一个容器中,弊端很多。比如更新某个进程的镜像时,其他进程也会被迫重启,如果一个进程出问题导致容器挂了,所有进程都将无法访问。再根据官网提倡的原则而言,容器 = 应用 + 依赖的执行环境。而不是像虚拟机一样,把一堆进程都部署在一起。
docker给我们带来了哪些改变
1. 软件交付方式发生了变化
2. 替代了虚拟机
3. 改变了我们体验软件的模式
4. 降低了企业成本
5. 促进了持续集成、持续部署的发展
6. 促进了微服务的发展
docker和虚拟机的区别
1. vm(虚拟机)与docker(容器)框架,直观上来讲vm多了一层guest OS,同时Hypervisor会对硬件资源进行虚拟化,docker直接使用硬件资源,所以资源利用率相对docker低
2. 服务器虚拟化解决的核心问题是资源调配,而容器解决的核心问题是应用开发、测试和部署。
3. 容器技术严格来说并不是虚拟化,没有客户机操作系统,是共享内核的.
docker基本架构
1. 镜像(Image):Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统
2. 容器(Container):容器是独立运行的一个或一组应用,是镜像运行时的实体
3. 客户端(client):Docker 客户端通过命令行或者其他工具使用 Docker SDK(https://docs.docker.com/develop/sdk/)) 与 Docker 的守护进程通信
4. 主机(host):一个物理或者虚拟的机器用于执行 Docker 守护进程和容器
5. 注册中心(Registry):Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub(https://hub.docker.com)) 提供了庞大的镜像集合供使用。
6. Docker Machine:Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker
二:docker 容器隔离
RootFs
rootfs 是Docker 容器在启动时内部进程可见的文件系统,即Docker容器的根目录。rootfs通常包含一个操作系统运行所需的文件系统,例如可能包含经典的类Unix操作系统中的目录系统,如/dev、/proc、/bin、/etc、/lib、/usr、/tmp及运行Docker容器所需的配置文件、工具等。
Linux Namespace
Namespace是 Linux 内核用来隔离内核资源的方式。Linux实现了六种不同类型的命名空间。每个命名空间的用途是将特定的全局系统资源包装在抽象中,使命名空间中的进程看起来它们具有自己的全局资源独立实例。命名空间的总体目标之一是支持容器的实现。
lsns命令列出系统命名空间
sudo lsns --output-all //列出所有命名空间
lsns --output-all //列出当前用户的命名空间
三:docker 常用命令
启动docker服务端:sudo systemctl start docker。关闭:sudo systemctl stop docker。对于客户端来说,直接使用docker + 参数即可。
Docker 环境信息命令
docker info
docker info : 显示 Docker 系统信息,包括镜像和容器数。
docker info [OPTIONS]
docker version
docker version :显示 Docker 版本信息。
docker version [OPTIONS]
OPTIONS说明:
-f :指定返回值的模板文件。
系统日志信息常用命令
docker events 从服务器获取实时事件
docker events [OPTIONS]
OPTIONS说明:
-f :根据条件过滤事件;
--since :从指定的时间戳后显示所有事件;
--until :流水时间显示到指定的时间为止/第一个终端执行
docker events
//第二个终端操作容器
docker start/stop/restart
//查看第一个终端输出
docker logs : 获取容器的日志
docker logs [OPTIONS] CONTAINER
OPTIONS说明:
-f : 跟踪日志输出
--since :显示某个开始时间的所有日志
-t : 显示时间戳
--tail :仅列出最新N条容器日志docker logs -f mynginx
docker history:查看指定镜像的创建历史。
docker history [OPTIONS] IMAGE
OPTIONS说明:
-H :以可读的格式打印镜像大小和日期,默认为true;
--no-trunc :显示完整的提交记录;
-q :仅列出提交记录IDdocker history mynginx:v1
容器的生命周期管理命令
docker create
创建一个新的容器但不启动它,语法同docker run。
docker run
docker run :创建一个新的容器并运行一个命令
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-d, --detach:后台运行容器并打印容器id
-h, --hostname string:设置主机名
-i, --interactive:保持标准输入设备处于打开状态
-t, --tty:分配一个伪终端设备
-u, --user: 用户名或用户ID (格式: <name|uid>[:<group|gid>])
docker start/stop/restart
docker start :启动一个或多个已经被停止的容器
docker stop :停止一个运行中的容器
docker restart :重启容器docker restart mynginx
docker stop mynginx
docker start myngin
docker kill :杀掉一个运行中的容器
docker kill [OPTIONS] CONTAINER [CONTAINER...] OPTIONS说明: -s :向容器发送一个信号
docker kill -s KILL mynginx
docker kill -s TERM mynginx
如果容器终止时的状态对用户而言很重要,用户可能会想要了解docker kill 和docker stop之间的区别。 docker kill 的行为和标准的kill 命令行程序并不相同。kill 程序的默认工作方式是向指定的进程发送TERM信号(即信号值为15)。这个信号表示程序应该被终止,但是不要强迫程序终止。当这个信号被处理时,大多数程序将执行某种清理工作,但是该程序也可以执行其他操作,包括忽略该信号。而docker kill 对正在运行的程序使用的是KILL信号,这使得该进程没办法处理终止过程。这就意味着一些诸如包含运行进程ID之类的文件可能会残留在文件系统中。根据应该用程序管理状态的能力,如果再次启动容器,这可能会也可能不会造成问题。docker stop 命令则像kill 命令那样工作,发送的是一个TERM型号
由于其中的命令实在太多,我就不一一列举了,大家可以看Docker 命令大全 | 菜鸟教程 这篇。谢谢大家!https://github.com/0voice
标签:容器,--,介绍,OPTIONS,命令,kill,docker,Docker From: https://blog.csdn.net/2301_76446998/article/details/143526271