docker create:创建一个容器
docker start: 启动一个容器
docker run : 创建并运行一个容器
docker pause: 暂停一个容器
docker unpause:恢复一个容器
docker stop:停止一个运行的容器
docker rm : 删除一个处于终止状态的容器
docker kill : 杀死容器进程
docker container prine: 删除所有终止状态容器
docker attach命令
- docker attach命令直接进入已启动的容器的命令终端,不会启动新的进程
- usage:docker attach [OPTIONS] CONTAINER
dcoker exec命令
- docker exec命令是在容器中打开新的终端。
- usage:docker exec [OPTIONS] container command [ARG..]
容器镜像是容器的模板,容器是镜像的运行实例,runtime根据容器镜像创建时间。
容器镜像挂在容器根目录下,是为容器中的应用提供隔离后执行环境的文件系统。
容器镜像采用分层结构:
对于软件开发而言,容器镜像打通了“开发-测试-部署”的流程。
从scratch构建,不依赖其他镜像
最常用的base镜像是各Linux发行版的docker镜像,如ubuntu、centos等。
容器镜像采用分层结构,可分为镜像层和容器层:
容器是由若干只读镜像层和最上面的一个可写容器层构成。分层结构使镜像共享、容器创建,分发非常高效。
UnionFS主要的功能是将多个不同位置的目录联合挂载到同一个目录下。
每一个镜像层都是Linux操作系统文件与目录的一部分,在使用镜像时,docker会将所有的镜像层联合挂载到一个统一的挂载点上,表现为一个完整的Linux操作系统供容器使用。
docker镜像分层结构的实现,借助于UnionFS联合文件系统的能力。
Union File System联合文件系统,是实现Docker镜像的技术基础。它是一种轻量级高性能分层文件系统,支持将文件系统中的修改进行提交和层层叠加,这个特性使得镜像可通过分层实现和继承。同时支持将不同目录挂载到同一个虚拟文件系统下。
创建文件:新文件只能被添加在容器层中。
删除文件:依据容器分层结构由上而下依次查找。找到后,在容器层中记录该删除操作。具体实现是UnionFS会在容器层创建一个"whiteout"文件,将被删除的文件“遮挡起来”。
修改文件:依据容器分层结构由上往下依次查找。找到后,将镜像层中的数据复制到容器层进行修改,修改后的数据保存到容器层中。
读取文件:依据容器分层结构由上往下依次查找。
所有storage driver都支持镜像分层结构和写时复制(CoW)策略。
docker commit命令:可将一个运行中的容器保存为镜像。
1、docker run -d centos /bin/bash #运行一个centos容器中运行/bin/bash
2、docker commit
3、docker history #指令会显示镜像的构建过程,并且按照镜像层的顺序由上至下排列
Dockerfile:文件指令集,描述如何自动创建Docker镜像。
Dockerfile文件中的指令执行后,会创建一个新的镜像层。
Dockerfile文件中的注释以“#”开始。
Dockerfile一般由4部分组成:
bulid context:为镜像构建提供所需的文件或目录。
指令 | 作用 | 命令格式 |
---|---|---|
FROM | 指定base镜像 | FROM : |
MAINTAINER | 注明镜像的作者 | MAINTAINER |
RUN | 运行指定的命令 | RUN |
ADD | 将文件从build context复制到镜像中 | ADD [–chown = :] … |
COPY | 将文件从build context复制到镜像中 | COPY[–chown = :] … |
ENV | 设置环境变量 | ENV |
EXPOSE | 指定容器中的应用监听端口 | EXPOSE [/… ] |
USER | 设置启动容器的用户 | USER [:] |
CMD | 设置在容器启动时运行指定的脚本或命令 | CMD command param1 param2 |
ENTRYPOINT | 指定的是一个可执行的脚本或者程序的路径 | ENTRYPOINT command param1 param2 |
VOLUME | 将文件或目录声明为volume,挂载到容器中 | VOLUME [/data] |
WORKDIR | 设置镜像的当前工作目录 | WORKDIR /path/to/workdir |
如果使用Dockerfile来构建镜像,Dockerfile的第一条有效信息(注释除外)必须是镜像信息,维护者信息紧随其后,而镜像操作指令则在维护者信息之后,因为操作指令的不同,自然会构建出千差万别的镜像来,最后是镜像启动指令,他被用作设置镜像的默认启动命令。
Dockerfile的指令根据作用分为两种:
Dockerfile指令使用注意事项:
Dockerfile在执行过程中,会启动临时容器,然后在临时容器中执行一条指令对容器内容进行修改,再将该日本分区保存为一个新的镜像层,最后删除这个临时容器,若dockefile中有多条指令,则会重复这个过程,直到执行结束。
使用docker build命令构建镜像时,使用–no-cache参数可表面不使用镜像缓存。
格式:
image name = repository:tag
tag一般用于描述镜像版本,若未指定tag,则默认为“latest”
Registry是存放容器镜像的仓库,用户可以进行镜像下载和访问,分为公有和私有两类Registry。
公有镜像仓库: