Docker帮助命令
1. 查看Docker版本
[root@centos ~]# docker version
2. 查看Docker的详细信息
[root@centos ~]# docker info
3. 查看帮助命令
[root@centos ~]# docker --help
Docker镜像命令
1. 列出本地主机上的镜像
docker images [OPTIONS] 各个选项说明 1. REPOSITORY: 表示镜像的仓库源 2. TAG : 镜像的版本标签 3. IMAGE ID : 镜像ID 4. CREATED : 镜像创建时间 5. SIZE : 镜像大小 OPTIONS说明: -a: 列表本地所有的镜像(含中间映像层) -q: 只显示镜像ID --digests: 显示镜像的摘要信息 --no-trunc: 显示完整的镜像信息
同一个仓库源可以有多个TAG,代表这个仓库源的不同版本,使用REPOSITORY:TAG来定义不同的镜像。如果不指定一个镜像的版本标签,例如只使用ubuntu,docker将默认使用ubuntu:latest镜像。
2. 在远程仓库中查找镜像
docker search [OPTIONS] 镜像名称 # 目标网站: https://hub.docker.com OPTIONS说明: --no-trunc: 显示完整的镜像描述 -s: 列出收藏数不少于指定值的镜像 --automated: 只列出automated build类型的镜像
3. 从远程仓库中下载镜像
docker pull 镜像名字[:TAG]
docker pull nginx 等价于 docker pull nginx:latest
4. 删除镜像
删除单个: docker rmi 唯一镜像名字或镜像ID[:TAG] 删除多个: docker rmi -f 镜像名1:TAG 镜像名2:TAG 删除全部: docker rmi if $(docker images -qa)
Docker容器命令
有镜像才能创建容器,这是根本前提!
1. 新建并启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...] OPTIONS说明: 有些是一个减号,有些是两个减号 --name="容器新名字": 为容器指定一个名称 -d: 后台运行容器,并返回容器ID,也即启动守护式容器 -i: 以交互模式运行容器,通常与-t同时使用 -t: 为容器重新分配一个伪输入终端,通常与-i同时使用 -P: 随机端口映射 -p: 指定端口映射,有以下四种格式 ip:hostPort:containerPort ip::containerPort hostPort:containerPort containerPort
2. 列出当前所有正在运行的容器
docker ps [OPTIONS] OPTIONS说明: -a: 列出当前所有正在运行的容器+历史上运行过的 -l: 显示最近创建的容器 -n: 显示最近n个创建的容器 -q: 静默模式,只显示容器编号 --no-trunc: 不截断输出
3. 退出容器
1. 容器停止退出 exit 2. 容器不停止退出 ctrl+P+Q
4. 启动容器
docker start 容器ID或者容器名
5. 重启容器
docker restart 容器ID或者容器名称
6. 停止容器
docker stop 容器ID或者容器名
7. 强制停止容器
docker kill 容器ID或容器名称
8. 删除已停止的容器
docker rm 容器ID 一次删除多个容器 docker rm -f $(docker ps -a -q) docker ps -a -q|xargs docker rm
9. 启动守护式容器
docker run -d 容器名
使用容器centos:latest以后台模式启动一个容器
docker run -d centos
问题: 然后docker ps -a 进行查看,会发现容器已经退出
很重要的要说明一点: Docker容器以后台运行,就必须要有一个前台进程
容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的
这个是docker的机制问题,比如web容器,以nginx为例,正常情况下,配置启动服务只需要启动响应的service即可。例如service nginx start
但是这样做,nginx为后台进程模式运行,就导致docker前台没有运行的应用,
这样的容器后台启动后,会立即自杀因为他觉得他没事可做了
所以,最佳的解决方案是,将要运行的程序以前台进程的形式运行
10. 查看容器的日志
docker logs -f -t --tail 容器ID -t: 加入时间戳 -f: 跟随最新的日志打印 --tail: 数字 显示最后多少条
11. 查看容器内运行的进程
docker top 容器ID
12. 查看容器内部的细节
docker inspect 容器ID
13. 进入正在运行的容器并以命令行交互
docker exec -it 容器ID bashShell # 重新进入 docker attach 容器ID attach: 直接进入容器启动命令的终端,不会启动新的进程 exec: 是在容器中打开新的终端,并且可以启动新的进程
14. 从容器内拷贝文件到主机上
docker cp 容器ID: 容器内路径 目的路径
Docker commit命令
docker commit提交容器副本使之成为一个新的镜像
docker commit -m = "提交的描述信息" -a ="作者" 容器ID要创建的目标镜像名[:标签名]
案例演示:
1. 从Hub上下载tomcat镜像到本地并成功运行 docker run -it -p 8080:8080 tomcat -p: 主机端口:docker容器端口 -P: 随机分配端口 -i: 交互 -t: 终端 2. 故意删除上一步镜像生产tomcat容器的文档 3. 也即当前tomcat运行实例是一个没有文档内容的容器,以它为模板commit一个没有doc的tomcat新镜像tomcat02 docker commit -a="新tomcat" -m="del docs tomcat" b9eb1bce5153 tomcat02 4. 启动我们的新镜像并和原来的像对比