> 技术文档 > Docker相关命令详解_docker 命令

Docker相关命令详解_docker 命令


一、安装配置docker

1.一键安装命令
sudo curl -fsSL https://get.docker.com| bash -s docker --mirror Aliyun

备用命令(每天自动从官网定时同步)

sudo curl -fsSL https://github.com/tech-shrimp/docker_installer/releases/download/latest/linux.sh| bash -s docker --mirror Aliyun

备用2(如果Github访问不了,可以使用Gitee的链接)

sudo curl -fsSL https://gitee.com/tech-shrimp/docker_installer/releases/download/latest/linux.sh| bash -s docker --mirror Aliyun

启动docker

sudo service docker start
2.Linux配置镜像
sudo vi /etc/docker/daemon.json

输入下列内容,最后按ESC,输入 :wq! 保存退出。

{\"registry-mirrors\":[\"https://docker.rainbond.cc\",\"https://docker.mirrors.sjtug.sjtu.edu.cn\",\"https://docker.m.daocloud.io\",\"https://docker.itelyou.cf\",\"https://noohub.ru\",\"https://docker.fxxk.dedyn.io\",\"https://huecker.io\",\"https://dockerhub.timeweb.cloud\",\"https://registry.cn-hangzhou.aliyuncs.com\",\"https://dockerproxy.com\",\"https://docker.mirrors.ustc.edu.cn\",\"https://docker.nju.edu.cn\",\"https://xx4bwyg2.mirror.aliyuncs.com\",\"https://f1361db2.m.daocloud.io\",\"https://registry.docker-cn.com\",\"https://hub-mirror.c.163.com\",\"https://docker.1panel.live\",\"https://hub.rat.dev\"]}

重启docker

sudo service docker restart

二、启动类命令

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 versiondocker info

定义:

docker version 主要用于查看Docker客户端和服务器端的具体版本号信息,了解当前所安装的Docker版本情况。
docker info除了能查看版本信息外,还能获取到更多关于Docker的详细信息,如当前有多少容器正在运行及其状态、本地存储的镜像信息等。

示例:

若只想知道Docker的版本,可输入docker version ,会显示类似如下信息:

 Version: 20.10.12 API version: 1.41...Server: Version: 20.10.12 API 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 SIZEubuntu latest 54c9d81cbb44 2 days ago 72.9MBnginx latest 91769060862f 3 days ago 133MB

这里展示了本地有ubuntunginx两个镜像的相关信息。

2. 搜索镜像

命令:docker search [OPTIONS]镜像名字
定义:在Docker Hub或其他配置的镜像注册表中搜索指定名称的镜像,可通过添加选项来进一步筛选搜索结果。
示例:若要搜索名为mysql的镜像,可在终端输入docker search mysql,会列出一系列与mysql相关的镜像信息,包括镜像名称、描述、星级评价、是否官方等内容,例如:

NAME DESCRIPTION  STARS OFFICIAL AUTOMATEDmysql MySQL is a widely used, open-source relation… 10000+ yes nomysql/mysql-server MySQL Server is an open-source relational da… 100+ no nopercona/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 NAMES54c9d81cbb44 ubuntu 8080/tcp Up 1 hour my_ubuntu91769060862f 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
AI写代码
1
这里-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.22 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 functionsalias 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}}\",这样可以大大提高命令输入的效率。