Docker命令分类 docker --help可以查看docker命令介绍
docker --help可以查看docker命令介绍
docker的命令可以分为6类
子命令分类 | 子命令 |
---|---|
Docker环境信息 | info,version |
Container生命周期管理 | create,exec,kill,pause,restart,rm run,start,stop,unpause |
Docker registry命令 | login,logout,pull,push,search |
Docker images管理 | build,image,import,load,rmi,save,tag,commit |
Container运维操作 | attach,export,inspect,port,ps,rename,stats,top,wait,cp,diff |
System日志信息 | event,history,logs |
所有的命令执行前都需要加上docker
Docker环境信息
docker info和docker version都可以用于检查Docker是否正确安装,正确安装会输出Docker的配置信息
container生命周期管理
新建并启动容器
run
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
docker run命令会寻找本地镜像,以此为模板新建一个容器。如果本地没有,会去远程仓库拉取。
可以使用docker run --help来挑选可以选用的选项
[OPTIONS]常见的选项有:
OPTIONS | |
---|---|
–name | 后跟随着为容器指定的名称 |
-d | 后台运行容器,并返回容器ID,即启动守护式容器 |
-i | 使用交互模式运行容器,始终保持输入流开放 |
-t | 为容器分配一个伪终端,与i同时使用。即:在容器中利用打开的weight终端与容器进行交互 |
-v | 挂载volumn |
-P | 随机端口映射 |
-p | 指定端口,可以有以下四种格式 |
ip:hostPort:containerPort | |
ip::containerPort | |
hostPort:containerPort | |
containerPort |
docker run -it --name mytest centos:latest /bin/bash
该语句将使用centos的最新版本tag镜像启动一个容器,将其命名为mytest,并且启动伪终端,然后执行容器内的/bin/bash命令。执行完语句后,系统将进入容器的伪终端。
docker run centos ls -l
该命令将会使用centos最新版本镜像启动容器,运行ls -l命令后容器将会停止运行并退出
启动容器
start
docker start 容器ID或者容器名
该命令将会启动已经存在但退出运行的一个容器
docker start f0baacb5152d
f0baacb5152d是容器ID
docker start mytest
mytest是容器名字
restart
docker restart 容器ID或者容器名
该命令将会重新启动已经存在的正在运行容器
停止容器
stop
docker stop 容器ID或者容器名
该命令将会让正在运行的容器停止运行
kill
docker kill 容器ID或者容器名
该命令将让正在运行的容器强行停止运行
stop和kill的区别
docker stop:支持“优雅退出”。先发送SIGTERM信号,在一段时间之后(10s)再发送SIGKILL信号。Docker内部的应用程序可以接收SIGTERM信号,然后做一些“退出前工作”,比如保存状态、处理当前请求等。
docker kill:发送SIGKILL信号,应用程序直接退
出。
删除容器
rm
docker rm 容器ID
删除正在运行的容器
可以采用嵌入多条命令的形式删除多个容器
docker rm -f ${docker ps -a -q}
-f将会强行删除
docker ps -a -q命令将会显示当前正在运行+历史上运行过的容器的容器ID。
所以上面命令将会强制删除docker上所有的容器,包括运行不运行
退出容器
是指目前已经在容器内部的伪终端中,如何退出伪终端,回到系统原来的终端。
输入exit命令
容器会停止退出
按住crtl+P+Q键
容器将会处于运行状态下,不停止退出
Docker registry
pull
docker pull [OPTIONS] NAME{:TAG}
将会从docker registry中拉取image或者repository(镜像库,包括各个版本标签的镜像)。
push
docker push NAME{:TAG}
将本地的image或者repository推送到docker 镜像库中
search
docker search [OPTIONS] NAME
寻找远程仓库下对应名字的镜像
[OPTIONS]举例
–no-trunc:显示完整的镜像描述
-s:列出收藏数不少于指定值的镜像
–automated:列出automated build类型的镜像
images管理
列出镜像
images
docker images [OPTIONS] [NAME]
列出主机上所有的镜像
[OPTIONS]说明
-a:列出本地所有镜像,包括中间映像层
-q:只显示镜像ID
–digests:显示镜像的再要信息
–no-trunc显示完整的镜像信息
注意到没有,no trunc将完整显示IMAGE ID,我们平时使用的知识IMAGE的部分ID(12位)
删除镜像
rmi
docker rmi [OPTIONS] IMAGE [NAME]
注意:如果rmi删除镜像时,已经有基于该镜像启动的容器存在,不管该容器是否正在运行,都无法直接删除,需要先rm删除容器,或者使用-f强制删除
删除单个:-------docker rmi -f 镜像ID
删除多个:-------docker rmi -f 镜像名1:TAG 镜像名2:TAG
删除全部:-------docker rmi -f ${docker images -qa}
docker images -qa将会显示所有的镜像的镜像ID
docker ps -qa将会显示所有的容器的容器ID
注意rmi和rm的区别,一个是删除镜像,一个是删除容器
commit
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
能将一个容器固化成一个新的镜像。注意,commit只能提交保存正在运行的容器。(不推荐使用,一般使用build和Dockerfile创建管理镜像)
[OPTIONS]说明
-m:提交的描述信息
-a:作者
build
Container运维操作
进入正在运行的容器并以命令行形式交互
attach
直接进入容器的终端,不会启动新进程
docker attach [OPTIONS] CONTAINER
exec
进入容器内执行某个命令后退出
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
exec可以通过添加-it选项,命令改为/bin/bash后进入容器终端
inspect 可以查看镜像和容器的详细信息。
docker inspect【OPTIONS】CONTAINER|IMAGE [CONTAINER|IMAGE..]
添加–format参数可以查看某个键的信息
ps
docker ps [OPTIONS]
列出容器列表
[OPTIONS]
-a:显示所有容器,包括已经停止的
-n:显示最新指定的条数的容器
-l:只显示最新创建的容器,包括不运行的容器
-q:只显示容器ID
cp
将容器内的文件拷贝到主机上
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|
SRC_PATH:容器内文件路径
DEST_PATH:主机上目的路径
top
docker top CONTAINER
查看容器内运行的进程
rename
docker rename CONTAINER NEW_NAME
重命名该容器的name
System日志信息
logs
docker logs [OPTIONS] CONTAINER
[OPTIONS]说明
-t,日志中加入时间戳
-f,跟随最新的日志打印
–tail 数字。显示最后指定数字的条数
events
从docker服务获取容器实时时间
history
展示一个镜像形成历史