# Docker常用命令
## 镜像相关命令
### 搜索镜像
```bash
docker search [镜像名称]
# 示例:docker search ubuntu
用于在Docker Hub等镜像仓库查找包含指定关键词的镜像,展示镜像名称、描述、星级等相关信息,方便查找合适的镜像资源。
拉取镜像
docker pull [镜像名称:标签]
# 示例:docker pull ubuntu:latest
docker pull mysql:5.7
从镜像仓库下载指定的镜像到本地,若不指定标签,默认拉取 latest
(最新版)镜像,以获取对应软件或服务的基础镜像。
查看本地镜像
docker images
此命令会列出本地已下载的所有镜像,展示的信息包含 REPOSITORY
(仓库名)、TAG
(标签)、IMAGE ID
(镜像ID)、CREATED
(创建时间)、SIZE
(大小)等,方便了解本地镜像的存储情况。
删除镜像
docker rmi [镜像名称或镜像ID]
# 示例:docker rmi ubuntu:latest
docker rmi [具体镜像ID]
用于删除本地不再需要的镜像,若镜像正在被容器使用,需先停止并删除关联的容器后,方可成功删除该镜像。
构建镜像(基于Dockerfile)
docker build -t [镜像名称:标签] [Dockerfile所在目录路径]
# 示例:docker build -t myapp:v1
依据包含构建指令的Dockerfile所在目录来构建自定义镜像,-t
参数用于指定镜像名称和标签,便于创建符合自身业务需求的镜像。
批量删除镜像(根据条件)
docker rmi $(docker images -q [筛选条件])
# 示例:docker rmi $(docker images -q -f "before=20240101")
可以通过结合 docker images -q
(用于获取符合条件的镜像ID列表)与删除命令 docker rmi
来批量删除镜像。上述示例是删除在2024年1月1日之前创建的镜像,可根据具体的筛选条件(如名称、大小范围、创建时间等)灵活运用此方法进行批量清理。
容器相关命令
运行容器
docker run [参数] [镜像名称:标签]
# 示例:
docker run -it ubuntu:latest /bin/bash
docker run -d -p 3306:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
常用参数解释:
-d
:使容器后台运行(守护式运行),常用于运行长期提供服务的容器,如数据库容器等。-it
:分配交互式终端进入容器内部,方便在容器内执行命令操作,常用于调试等场景。-p
:进行端口映射(宿主机端口:容器内部端口),使得容器内运行的服务能被外部访问。--name
:指定容器的名称,便于后续对容器进行识别和操作。-e
:设置环境变量,用于向容器内传递配置相关信息,比如数据库的初始密码等。
查看运行中的容器
docker ps
列出当前正在运行的容器信息,包含 CONTAINER ID
(容器ID)、IMAGE
(所使用的镜像)、COMMAND
(启动容器时执行的命令)、CREATED
(创建时间)、STATUS
(状态)、PORTS
(端口映射情况)和 NAMES
(容器名称)等,帮助掌握容器运行状态。
查看所有容器(包括已停止的)
docker ps -a
展示所有容器的详细信息,除了运行中的容器信息外,还能看到已停止容器的相关情况,用于全面了解容器的存在和过往运行记录。
停止容器
docker stop [容器名称或容器ID]
# 示例:docker stop mymysql
docker stop [具体容器ID]
正常停止正在运行的容器,让容器内的进程优雅地结束,避免数据丢失或异常情况。
启动容器
docker start [容器名称或容器ID]
# 示例:docker start mymysql
docker start [具体容器ID]
用于启动处于停止状态的容器,使其再次投入运行,恢复到之前配置的运行状态。
重启容器
docker restart [容器名称或容器ID]
# 示例:docker restart mymysql
docker restart [具体容器ID]
重启正在运行或已停止的容器,常用于更新配置后或者容器出现异常需要重新初始化的场景。
删除容器
docker rm [容器名称或容器ID]
# 示例:docker rm mymysql
docker rm [具体容器ID]
删除指定的容器,若容器正在运行,需先停止容器才能删除,清理不再使用的容器资源。
批量删除容器(根据条件)
docker rm $(docker ps -aq [筛选条件])
# 示例:docker rm $(docker ps -aq -f "status=exited")
结合 docker ps -aq
(获取符合条件的容器ID列表)与 docker rm
来批量删除容器。示例中是删除状态为已退出的容器,也可依据创建时间、名称等其他条件灵活运用此方法清理容器。
进入容器
docker exec -it [容器名称或容器ID] [命令]
# 示例:docker exec -it mymysql bash
进入正在运行的容器内部执行指定命令,常用 bash
等命令进入交互式shell环境,便于在容器内操作文件、查看日志、调试程序等。
查看容器日志
docker logs [容器名称或容器ID]
# 示例:docker logs mymysql
查看容器运行产生的日志信息,通过分析日志来排查容器运行过程中出现的问题,比如服务启动失败原因、运行时的报错等。
网络相关命令
查看Docker网络列表
docker network ls
列出Docker系统中创建的所有网络,展示网络的 NETWORK ID
(网络ID)、NAME
(网络名称)、DRIVER
(网络驱动类型)等信息,便于了解网络配置情况。
创建自定义网络
docker network create [网络名称]
# 示例:docker network create mynet
创建一个自定义的Docker网络,方便容器间按需求进行网络通信配置等,比如创建隔离的网络环境供特定的一组容器通信使用。
连接容器到网络
docker network connect [网络名称] [容器名称或容器ID]
# 示例:docker network connect mynet mymysql
将指定容器连接到已有的网络中,使其能与该网络内的其他容器通信,实现容器间的互联互通。
断开容器与网络的连接
docker network disconnect [网络名称] [容器名称或容器ID]
# 示例:docker network disconnect mynet mymysql
将容器从指定网络中断开连接,改变容器的网络通信范围,比如从某个测试网络中移除容器等。
数据卷相关命令
创建数据卷
docker volume create [数据卷名称]
# 示例:docker volume create mydata
创建一个Docker数据卷,用于持久化存储容器数据或者在容器间共享数据,确保数据的独立性和可复用性。
查看数据卷列表
docker volume ls
列出Docker系统中已创建的所有数据卷,显示数据卷的 DRIVER
(驱动类型)、VOLUME NAME
(数据卷名称)等信息,便于管理和知晓已有数据卷资源。
挂载数据卷到容器
docker run -v [数据卷名称或宿主机路径:容器内部路径] [镜像名称:标签]
# 示例:
docker run -v mydata:/data myapp:v1
docker run -v /home/user/data:/data myapp:v1
在运行容器时,将指定的数据卷或者宿主机上的目录挂载到容器内部相应路径,实现数据的持久化或共享,比如保存数据库的数据文件等。
删除数据卷
docker volume rm [数据卷名称]
# 示例:docker volume rm mydata
删除指定的数据卷,若数据卷正在被容器使用,则无法直接删除,要先解除关联后才能操作。