--Docker的概念
基于 Linux 内核的cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。
--特点
一次打包,到处运行
--与虚拟机的区别
传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
--三个基本概念
镜像(Image):一个只读的模板,可以用来创建容器
容器(Container):容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
仓库(Repository):是集中存放镜像文件的场所。
--常用命令
docker build/pull/run 创建/拉取/运行镜像
docker images 查看镜像
docker ps -a 查看容器
docker rm/rmi 删除容器/镜像
docker cp 容器与本地之间的文件互传
docker start/attach/stop 启动/进入/关闭容器
--Dockerfile基本结构
一般的,Dockerfile 分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。
--Dockerfile指令
FROM 告诉 Docker 使用哪个镜像作为基础
MAINTAINER 指定维护者信息
ENV 设置环境变量
WORKDIR 切换目录
USER 使用某个用户运行容器 RUN 在创建中运行,比如安装一个软件包
ADD/COPY 从源系统的文件系统上复制文件到目标容器的文件系统
ENTRYPOINT 配置一个容器使之可执行初始化
EXPOSE 指定端口,使容器内的应用可以通过端口和外界交互
VOLUME 创建一个可以从本地主机或其他容器挂载的挂载点
CMD 指定启动容器时执行的命令
ONBUILD 配置当所创建的镜像作为其它新创建镜像的基础镜像时,所执行的操作指令
docker stop/kill/pause的区别:
docker kill:杀掉一个运行中的容器。命令向所有运行在容器中的进程发送了一个不友好的SIGKILL信号。
docker stop:停止一个运行中的容器。命令会向运行中的容器发送一个SIGTERM的信号,然后停止所有的进程。(优雅的停止) 。
docker pause::暂停容器中所有的进程。
kill是不管容器同不同意,我直接执行kill -9,强行终止;stop的话,首先给容器发送一个TERM信号,让容器做一些退出前必须的保护性、安全性操作,然后让容器自动停止运行,如果在一段时间内,容器还是没有停止,再进行kill -9,强行终止。docker stop和docker kill命令会发送UNIX的信号给运行中的进程,docker pause命令则不一样,它利用了cgroups的特性将运行中的进程空间暂停。具体的内部原理你可以在这里找到:https://www.kernel.org/doc/Doc ... m.txt,但是这种方式的不足之处在于发送一个SIGTSTP信号对于进程来说不够简单易懂,以至于不能够让所有进程暂停。(参考https://www.cnblogs.com/bethal/p/5942369.html)