Docker常用命令
在使用Docker的过程中,记录下常用的一些命令。
一、镜像命令
1、查看所有本地主机上的镜像:
docker images
可选参数:
- -a #列出所有镜像
- -q #只显示镜像id
2、搜索镜像:
docker search 镜像名称
3、下载镜像(默认使用最新版,如果有tag则使用tag版本):
docker pull 镜像名称[:tag]
4、删除镜像(默认删除最新版,如果有tag则使用tag版本)
docker rmi
可选参数:
- -f 镜像id #删除指定镜像id镜像(支持删除多个)
- -f 镜像名称 #删除指定镜像id镜像(支持删除多个)
- -f $(docker images -aq) #删除全部镜像
二、容器命令
1、启动一个容器:
docker run [可选参数] 镜像名称
可选参数:
- --name "mysql" #设置容器名称
- -d #后台方式运行
- -it #使用交互方式运行(会进入容器)
- -p #指定容器的端口(主机端口:容器端口)
- -P #随机指定端口
- -e #设置环境变量(例如:设置JVM大小)
- -v #挂载(支持多个目录挂载),即将宿主机与容器内目录双向绑定同步。就算容器重启了,数据也会同步 (宿主机目录:容器内目录)
- --volumes-from 目标容器名 #当前容器与目标容器的数据卷,进行数据共享
示例:docker run --name "nginx" -p 8080:80 -d nginx
2、列出所有当前正在运行的容器:
docker ps
可选参数:
- -a #列出当前所有容器(包含正在运行和历史运行的容器)
- -n=? #显示几个最近创建的容器
- -q #只显示容器编号
- --filter "name=nginx" #过滤出容器名称=nginx的容器(模糊查询)
3、删除容器
docker rm 容器id #删除指定容器(不能删除正在运行的)
docker rm $(docker ps -aq) #删除所有容器
可选参数:
-f #强制删除容器(正在运行的和停止运行的都可以删除)
4、启动和停止容器:
docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止正在运行的容器
docker kill 容器id #强制停止当前容器
5、使用交互模式进入容器后,退出容器命令:
exit #退出并停止容器
ctrl + p + q #退出容器(不停止)
三、其它命令:
1、查看日志:
docker logs -tf --tail 10 容器id
参数说明:
- -tf #显示日志(带时间戳)
- --tail 10 #要显示的日志条数(日志尾部滚动显示)
2、查看容器内的进程信息:
docker top 容器id
3、查看容器内元数据(卷挂载信息、联合文件信息等):
docker inspect 容器id
4、进入当前正在运行的容器
docker exec -it 容器id 后面可以加指令: /bin/bash #进入容器后开启一个新的终端(常用) ls -a #这里可以使用各种linux指令,不会进入容器。相当于在容器内执行该指令 docker attach 容器id #进入容器正在执行的终端
5、将容器内文件拷贝到宿主机上:
docker cp 容器id:容器内路径 宿主机路径
6、提交自定义镜像:
docker commit -m="提交注释" -a="作者" 容器id 新镜像名称:[tag]
7、列出所有的数据卷:
docker volume ls
8、通过Dockerfile构建一个镜像:
docker build -f dockerfile1 -t mycentos:v1 .
参数说明:
- -f Dockerfile名称 #指定Dockerfile名称
- -t 镜像名称: tag #指定镜像名称和tag(如果不指定tag,则默认为lastest)
- . #Dockerfile所在文件路径(同级目录,使用一个点就可以了,这个不能少了)
9、查看网络信息:
docker network
可选参数:
- ls #列出所有网络
- rm #删除指定网络
10、帮助命令:
docker version #显示docker的版本信息
docker info #显示docker的系统信息
docker 命令 --help #查看命令帮助信息
11、清理无用镜像
docker system prune # 用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及无tag的镜像
docker system prune -a # 清理得更加彻底,可以将没有容器使用Docker镜像都删掉
四、遇到的坑
a、拉取镜像时,如果报如下错,拉取镜像就会失败:
open /var/lib/docker/tmp/GetImageBlob560949775: no such file or directory
解决办法:
重启docker服务: sudo systemctl restart docker
知识改变世界