一、帮助命令
1.docker version
2.docker info
3.docker --help
二、镜像命令:
1.列出本地机器上的镜像:docker images
参数: -a 列出本地所有的镜像(含中间影像层)
-q 只显示镜像id
--digests 显示镜像的摘要信息
--no-trunc 显示完整的镜像信息
2.从docker hub上搜索镜像:docker search 某个镜像的名字
参数:-s 列出收藏数不小于指定值的镜像
--no-trunc 显示完整的镜像描述
--automated 只列出自动构建类型的镜像
3.下载镜像:docker pull 某个镜像名字[:tag]
参数:
4.删除镜像:docker rmi 某个镜像名字[:tag] 某个镜像名字[:tag]
删除全部镜像:docker rmi -f $(docker image -qa)
参数:-f 强制删除
三、容器命令
1.新建并启动容器:docker run [options] IMAGE [COMMAND][ARGS...]
参数:-i: 以交互模式运行容器,通常与-t一起使用
-t: 为容器重新分配一个伪出入终端,通常与-i一起使用
-d: 后台运行容器,并返回容器id,即启动守护式容器
--name="容器新名字":为容器指定一个名字
-P: 随机端口映射
-p: 指定端口映射, 有以下四种格式:①ip:hostPort:containerPort ②ip::containerPort ③hostPort:containerPort ④containerPort
-v 宿主姐目录:容器目录[:ro(只读)]: 实现宿主机跟容器数据共享,如果出现:Permission denied 添加 --priviledged=true
--volumes-from 容器id或容器名:实现容器卷间的数据共享
2.列出正在运行的容器:docker ps
参数:-a 列出当前正在运行的容器和历史运行过的容器
-l 显示最近创建的容器
-n 显示最近创建的n个容器
-q 静默模式,只显示容器编号
--no-trunc 不截断输出
3.退出容器:①exit 容器停止退出 ②ctrl+P+Q 容器不停止退出
4.启动容器:docker start 容器id 或 容器名
5.重启容器:docker restart 容器id 或 容器名
6.停止容器:docker stop 容器id 或 容器名
7.强制停止容器:docker kill 容器id 或 容器名
8.删除已停止容器: docker rm 容器id
参数: -f 强制删除
删除多个容器: docker rm -f $(docker ps -qa) 或者 docker ps -qa | xargs docker rm
9.查看容器日志:docker logs 容器id
参数:-t 显示时间
-f 跟随最新的日志打印
--tail 数字 显示最后多少条
10.查看容器内运行的进程:docker top 容器id
11.查看容器内部细节:docker inspect 容器id
12.进入正在运行的容器并以命令行交互:
①重新进入 docker attach 容器id 直接进入容器启动命令的终端,不会启动新的进程
②docker exec -it 容器id bashShell 是在容器中打开新的终端,并且可以启动新的进程
13.容器内拷贝文件到主机上:docker cp 容器id:容器内路径 主机目录
14. 提交容器副本使之成为新镜像:docker commit
docker commit -m="提交的描述信息" -a="作者" 容器id 要创建的目标镜像名:[标签名]
15.根据docker file 生成新镜像:docker build -f dockerfile所在的目录 -t 新镜像名字:TAG .
16.列出镜像变更历史:docker history 镜像名或镜像id
四、docker file 体系结构
1.保留字指令
①FROM 基础镜像,当前新镜像是基于那个镜像的
②MAINTAINER 镜像维护者的姓名和邮箱地址
③RUN 容器构建时需要运行的命令
④EXPOSE 当前容器对外暴漏的端口号
⑤WORKDIR 指定在创建容器后,终端登陆进来的默认目录,一个落脚点
⑥ENV 构建镜像过程中设置环境变量
⑦ADD 将宿主机目录下的文件拷贝进镜像,且会自动处理URL和解压tar压缩包
COPY 类似ADD,拷贝文件到镜像中,将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置 copy src dest / copy["src","dest"]
⑧VOLUME:容器数据卷,用于数据保存和持久化工作
⑨CMD:指定一个容器启动时要运行的命令,一个docker file可以有多个cmd指令,但只有最后一个会生效,cmd会被docker run之后的参数替换
ENTRYPOINT:指定一个容器启动时要运行的命令,和cmd一样都是指定容器启动程序及参数,不会被docker run之后的参数替换,只会追加
⑩ONBUILD:当构建一个被继承的dockerFile时运行命令,父镜像在被子镜像继承后,父镜像的onbuild会被触发