帮助命令
查看docker版本
docker version
查看docker基本信息
docker info
docker帮助手册
docker --help
Usage: docker [OPTIONS] COMMAND [arg...]
Usage: docker [ 选项参数 ] 命令 [参数...(可多选)]
镜像命令
列出本地主机上的镜像
- :REPOSITORY:表示镜像的仓库源
- TAG:镜像的标签
- IMAGE ID:镜像ID
- CREATED:镜像创建时间
- VIRTUAL SIZE:镜像大小
docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
hello-world latest fd74c3615f76 6 months ago 13.34 kB
同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像
OPTIONS说明
-a :列出本地所有的镜像(含中间映像层)
docker images -a
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
hello-world latest fd74c3615f76 6 months ago 13.34 kB
<none> <none> 482c215f2373 6 months ago 13.34 kB
-q :只显示镜像ID。
-qa :组合操作,显示所以镜像的ID。
docker images -q
docker images -qa
--digests :显示镜像的摘要信息
docker images --digests
REPOSITORY TAG DIGEST IMAGE ID CREATED VIRTUAL SIZE
hello-world latest <none> fd74c3615f76 6 months ago 13.34 kB
--no-trunc :显示完整的镜像信息
docker images --no-trunc
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
hello-world latest fd74c3615f76e548000499194419d582abcb4d037e28f302da98e09fe6082b07 6 months ago 13.34 kB
查询镜像
docker search 某个XXX镜像名字
例如:docker search tomcat
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
tomcat Apache Tomcat is an open source implementa... 2771 [OK]
tomee Apache TomEE is an all-Apache Java EE cert... 79 [OK]
dordoka/tomcat Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 ba... 54 [OK]
bitnami/tomcat Bitnami Tomcat Docker Image 35 [OK]
....
docker search [OPTIONS] 镜像名字
--no-trunc : 显示完整的镜像描述
例:docker search --no-trunc tomcat
-s : 列出收藏数不小于指定值的镜像。
例:docker search -s 30 --no-trunc tomcat
--automated : 只列出 automated build类型的镜像;
例:docker search --automated tomcat
拉取镜像(下载镜像)
docker pull 镜像名字[:TAG]
例:docker pull tomcat
指定版本号:docker pull tomcat:2.3
注意:docker pull tomcat 等价于 docker pull tomcat:latest(最新版本)
删除镜像
删除单个
docker rmi -f 镜像ID
f: 表示强制删除,主要针对于正在运行的镜像
例: docker rmi -f tomcat 或者指定版本号 docker rmi -f tomcat:2.4
注意: docker rmi -f tomcat 等价于 docker rmi -f tomcat:latest
删除多个
docker rmi -f 镜像名1:TAG 镜像名2:TAG
例: docker rmi -f tomcat nginx
同理,不指定TAG默认删除latest版本
删除全部
docker rmi -f $(docker images -qa)
其实可以看成一个组合的命令,因为docker images -qa就是返回所有镜像的ID
同理
docker rmi -f $(images ID,images ID,...) 可以根据ID删除多个
容器命令
新建并启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS说明(常用):有些是一个减号,有些是两个减号
--name="容器新名字": 为容器指定一个名称;(没有指定即为随机名字)
-i:以交互模式运行容器,通常与 -t 同时使用;(常用)
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;(常用)
-d: 后台运行容器,并返回容器ID,也即启动守护式容器;
-P: 随机端口映射;
-p: 指定端口映射,有以下四种格式
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort
例: docker run -it -- name="mycentostest" centos
第一个为对外端口,第二个为tomcat配置端口
docker run -it -p 8888:8080 tomcat
随机端口映射
docker run -it -P tomcat
-it 表示进入容器里的操作终端,以上就是进入centos容器中的伪操作终端
列出当前所有正在运行的容器
docker ps [OPTIONS]
OPTIONS说明(常用):
-a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n:显示最近n个创建的容器。
-q :静默模式,只显示容器编号。
--no-trunc :不截断输出。
例: docker ps -l
退出容器
容器停止退出
exit
当进入到容器的伪终端时,输入exit就可以退出
容器不停止退出
Ctrl+P+Q
启动容器
docker start 容器ID或者容器名
重启容器
docker restart 容器ID或者容器名
停止和强制停止容器
停止容器
docker stop 容器ID或者容器名
强制停止容器
docker kill 容器ID或者容器名
区别在于强制停止容器可以停止运行中的容器
删除已停止容器
docker rm 容器ID
ps: 容器被停止后会有缓存,以便下次运行,删除已停止容器就是将缓存删掉
删除多个
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm
第二个命令的 docker ps -a -q 赋给后面的xargs,然后执行|后面的命令
比较重要的几个容器命令
启动守护式容器
回顾启动容器的内容,以伪终端的形式启动容器的命令为:
docker run -it centos
-d: 后台运行容器,并返回容器ID,也即启动守护式容器
docker run -d cnetos
表示启动后后台运行,无需进入伪终端
使用docker ps 查看,会发现容器已经退出了
原因是:Docker容器后台运行,就必须有一个前台进程,容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的
这个是docker的机制问题
比如你的web容器,我们以nginx为例,正常情况下,我们配置启动服务只需要启动响应的service即可。
例如 service nginx start
但是这样做,nginx为后台进程模式运行,就导致docker前台没有运行的应用
这样的容器后台启动后,会立即自杀,因为他觉得他没事可做了。
所以,最佳的解决方案是,将你要运行的程序以前台进程的形式运行
查看容器日志
docker logs -f -t --tail 容器ID
OPTIONS说明
-t 是加入时间戳
-f 跟随最新的日志打印
--tail 数字 显示最后多少条
docker run -d centos /bin/sh -c "while true;do echo hello zzyy;sleep 2;done"
这条命令可以保持和前台进程交互,有事干就不会触动机制自杀,容器就可以以后台运行的方式启动
查看容器日志即可看到日志一直在打印我们启动时规定的语句
查看容器内运行的线程
因为docker容器是一个简易的Linux环境,所以可以和Linux一样查看容器内运行的线程
docker top 容器ID
查看容器内部细节
以json串的形式展示容器额内部细节
docker inspect 容器ID
进入正在运行中的容器并以命令行交互
回顾前面的退出容器操作,有一个不停止退出
容器不停止退出
Ctrl+P+Q
重新进入不停止退出的容器,进入后会以伪终端的形式互交
docker attach 容器ID
下面的命令保护了 attach 的功能
docker exec -it 容器ID bashShell
如果bashShell为启动路径,那么将会进入互交模式
例:docker exec -it 容器ID /bin/bash
如果bashShell为有返回值的命令,那么将会返回内容,不会进如互交模式
例:docker exec -it 容器ID ls - l /tmp
从容器内拷贝文件到主机上
docker cp 容器ID:容器内路径 目的主机路径
例: docker cp 容器ID:/tmp/yum.log /root
前提是docker容器需要在运行中