官方文档地址:
https://docs.docker.com/reference/
https://docs.docker.com/engine/reference/commandline/docker/
一、docker常用命令
- Docker容器的一些命令按功能分类大致如下
Docker环境信息 info、version 镜像仓库命令 login、logout、pull、push、search 镜像管理 build、images、import、load、rmi、save、tag、commit 容器生命周期管理 create、exec、kill、pause、restart、rm、run、start、stop、unpause 容器运维操作 attach、export、inspect、port、ps、rename、stats、top、wait、cp、diff、update 容器资源管理 volume、network 系统信息日志 events、history、logs 1.events打印容器的实时系统事件 2.history 打印出指定镜像的历史版本信息 3.logs打印容器中进程的运行日志
docker --help #查看docker命令 docker info #docker 详细信息,镜像和容器 docker version #查看docker版本 帮助文档地址:https://docs.docker.com/reference/
二、镜像命令
- 列出本地镜像
docker images # 查看docker镜像; # 具体列解释含义: REPOSITORY #镜像仓库源 TAG #镜像的标签 IMAGE ID #镜像id CREATED #创建时间 SIZE #大小
同一个仓库源可以有多个TAG,表示这个仓库源的不同版本,我们使用REPOSITORY:TAG来定义不同的镜像。如果不指定一个镜像的版本标签,例如只使用tomcat,docker将默认使用tomcat:latest镜像
docker images -a #列出本地所有的镜像 docker images -q #只显示镜像ID docker images --digests #显示镜像的摘要信息 docker images --no-trunc #显示完整的镜像信息
示例:
[root@izbp1hcw0fjg64l58525bqz ~]# docker images -q d1165f221234 [root@izbp1hcw0fjg64l58525bqz ~]# docker images --digests REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE hello-world latest sha256:0fe98d7debd9049c50b597ef1f85b7c1e8cc81f59c8d623fcb2250e8bec85b38 d1165f221234 5 months ago 13.3kB [root@izbp1hcw0fjg64l58525bqz ~]# docker images --no-trunc REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest sha256:d1165f2212346b2bab48cb01c1e39ee8ad1be46b87873d9ca7a4e434980a7726 5 months ago 13.3kB
- 查找镜像
docker search tomcat # 从Docker Hub上查找tomcat镜像 STARS: # 关注度 docker search --filter=stars=300 tomcat #从Docker Hub上查找关注度大于300的tomcat镜像
从Docker Hub上查找关注度大于300的tomcat镜像
NAME #名称 DESCRIPTION #描述 STARS #点赞,关注度,类似GitHub OFFICIAL #是否官方 AUTOMATED #是否自动构建
镜像下载
docker pull tomcat #从Docker Hub上下载tomcat镜像,默认是最新版本。等价于:docker pull tomcat:latest docker pull tomcat:8 # 选择指定版本下载
如果需要确认是否有需要下载的版本,可以在https://hub.docker.com/上查找
docker在这里也提供了相应的下载命令
删除镜像命令
#单个镜像删除,相当于:docker rmi java:latest docker rmi java #强制删除(删除正在运行的镜像,注:以后台方式运行的不能被强制删除) docker rmi -f java #多个镜像删除,不同镜像间以空格间隔 docker rmi -f java tomcat nginx #删除本地全部镜像 docker rmi -f $(docker images -q)
三、容器命令
只有下载镜像才能运行容器命令
- 查看容器
# 查看正在运行的容器 docker ps # 查看所有容 包括停止的容器 docker ps -a # -q参数,只显示container id docker ps -q # 查看容器详细信息 docker inspect demo1
- 容器启动与停止
#新建并启动容器,参数:-i 以交互模式运行容器;-t 为容器重新分配一个伪输入终端;--name 为容器指定一个名称 docker run -i -t --name mycentos 镜像名称/镜像ID #后台启动容器,参数:-d 已守护方式启动容器 docker run -d mycentos #启动止容器 docker start 容器id # 重启容器 docker restart 容器id # 关闭容器 docker kill 容器id docker stop 容器id -t 参数让Docker分配一个伪终端并绑定到容器的标准输入上 -i 参数则让容器的标准输入保持打开。 -c 参数用于给运行的容器分配cpu的shares值 -m 参数用于限制为容器的内存信息,以 B、K、M、G 为单位 -v 参数用于挂载一个volume,可以用多个-v参数同时挂载多个volume -p 参数用于将容器的端口暴露给宿主机端口 格式:host_port:container_port 或者 host_ip:host_port:container_port --name 容器名称 --net 容器使用的网络 -d 创建一个后台运行容器
示例:
#运行centos镜像 [root@izbp1hcw0fjg64l58525bqz ~]# docker run -it centos # 查看镜像文件目录 [root@9ec4a30b3209 /]# ls bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var [root@9ec4a30b3209 /]#exit #并没有运行中的镜像 [root@izbp1hcw0fjg64l58525bqz ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- 容器进入与退出
#使用run方式在创建时进入 docker run -it centos /bin/bash #关闭容器并退出 exit #仅退出容器,不关闭 快捷键:Ctrl + P + Q 快捷键:Ctrl + Shift + P + Q
示例:
#启动镜像 [root@izbp1hcw0fjg64l58525bqz ~]# docker run -it centos /bin/bash # ctrl +p +q退出,查看运行的容器 [root@f6db6f0661af /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f6db6f0661af centos "/bin/bash" About a minute ago Up About a minute elegant_shtern # 停止容器 [root@izbp1hcw0fjg64l58525bqz ~]# docker stop f6db6f0661af f6db6f0661af [root@izbp1hcw0fjg64l58525bqz ~]# docker ps -q
- 容器进程
#top支持 ps 命令参数,格式:docker top [OPTIONS] CONTAINER [ps OPTIONS]
#列出redis容器中运行进程
docker top tomcat
#查看所有运行容器的进程信息
for i in `docker ps |grep Up|awk '{print $1}'`;do echo &&docker top $i; done
- 容器日志
# 查看redis容器日志,默认参数 docker logs tomcat # 查看redis容器日志,参数:-f 跟踪日志输出;-t 显示时间戳;--tail 仅列出最新N条容器日志; docker logs -f -t --tail=20 redis # 查看容器redis从2021年08月10日后的最新10条日志。 docker logs --since="2021-08-10" --tail=10 redis
- 进入当前正在运行的容器
通常容器使用后台的方式运行,需要进入容器,修改一些配置;
方式一
docker exec -it 容器id bashShell(/bin/bash)
方式二
docker attach 容器id bashShell(/bin/bash)
exec:进入容器后,开启一个新的终端,可以再里面操作;
attach:进入容器正在执行的终端,不会启动新的终端进程;
- 容器内拷贝文件到主机
docker cp 容器id:容器内路径 目的主机路径



