Docker基础知识小结

--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)

你可能感兴趣的:(Docker)