1、帮助命令
docker version
docker info
docker --help
2、镜像命令
docker images //列出本地主机上的镜像
参数:-a:列出本地所有的镜像(含中间映象层)
-q:只显示镜像ID
--digests:显示镜像的摘要信息
--no-trunc:显示完整的镜像信息
docker search 镜像名字
参数:--no-trunc:显示完整的镜像描述
-s:列出收藏数不小于指定值的镜像
--automated:只列出automated build类型的镜像
docker pull 镜像名字 //下载镜像
docker rmi 镜像名字或ID //删除镜像
参数:-f:删除单个
-f 镜像名1:TAG 镜像名2:TAG:删除多个
-f $(docker images -qa):删除全部
3、容器命令
docker run 镜像 //新建并启动容器
参数:--name="容器新名字":为容器指定一个名称;
-d:后台运行容器,并返回容器ID,也即启动守护式容器;
-i:以交互模式运行容器,通常与-t同时使用;
-t:为容器重新分配一个伪输入终端,通常与-i同时使用;
-P:随机端口映射;
-p:指定端口映射,有以下四种格式
ip:hostPort:containerPort
ip:containerPort
hostPort:containerPort
containerPort
docker ps //列出当前所有正在运行的容器
参数:-a:列出当前所有正在运行的容器+历史上运行过的
-l:显示最近创建的容器。
-n:显示最近n个创建的容器。
-q:静默模式,只显示容器编号。
--no-trunc :不截断输出。
#退出容器
exit //容器停止退出
ctrl+P+Q //容器不停止退出
#启动容器
docker start 容器名或容器ID
#重启容器
docker restart 容器名或容器ID
#停止容器
docker stop 容器名或容器ID
#强制停止容器
docker kill 容器名或容器ID
#删除已停止的容器
docker rm 容器ID
#一次性删除多个容器
docker rm -f $(docker ps -a -q) 或 docker ps -a -q|xargs docker rm
docker logs -f -t --tail 容器ID //查看容器日志
参数:-t:加入时间戳
-f:跟随最新的日志打印
--tail:显示最后多少条
docker top 容器ID //查看容器内运行的进程
docker inspect 容器ID //查看容器内部细节
#进入正在运行的容器并以命令行交互
docker exec -t 容器ID 或 docker attach 容器ID
参数:attch:直接进入容器启动命令的终端,不会启动新的进程。
exec:是在容器中打开新的终端,并且可以启动新的进程。
docker cp 容器ID:容器内路径 目的主机路径 //从容器内拷贝文件到主机
4、镜像
1、docker分为三部分:镜像、容器、仓库。
2、底层是UnionFS(联合文件系统)。
docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]
5、容器数据卷
功能:容器的持久化; 容器间继承+共享数据
容器间传递共享(–volumes-from):容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止。
#直接命令添加容器数据卷
docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名 //权限 readonly
#DockerFile添加容器数据卷
6、DockerFile解析
Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。
构建步骤:编写Dockerfile文件、docker build、docker run
基础知识:
1:每条保留字指令都必须为大写字母且后面要跟随至少一个参数
2:指令按照从上到下,顺序执行
3:#表示注释
4:每条指令都会创建一个新的镜像层,并对镜像进行提交
指令字:
FROM: 基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER: 镜像维护者的姓名和邮箱地址
RUN: 容器构建时需要运行的命令
EXPOSE: 当前容器对外暴露出的端口
WORKDIR: 指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点
ENV: 用来在构建镜像过程中设置环境变量
ADD: 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
COPY: 类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
VOLUME: 容器数据卷,用于数据保存和持久化工作
CMD: 指定一个容器启动时要运行的命令,DockerFile中可以有多个CMD指今,但只有最后一个生效,CMD会被docker run之后的参数替换
ENTRYPOINT: 指定一个容器启动时要运行的命令,ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数
ONBULD: 当构建一个被继承的Dockerile时运行命令,父镜像在被子继承后父镜像的onbuild被触发