Docker命令
基础命令
docker version #查看docker的版本信息
docker info #查看docker的系统信息,包括镜像和容器的数量
docker 命令 --help #帮助命令(可查看可选的参数)
docker command --help
docker images --help
命令官方文档:https://docs.docker.com/engine/reference/commandline/docker/
镜像命令
- 查看镜像
docker images # 查看本地主机的所有镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest 18e5af790473 3 weeks ago 9.14kB
docker images -aq # -a/--all 列出所有镜像 ;-q/--quiet 只显示镜像的id
docker images --help # 帮助命令
- 搜索镜像
docker search mysql
# 搜索收藏数大于3000的镜像
docker search mysql --filter=STARS=3000
- 下载镜像
docker pull 镜像名[:tag]
docker下载镜像是分层下载。比如同一个mysql的不同版本会复用相同的分层包
分层下载,docker image的核心-联合文件系统
docker pull mysql # 如果不写tag默认就是latest
docker pull mysql:5.7 # 指定版本下载
- 删除镜像
docker rmi
#1.删除指定的镜像id
docker rmi -f 镜像id
#2.删除多个镜像id
docker rmi -f 镜像id 镜像id 镜像id
#3.删除全部的镜像id
docker rmi -f $(docker images -aq)
容器命令
- 拉取容器
docker pull centos
- 运行容器
docker run [可选参数] image
#参数说明
--name="名字" 指定容器名字
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口
(
-p ip:主机端口:容器端口 配置主机端口映射到容器端口
-p 主机端口:容器端口
-p 容器端口
)
-P 随机指定端口(大写的P)
- 进入容器
docker run -it centos /bin/bash
- 退出容器
exit # 停止并退出容器(后台方式运行则仅退出)
Ctrl+P+Q # 不停止容器退出
- 列出运行过的容器
docker ps # 列出当前正在运行的容器
docker ps -a # 列出所有容器的运行记录
docker ps -n=? # 显示最近创建的n个容器
docker ps -q # 只显示容器的编号
- 删除容器
docker rm 容器id #删除指定的容器,不能删除正在运行的容器,强制删除使用 rm -f
docker rm -f $(docker ps -aq) #删除所有的容器
docker ps -a -q|xargs docker rm #删除所有的容器
- 启动和停止容器
docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前运行的容器
docker kill 容器id #强制停止当前容器
常用命令
- 后台启动容器
docker run -d centos
问题: docker ps 发现centos停止了。
常见的坑:docker容器启动后台运行,就必须有一个前台进程,docker发现没有应用就会自动停止。
比如:nginx容器启动后,发现自己没有提供服务就会立刻停止。
- 日志查看
docker logs --help
docker logs -tf 容器id
docker logs --tail number 容器id # num为要显示的日志条数
docker run -d centos /bin/sh -c "while true;do echo hi;sleep 5;done" # 执行shell脚本
docker logs -tf --tail 10 容器id # 输出日志
- 查看容器中进程信息
docker top 容器id
- 查看容器的元数据
docker inspect 容器id
- 进入当前正在运行的容器
docker exec -it c703b5b1911f /bin/bash # 方式一
docker attach c703b5b1911f # 方式二
docker exec 进入容器后开启一个新的终端,可以在里面操作
docker attach 进入容器正在执行的终端,不会启动新的进程
- 从容器内拷贝文件
docker cp c703b5b1911f:/home/test.java /home
docker cp 容器id:容器内路径 目的主机路径
从主机拷贝到容器内使用挂载
。拷贝是手动过程,可以使用 -v 卷的技术实现自动同步。