版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_25448409/article/details/85245666
帮助命令
版本验证
docker version
docker容器描述
docker info
镜像命令
列出本地主机上的镜像
docker images [optopns]
-a 列出本地所有镜像,包含中间映射层
-q 只显示当前镜像的imageID
--digests 镜像的摘要信息
--no-trunc 显示完整的镜像信息
- repository 镜像的仓库源
- tag 镜像标签
- image id 镜像id
- created 镜像创建时间
- size 镜像大小
查询某个镜像的名字
docker search [optopns] 镜像名字
--no-trunc 显示完整的镜像描述
-s 列出收藏数不小于指定值得镜像 eg: -s 30
--automated 只列出automated build类型的镜像
下载镜像
docker pull 镜像名字[:TAG]
TAG默认latest
删除镜像
docker rmi 镜像名字[:TAG]
强制删除 docker rmi -f 镜像名字[:TAG]|镜像id
删除多个 docker rmi 镜像名 镜像名
删除所有 docker rmi -f $(docker images -qa)
容器命令
依照centos为例 docker pull centos
新建并启动容器,本地有直接启动,本地没有去hub拉
docker run [OPTIONS] IMAGE [COMMAND] [ARG]
OPTIONS说明(常用)
--name = “容器新名字” 为容器指定一个名称
-d 后台运行容器,并返回容器ID,也既启动守护式容器
-i 以交互模式运行容器,通常与-t同时使用
-t 为容器重新分配一个伪输入终端,通常与-i
-P 所及端口映射
-p 指定端口映射,有一下四种格式
ip:hostPoint:containerPort
ip:containerPort
* hostPort:containerPort
containerPort
eg:
运行centos容器并进入终端
docker run -it 5182e96772bf
列出当前所有 正在运行 的容器
docker ps [OPTIONS]
-a 列出当前所有正在运行的容器+历史上运行过的
-l 显示最近创建的容器
-n 显示最近n个创建的容器
-q 静默模式,只显示容器编号
--no-trunc
退出容器
- exit 容器停止退出
- ctrl + P + Q 容器不停止退出
启动容器
docker start 容器ID或容器名
重启容器
docker restart 容器ID或容器名
停止容器
docker stop 容器ID或容器名
强制停止容器
docker kill 容器ID或容器名
删除已停止的容器
docker kill 容器ID
一次性删除多个容器
- docker rm -f $(docker ps -a -q)
- docker ps -a -q | xargs docker rm
重要
启动守护式容器
docker run -d 容器名
问题:然后docker ps -a查看,发现容器已经退出
很重的说明一点:docker容器后台运行,就必须有一个前台进程,容器运行的命令如果不是那些一直挂起的命令(比如运行top,tiil),就会自动退出
这个是docker机制的问题,比如你的web容器,我们以nginx为例,正常情况下,我们配置启启动服务只需要启动相应额service即可。例如service nginx start但是,这样做是nginx后台进程模式运行,导致docker前台没有运行的应用。这样的容器后台启动后,会立即杀死因为他觉得他没事可做了。
所以最佳解决方案是,将你运行的程序以前台进程的形式运行。
查看容器日志
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:容器内路径 目的主机路径