镜像命令
docker images 列出本地主机上的镜像
- REPOSITORY: 镜像的仓库源
- TAG: 镜像的标签 不同的版本
- IMAGE ID: 镜像的ID
- CREATE TIME: 镜像创建时间
- SIZE: 镜像大小
- 同一个仓库可以有多个tag,表示这个仓库源的不同个版本
- 使用repository:tag 定义不同的镜像
- 如果不指定tag,默认使用latest
- 参数
- -a: 本地所有的Image,包含中间映像层
- -q: 只显示镜像ID
- --digests: 显示镜像的摘要信息 sha265
- --no-trunc: 显示完整的信息
Docker search
在docker hub中查找,但是从设置仓库镜像中下载
- -s:star数:-s 30: 列出收藏数不小于指定值的镜像
- --no-tunc: 显是完整的说明信息
- ---automated: 只列出自动安装,构建
Docker pull Repository:Tag
拉取镜像
- Tag 可以省略,默认Latest
- 镜像分层,类似千层饼
Docker rmi Repository:Tag
删除本地镜像
- Tag 默认 Lastest
- -f :强制
- 删除单个: docker rmi -f 镜像ID
- 删除多个: docker rmi - f 镜像名1:tag 镜像名2:tag
- 删除全部: docker rmi -f $(docker images -qa)
容器命令
容器 是一个简易版的Linux环境和运行在其中的应用程序
Docker run [option] image [command][ arg]
端口映射 将容器内的端口映射到容器外的端口
-p: 指定端口:容器内的端口
- ip:hostPort:containerPort
- ip::containerPort
- hostPost:containerPort
- containerPort
- -P 随机映射
参数
- --name="容器新名字": 为容器指定一个名称
- -d:后台运行容器,并返回容器ID,即启动守护式容器
- -i :以交互模式运行容器,通常与-t同时使用
- -t:为容器重新分配一个伪输入终端,通常与-i同时使用
Docker ps
列出当前所有运行的容器
- 默认显示当前正在运行的容器
- name 没有指定的话,使用默认的
- -a: 列出当前所有正在运行的+历史上运行过的
- -l :显示最近创建的容器
- -n:显示最近n个创建的容器
- -q:静默模式,只显示容器编号
- --no-trunc:不截断输出
启动容器
Docker start 容器ID或者容器名
重启容器
Docker restart 容器ID或者容器名
停止容器
属于正常的停止,会有一段时间的操作
Docker stop 容器ID或者容器名
强制停止容器
立刻马上
Docker kill 容器ID或者容器名
删除缓存中的容器
Docker rm 容器ID或者容器名
参数
- -f: 强制删除,包括没有停止的容器
- 一次性删除多个
docker rm -f ${docker ps -qa}
退出容器
- exit: 容器停止退出
- Ctrl+P+Q:容器挂起
守护式容器
Docker run -d 容器ID和容器名
注意:Docker容器后台运行,就必须有一个前台进程
☆ Docker容器运行的命令如果不是那些一直挂起的命令top,tail;就会自动退出
这是docker的机制问题
以nginx为例,正常情况下,我们配置启动服务只需要启动响应的seriver即可,例如 service Nginx start;
但是Nginx以后台进程模式运行,就导致dicker前台没有运行的应用,这样的容器后台启动后,会立即自杀,因为他觉得没事可做
最佳解决方案:将你要运行的的程序以前台进行的形式运行
查看 容器日志
Docker logs -f -t --tail 容器ID和容器名
- t: 加入时间段
- f: 跟随最新的日志打印
- tail 数字: 显示最后几条
查看容器内部的进程
Docker top 容器ID和容器名
查看容器内部细节
Docker inspect 容器ID和容器名
进入正在运行的容器以命令行方式交互
- docker exec -it 容器ID bashshell
- docker attach 容器ID
- attach: 直接进入容器启动命令的终端,不会启动新的进程
- exec: 在容器中打开新的终端,并且可以启动新的进程
- 直接在容器后面加命令执行,不会记录到日志
从容器内拷贝数据到主机上
docker cp 容器ID:容器内路径 目的主机路径