Docker常用命令及示例大全
以下将对Docker常用命令按类别进行详细讲解,并配以丰富示例,方便查阅。
命令目录,点击直达
- 一、启动类命令
- 1. 启动docker
- 2. 关闭docker
- 3. 重新启动docker
- 4. docker设置自启动
- 5. 查看docker运行状态
- 6. 查看docker版本号等信息
- 7. docker帮助
- 二、镜像类命令
- 1. 查看镜像
- 2. 搜索镜像
- 3. 拉取镜像
- 4. 运行镜像
- 5. 删除镜像
- 6. 加载镜像
- 7. 保存镜像
- 三、容器类命令
- 1. 查看正在运行的容器
- 2. 创建容器
- 3. 启动守护式容器(后台运行)
- 4. 停止容器
- 5. 启动容器
- 6. 进入正在运行的容器
- 7. 强制停止容器
- 8. 删除容器
- 9. 查看容器日志
- 10. 查看容器内运行的进程
- 11. 查看容器内部细节
- 12. 创建容器数据卷挂载
- 13. 查看数据卷
- 14. 查看数据卷详情
- 15. 删除数据卷
- 四、网络类
- 1. 查看网络
- 2. 创建网络
- 3. 查看网络数据源
- 4. 删除网络
- 五、Docker Compose
- 1. 查看帮助
- 2. 启动所有服务
- 3. 停止并删除容器、网络、卷、镜像。
- 4. 进入容器实例内部
- 5. 展示容器
- 6. 展示进程
- 7. 查看容器输出日志
- 8. 检查配置
- 9. 启动服务
- 10. 重启服务
- 11. 停止服务
- 六、其他
- 1. 命令别名
一、启动类命令
1. 启动docker
命令:systemctl start docker
定义:用于启动Docker服务,使其在系统中开始运行,以便后续进行容器相关的操作。
示例:假设您的服务器刚刚重启,需要启动Docker服务来运行之前创建的容器,在终端输入systemctl start docker
即可启动Docker。
2. 关闭docker
命令:systemctl stop docker
定义:与启动命令相对,该命令用于停止正在运行的Docker服务,停止后无法进行新的容器操作,已运行的容器也会停止运行(除非设置了特殊的重启策略)。
示例:当您需要对服务器进行一些维护操作,且暂时不需要Docker运行时,可以输入systemctl stop docker
来关闭Docker服务。
3. 重新启动docker
命令:systemctl restart docker
定义:此命令会先停止正在运行的Docker服务,然后再重新启动它。常用于在修改了Docker相关配置后,使配置生效。
示例:比如您修改了Docker的网络配置文件,为了让新配置生效,可在终端执行systemctl restart docker
。
4. docker设置自启动
命令:systemctl enable docker
定义:设置Docker服务在系统开机时自动启动,无需人工手动启动,方便在服务器重启后能自动恢复Docker相关服务。
示例:在部署了多个基于Docker的应用服务的服务器上,为了确保每次开机后这些服务能正常运行,可通过systemctl enable docker
设置Docker自启动。
5. 查看docker运行状态
命令:systemctl status docker
定义:用于查看Docker服务当前的运行状态,包括是否正在运行、运行时间、占用资源情况等信息,方便排查可能出现的问题。
示例:如果您怀疑Docker服务出现异常,比如容器无法正常启动,可先通过systemctl status docker
查看其运行状态,若显示“active (running)”则表示正常运行,若有其他提示则可根据提示进一步排查故障。
6. 查看docker版本号等信息
命令:docker version
或docker info
定义:
docker version
主要用于查看Docker客户端和服务器端的具体版本号信息,了解当前所安装的Docker版本情况。docker info
除了能查看版本信息外,还能获取到更多关于Docker的详细信息,如当前有多少容器正在运行及其状态、本地存储的镜像信息等。
示例:- 若只想知道Docker的版本,可输入
docker version
,会显示类似如下信息:
Client:Version: 20.10.12API version: 1.41
...
Server:Version: 20.10.12API version: 1.41
...
- 若想获取更全面的信息,输入
docker info
,会列出如容器数量、镜像数量、存储驱动等详细内容。
7. docker帮助
命令:
docker --help
:查看Docker的总体文档,了解所有可用命令及其简要说明。docker run --help
:查看docker run
命令的详细帮助文档,获取关于运行容器命令的更多参数及用法说明。
定义:提供关于Docker相关命令的使用说明和帮助信息,方便用户在不熟悉具体命令用法时快速查阅。
示例:当您初次接触Docker,不确定如何使用docker run
命令来运行容器时,可输入docker run --help
,终端会显示该命令的详细参数解释及示例等内容,帮助您正确使用该命令。
二、镜像类命令
1. 查看镜像
命令:docker images
定义:用于列出本地存储的所有Docker镜像信息,包括镜像名称、标签(版本)、镜像ID、创建时间、大小等内容,方便用户了解本地已有的镜像资源。
示例:在终端输入docker images
,可能会显示如下类似信息:
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 54c9d81cbb44 2 days ago 72.9MB
nginx latest 91769060862f 3 days ago 133MB
这里展示了本地有ubuntu
和nginx
两个镜像的相关信息。
2. 搜索镜像
命令:docker search [OPTIONS] 镜像名字
定义:在Docker Hub或其他配置的镜像注册表中搜索指定名称的镜像,可通过添加选项来进一步筛选搜索结果。
示例:若要搜索名为mysql
的镜像,可在终端输入docker search mysql
,会列出一系列与mysql
相关的镜像信息,包括镜像名称、描述、星级评价、是否官方等内容,例如:
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 10000+ yes no
mysql/mysql-server MySQL Server is an open-source relational da… 100+ no no
percona/mysql-server Percona Server is a drop-in replacement for … 10+ no no
3. 拉取镜像
命令:docker pull [镜像名称:标签]
定义:从Docker Hub或其他配置的镜像源中下载指定的镜像到本地存储,若未指定标签,则默认拉取最新版本的镜像。
示例:
- 若要拉取最新版本的
nginx
镜像,可输入docker pull nginx
,Docker会从官方镜像库下载最新的nginx
镜像到本地。 - 若要拉取特定版本的
mysql
镜像,比如mysql:5.7
,则输入docker pull mysql:5.7
,这样就会拉取到指定版本的mysql
镜像。
4. 运行镜像
命令:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
定义:基于指定的镜像创建并启动一个容器,可通过添加不同的选项来配置容器的运行方式,如是否后台运行、端口映射、环境变量设置等。
示例:
- 若要在前台以交互模式运行一个
ubuntu
容器,可输入docker run -it ubuntu /bin/bash
,这里-it
表示以交互模式运行并分配一个伪终端,/bin/bash
是在容器内要执行的命令,启动后会进入容器的命令行界面,可在其中进行各种操作,如安装软件等,按Ctrl+C
可退出容器。 - 若要在后台运行一个
nginx
容器,并将宿主机的80
端口映射到容器的80
端口,可输入docker run -d --name nginx -p 80:80 nginx
,其中-d
表示后台运行并返回容器ID,--name
用于给容器指定名称,-p
用于端口映射。
5. 删除镜像
命令:
docker rmi 镜像名/镜像ID
:用于删除指定的镜像,若镜像正在被容器使用,则会报错。docker rmi -f 镜像名/镜像ID
:强制删除指定的镜像,即使该镜像正在被容器使用,会先停止使用该镜像的容器再删除镜像。
定义:从本地存储中删除不再需要的Docker镜像,以释放磁盘空间。
示例:- 若要删除名为
nginx:latest
的镜像(前提是该镜像未被使用),可输入docker rmi nginx:latest
。 - 若要强制删除名为
mysql
的镜像(不管其是否被使用),可输入docker rmi -f mysql
。 - 若要删除本地所有镜像,可输入
docker rmi -f $(docker images -aq)
,这里-a
表示显示全部镜像,-q
表示只显示镜像ID,通过$( )
将获取到的所有镜像ID作为参数传递给docker rmi -f
命令来实现全部删除。
6. 加载镜像
命令:docker load -i 镜像保存文件位置
定义:用于将之前通过docker save
命令保存的镜像文件加载到本地Docker环境中,使其可再次被使用。
示例:假设之前将一个myimage.tar
的镜像文件保存到了/home/user
目录下,现在要加载该镜像,可在终端输入docker load -i /home/user/myimage.tar
。
7. 保存镜像
命令:docker save 镜像名/镜像ID -o 镜像保存位置和名字
定义:将指定的本地Docker镜像保存为一个.tar
格式的文件,以便在其他环境中进行传输或备份。
示例:若要将本地的tomcat
镜像保存到/myimage.tar
文件中,可输入docker save tomcat -o /myimage.tar
。
三、容器类命令
1. 查看正在运行的容器
命令:docker ps
定义:用于列出当前正在运行的所有Docker容器信息,包括容器ID、镜像名称、所映射的端口、容器状态、容器名称等内容,方便查看正在运行的容器情况。
示例:在终端输入docker ps
,可能会显示如下类似信息:
CONTAINER ID IMAGE PORTS STATUS NAMES
54c9d81cbb44 ubuntu 8080/tcp Up 1 hour my_ubuntu
91769060862f nginx 80:80 Up 2 hours my_nginx
这里展示了两个正在运行的容器my_ubuntu
和my_nginx
的相关信息。
2. 创建容器
命令:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
定义:创建一个新的Docker容器,基于指定的镜像,并可根据所设置的选项来配置容器的各种属性,如名称、运行模式、端口映射、环境变量等。
示例:
- 若要创建一个名为
my_mysql
的MySQL容器,在后台运行,并将宿主机的3306
端口映射到容器的3306
端口,同时设置MySQL的根密码为123456
,可输入:
docker run -d --name my_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
这里-d
表示后台运行,--name
用于指定容器名称,-p
用于端口映射,-e
用于设置环境变量。
3. 启动守护式容器(后台运行)
命令:docker run -d 容器名
定义:以守护模式(后台运行)启动指定名称的容器,容器启动后会在后台持续运行,不会占用当前终端的输入输出,可通过其他命令来查看和管理该容器。
示例:若要在后台启动一个名为redis
的容器,可输入docker run -d redis
,启动后可通过docker ps
等命令查看该容器的运行状态。
4. 停止容器
命令:docker stop 容器名
定义:用于停止正在运行的指定名称的容器,容器会正常停止运行,释放所占用的系统资源。
示例:若要停止名为my_nginx
的容器,可在终端输入docker stop my_nginx
。
5. 启动容器
命令:docker start 容器名
定义:用于启动之前已经停止的指定名称的容器,使其恢复运行状态。
示例:若之前停止了名为my_mysql
的容器,现在要重新启动它,可在终端输入docker start my_mysql
。
6. 进入正在运行的容器
命令:docker exec -it 容器名 bashshell
或docker exec -it 容器名 /bin/bash
定义:在不中断容器运行的情况下,进入到正在运行的指定容器内部,以便在容器内部执行各种命令和操作,如查看容器内文件系统、安装软件等。
示例:若要进入正在运行的my_nginx
容器内部,可输入docker exec -it my_nginx /bin/bash
,进入后会出现容器内部的命令行提示符,可在此基础上进行操作。
7. 强制停止容器
命令:docker kill 容器名
定义:强制立即停止正在运行的指定名称的容器,不考虑容器当前正在执行的任务是否完成,可能会导致容器内数据丢失或未正常保存等情况,一般在容器无法正常停止时使用。
示例:若docker stop
命令无法正常停止名为my_nginx
的容器,可尝试输入docker kill my_nginx
来强制停止它。
8. 删除容器
命令:
docker rm 容器ID
:用于删除指定ID的容器,若容器正在运行,则会报错。docker rm -f 容器ID
:强制删除指定ID的容器,即使容器正在运行,会先强制停止容器再删除。docker rm -f $(docker ps -a -q)
或docker ps -a -q | xargs docker rm
:用于删除所有容器(包括正在运行和未运行的),前者通过将docker ps -a -q
获取到的所有容器ID作为参数传递给docker rm -f
来实现全部删除,后者则是通过管道操作将获取到的容器ID传递给docker rm
命令来实现删除。
定义:从本地环境中删除不再需要的Docker容器,以释放磁盘空间和系统资源。
示例:- 若要删除名为
my_nginx
的容器(前提是该容器已停止),可输入docker rm my_nginx
。 - 若要强制删除正在运行的
my_mysql
容器,可输入docker rm -f my_mysql
。 - 若要删除本地所有容器,可输入
docker rm -f $(docker ps -a -q)
。
9. 查看容器日志
命令:docker logs 容器名
定义:用于查看指定名称容器的运行日志,日志中记录了容器启动、运行过程中发生的各种事件、错误信息等,有助于排查容器运行过程中出现的问题。
示例:若要查看名为my_nginx
的容器的运行日志,可在终端输入docker logs my_nginx
,会显示出类似如下的日志信息:
2025-05-13 10:00:00 [nginx] starting up...
2025-05-13 10:01:00 [nginx] serving requests...
10. 查看容器内运行的进程
命令:docker top 容器名
定义:用于查看指定名称容器内部正在运行的进程信息,包括进程ID、进程名称、CPU使用率、内存使用率等内容,可了解容器内的资源使用情况和运行状态。
示例:若要查看名为my_nginx
的容器内运行的进程,可在终端输入docker top my_nginx
,会显示出类似如下的进程信息:
PID COMMAND CPU% MEM%
1 nginx: master 0.1 0.2
2 nginx: worker 0.2 0.3
11. 查看容器内部细节
命令:docker inspect 容器名
定义:用于获取指定名称容器的详细内部信息,包括容器的配置信息、网络信息、挂载信息、环境变量等所有相关细节,可用于深入了解容器的状态和属性。
示例:若要查看名为my_nginx
的容器的内部细节,可在终端输入docker inspect my_nginx
,会返回一个包含大量详细信息的JSON格式数据,可通过查看该数据来了解容器的各种情况。
12. 创建容器数据卷挂载
命令:docker run -d --name 容器名 -p 端口映射 -v 数据卷名:容器内路径 镜像名
定义:在创建容器时,通过-v
参数来指定数据卷的挂载,将宿主机上的指定数据卷挂载到容器内的指定路径,实现数据的持久化存储和共享,即使容器被删除,数据卷中的数据依然存在。
示例:若要创建一个名为my_nginx
的容器,并将宿主机上的html
数据卷挂载到容器内的/usr/share/nginx/html
路径,同时进行端口映射等操作,可输入:
docker run -d --name my_nginx -p 8# 创建容器并指定数据卷,注意通过 -v 参数来指定数据卷
docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx
在上述示例中,我们创建了一个名为nginx
的容器,它在后台运行(-d
参数)。将主机的80端口映射到容器内的80端口(-p 80:80
),并且通过-v html:/usr/share/nginx/html
将一个名为html
的数据卷挂载到容器内的/usr/share/nginx/html
目录下。这样,容器内该目录下的数据变更可以反映在数据卷中,实现数据的持久化等需求。
13. 查看数据卷
定义:使用docker volume ls
命令可以列出当前系统中所有已创建的Docker数据卷的相关信息。
示例:
docker volume ls
执行该命令后,会显示出各个数据卷的名称、驱动等基本信息,帮助我们了解系统中存在哪些数据卷。
14. 查看数据卷详情
定义:通过docker volume inspect
命令,并指定具体的数据卷名,可以获取该数据卷的详细信息,包括其挂载点、创建时间、所属容器等更多细节内容。
示例:
# 查看数据卷详情
docker volume inspect html
这里假设我们之前创建了名为html
的数据卷,执行上述命令后,会输出关于html
数据卷的详细信息,以便我们深入了解其状态和配置情况。
15. 删除数据卷
定义:使用docker volume rm
命令,并跟上要删除的数据卷名,即可删除指定的数据卷。需要注意的是,只有当数据卷没有被任何容器使用时才能成功删除。
示例:
# 删除数据卷
docker volume rm html
如果html
数据卷当前没有被其他容器挂载或使用,执行上述命令后,该数据卷就会被从系统中删除。
四、网络类
1. 查看网络
定义:docker network ls
命令用于查看当前系统中所有已创建的Docker网络的相关信息,比如网络的名称、驱动、范围等。
示例:
docker network ls
执行此命令后,系统会列出所有已创建的Docker网络的基本信息,方便我们了解网络的总体情况。
2. 创建网络
定义:利用docker network create
命令,并指定网络名,就可以在系统中创建一个新的Docker网络。
示例:
# 创建网络
docker network create hmall
上述命令创建了一个名为hmall
的Docker网络,后续可以将容器连接到这个网络中,以实现容器之间的网络通信等功能。
3. 查看网络数据源
定义:通过docker network inspect
命令,并指定具体的网络名,可以查看该网络的详细信息,包括网络中的容器连接情况、网络配置参数等。
示例:
# 查看网络数据源
docker network inspect hmall
假设我们之前创建了hmall
网络,执行该命令后,会输出关于hmall
网络的详细信息,有助于我们深入了解网络的具体状态和配置细节。
4. 删除网络
定义:使用docker network rm
命令,并跟上要删除的网络名,就可以删除指定的Docker网络。
示例:
# 删除网络
docker network rm hmall
如果hmall
网络当前没有被任何容器使用,执行上述命令后,该网络就会被从系统中删除。
五、Docker Compose
1. 查看帮助
定义:docker-compose -h
命令用于查看Docker Compose的帮助信息,它会列出所有可用的命令选项及其简要说明,方便我们在使用过程中快速了解各个命令的功能和用法。
示例:
docker-compose -h
执行该命令后,会在终端显示出详细的帮助内容,我们可以根据需要查看具体命令的用法指导。
2. 启动所有服务
定义:docker-compose up
命令用于启动在docker-compose.yml
文件中定义的所有服务。如果添加-d
参数,则可以让服务在后台运行,不占用当前终端的输入输出。
示例:
# 启动所有服务
docker-compose up
# 后台运行
docker-compose up -d
例如,我们有一个docker-compose.yml
文件定义了多个服务,执行上述命令后,这些服务就会按照配置启动起来。
3. 停止并删除容器、网络、卷、镜像。
定义:docker-compose down
命令会停止并删除由docker-compose.yml
文件启动的容器、网络、数据卷以及相关的镜像(如果没有其他地方使用这些镜像)等资源,实现对整个应用环境的清理。
示例:
docker-compose down
当我们想要彻底清理之前通过docker-compose
启动的应用环境时,执行该命令即可完成相关资源的清理操作。
4. 进入容器实例内部
定义:使用docker-compose exec
命令,并指定yml
里面的服务ID,可以进入到对应的容器实例内部,以便在容器内执行各种命令和操作。
示例:
假设在docker-compose.yml
文件中有一个服务定义,其服务ID为my_service
,要进入该容器内部可执行如下命令:
docker-compose exec my_service
进入容器后,就可以像在普通的Linux终端一样在容器内进行各种操作了。
5. 展示容器
定义:docker-compose ps
命令用于展示当前由docker-compose.yml
文件启动的所有容器的相关信息,比如容器的名称、状态、端口映射等。
示例:
docker-compose ps
执行该命令后,会在终端列出所有相关容器的详细信息,方便我们了解各个容器的运行状态。
6. 展示进程
定义:docker-compose top
命令用于展示由docker-compose.yml
文件启动的所有容器内的进程信息,包括进程的ID、名称、用户等。
示例:
docker-compose top
执行该命令后,会输出各个容器内正在运行的进程的相关信息,有助于我们了解容器内的运行情况。
7. 查看容器输出日志
定义:通过docker-compose logs
命令,并指定yml
里面的服务ID,可以查看对应服务所在容器的输出日志,了解容器内应用的运行情况、报错信息等。
示例:
假设在docker-compose.yml
文件中有一个服务定义,其服务ID为my_service
,要查看该容器的输出日志可执行如下命令:
docker-compose logs my_service
执行该命令后,会在终端显示出该容器内应用的运行日志信息。
8. 检查配置
定义:docker-compose config
命令用于检查docker-compose.yml
文件的配置是否正确。如果添加-q
参数(即docker-compose config -q
),则只有在配置有问题时才会输出相关信息,否则无输出,这样可以方便地在脚本等场景中进行配置检查。
示例:
# 检查配置
docker-compose config
# 检查配置,有问题才有输出
docker-compose config -q
在修改了docker-compose.yml
文件后,执行上述命令可以确保配置的正确性,避免因配置错误导致应用无法正常启动等问题。
9. 启动服务
定义:docker-compose start
命令用于启动在docker-compose.yml
文件中已经定义但当前处于停止状态的服务。
示例:
docker-compose start
当我们之前通过docker-compose
停止了某些服务,现在想要重新启动它们时,执行该命令即可。
10. 重启服务
定义:docker-compose restart
命令用于对在docker-compose.yml
文件中定义的服务进行重启操作,它会先停止服务,然后再重新启动。
示例:
docker-compose restart
如果我们发现某个服务运行出现异常,执行该命令可以尝试重新启动该服务来解决问题。
11. 停止服务
定义:docker-compose stop
命令用于停止在docker-compose.yml
文件中定义的服务。
示例:
docker-compose stop
当我们想要暂时停止某个服务的运行时,执行该命令即可实现。
六、其他
1. 命令别名
在日常使用Docker的过程中,我们可以通过设置命令别名来简化一些常用命令的输入。
定义:通过修改/root/.bashrc
文件,在其中添加自定义的别名定义,然后执行source /root/.bashrc
命令使别名生效。
示例:
首先,使用文本编辑器(如vi
)打开/root/.bashrc
文件:
vi /root/.bashrc
然后在文件中添加如下内容(这里是一些常见的Docker相关别名示例):
#.bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias dps='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"'
alias dis='docker images'
添加完成后,保存并退出文件(在vi
中可通过:wq
命令保存并退出)。最后执行如下命令使别名生效:
source /root/.bashrc
之后,我们就可以在终端中直接使用这些别名来执行相应的命令,比如输入dps
就相当于执行docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"
,这样可以大大提高命令输入的效率。