Docker常用的命令
2025-08-22 15:57:20,

本章将和大家分享DoC++ker中常用的命令。废话不多说,下面我们直接进入主题。

1、配置镜像加速源

拉取镜像慢,配置加载镜像地址:

创建一个或修改 /etc/docker/daemon.json 文件(如果不存在则创建):

vim /etc/docker/daemon.json

并添加或修改registry-mirrors字段,例如:

{
    "registry-mirrors": [
        "https://dockerproxy.com""https://docker.chenby.cn""https://dockerpull.com""https://dockerhub.jobcher.com""https://docker.mirrors.ustc.edu.cn""https://hub.uuuadc.top""https://mirror.baidubce.com""https://mirror.ccs.tencentyun.com""https://docker.m.daocloud.io""https://docker.nju.edu.cn""https://docker.mirrors.ustc.edu.cn""https://hus-mirror.c.163.com""https://dockerhub.azk8s.cn""https://registry.cn-hangzhou.aliyuncs.com"
    ]
}

或者

{
    "registry-mirrors": [
        "https://hub.uuuadc.top""https://docker.anyhub.us.kg""https://dockerhub.jobcher.com""https://dockerhub.icu""https://docker.ckyl.me""https://docker.awsl9527.cn"
    ]
}

或者

{
    "registry-mirrors": [
        "https://docker.m.daocloud.io""https://docker.1panel.live"
    ]
}

配置镜像加速源:

保存文件并退出编辑器。

重新加载配置文件并重启Docker服务以使配置生效:

sudo systemctl daemon-reload
sudo systemctl restart docker

验证配置:

docker info

重启Docker服务后,可以通过运行docker info命令来查看Docker的配置信息,确认Registry Mirrors部分是否已包含你设置的镜像加速器地址。

注意:镜像加速源可能会随时间而变化。

2、拉取镜像

此处以拉取 nginx 镜像为例:

docker pull nginx

3、创建并启动一个新的容器

docker run 命令用于在 Docker 中创建并启动一个新的容器。

docker run -d -p 8090:80 --name nginx-container nginx:latest

示例:

[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    5ef79149e0ec   10 days aGo   188MB
[root@localhost ~]# docker run -d -p 8090:80 --name nginx-container nginx:latest
96a5d9d2505293a05e1d07640f308576856b60147393c0764078f4d3163f8214
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                   CREATED          STATUS          PORTS                                   NAMES
96a5d9d25052   nginx:latest   "/docker-entrypoint.…"   19 seconds ago   Up 18 seconds   0.0.0.0:8090->80/tcp, :::8090->80/tcp   nginx-container
[root@localhost ~]#

参数说明:

  • -d:这个选项表示以“分离模式”运行容器,即容器在后台运行。
  • -p 8090:80 :这个选项用于映射容器的端口到宿主机的端口。在这个例子中,它将容器内的80端口(Nginx默认的服务端口)映射到宿主机的8090端口。这意味着,当你访问宿主机的8090端口时,实际上是在访问容器中Nginx服务的80端口。
  • --name nginx-container:这个选项用于指定容器的名称,这里是nginx-container。为容器指定一个名称后,你可以通过该名称来引用容器,而不是使用容器ID或随机生成的名称。
  • nginx:latest:这指定了要使用的Docker镜像,这里是Nginx的最新版本(标记为latest)。
  • -it:结合使用 -i(交互式操作)和 -t(分配一个伪终端)。通常用于需要交互式会话的容器。
  • -p:发布容器端口到宿主机。格式为 <宿主机端口>:<容器端口> 或 <宿主机端口>:<容器端口>/协议>。注意 -p 后面直接跟端口映射,并不直接指定 IP 地址。IP 地址通常在 --network 参数中通过自定义网络来指定容器的网络配置。
  • -v:挂载卷,格式为 <宿主机路径>:<容器内路径>:<选项>。<选项> 是可选的,比如 ro 表示只读。
  • --volumes-from:从指定的容器挂载卷。这允许你从另一个容器继承卷设置。

查看日志:

docker logs 96a5d9d25052(容器的ID)

示例:

{
    "registry-mirrors": [
        "https://dockerproxy.com""https://docker.chenby.cn""https://dockerpull.com""https://dockerhub.jobcher.com""https://docker.mirrors.ustc.edu.cn""https://hub.uuuadc.top""https://mirror.baidubce.com""https://mirror.ccs.tencentyun.com""https://docker.m.daocloud.io""https://docker.nju.edu.cn""https://docker.mirrors.ustc.edu.cn""https://hus-mirror.c.163.com""https://dockerhub.azk8s.cn""https://registry.cn-hangzhou.aliyuncs.com"
    ]
}0

容器启动成功后我们通过浏览器来访问一下nginx服务:

可以发现,nginx运行成功了。

4、inspect命令

docker inspect 命令是 Docker 中的一个非常有用的命令,它允许你获取 Docker 对象的详细信息,包括容器(containers)、镜像(images)、网络(networks)、卷(volumes)和插件(plugins)等。当你需要深入了解 Docker 对象的配置和状态时,这个命令就非常有用了。
对于容器(containers),docker inspect 命令可以显示容器的配置和状态信息,如网络设置、环境变量、挂载的卷、启动命令等。

基本语法:

{
    "registry-mirrors": [
        "https://dockerproxy.com""https://docker.chenby.cn""https://dockerpull.com""https://dockerhub.jobcher.com""https://docker.mirrors.ustc.edu.cn""https://hub.uuuadc.top""https://mirror.baidubce.com""https://mirror.ccs.tencentyun.com""https://docker.m.daocloud.io""https://docker.nju.edu.cn""https://docker.mirrors.ustc.edu.cn""https://hus-mirror.c.163.com""https://dockerhub.azk8s.cn""https://registry.cn-hangzhou.aliyuncs.com"
    ]
}1
  • NAME|ID:指定要检查的 Docker 对象的名称或ID。你可以指定多个对象,用空格分隔。
  • [OPTIONS]:可以使用的选项,但大多数情况下,直接运行 docker inspect 而不带任何选项就足够了。

示例:

查看单个容器的详细信息

{
    "registry-mirrors": [
        "https://dockerproxy.com""https://docker.chenby.cn""https://dockerpull.com""https://dockerhub.jobcher.com""https://docker.mirrors.ustc.edu.cn""https://hub.uuuadc.top""https://mirror.baidubce.com""https://mirror.ccs.tencentyun.com""https://docker.m.daocloud.io""https://docker.nju.edu.cn""https://docker.mirrors.ustc.edu.cn""https://hus-mirror.c.163.com""https://dockerhub.azk8s.cn""https://registry.cn-hangzhou.aliyuncs.com"
    ]
}2

这里 nginx-container 是你想要查看的容器的名称或ID。

5、启动已存在容器

{
    "registry-mirrors": [
        "https://dockerproxy.com""https://docker.chenby.cn""https://dockerpull.com""https://dockerhub.jobcher.com""https://docker.mirrors.ustc.edu.cn""https://hub.uuuadc.top""https://mirror.baidubce.com""https://mirror.ccs.tencentyun.com""https://docker.m.daocloud.io""https://docker.nju.edu.cn""https://docker.mirrors.ustc.edu.cn""https://hus-mirror.c.163.com""https://dockerhub.azk8s.cn""https://registry.cn-hangzhou.aliyuncs.com"
    ]
}3

6、查看docker容器列表

{
    "registry-mirrors": [
        "https://dockerproxy.com""https://docker.chenby.cn""https://dockerpull.com""https://dockerhub.jobcher.com""https://docker.mirrors.ustc.edu.cn""https://hub.uuuadc.top""https://mirror.baidubce.com""https://mirror.ccs.tencentyun.com""https://docker.m.daocloud.io""https://docker.nju.edu.cn""https://docker.mirrors.ustc.edu.cn""https://hus-mirror.c.163.com""https://dockerhub.azk8s.cn""https://registry.cn-hangzhou.aliyuncs.com"
    ]
}4

7、停止容器

{
    "registry-mirrors": [
        "https://dockerproxy.com""https://docker.chenby.cn""https://dockerpull.com""https://dockerhub.jobcher.com""https://docker.mirrors.ustc.edu.cn""https://hub.uuuadc.top""https://mirror.baidubce.com""https://mirror.ccs.tencentyun.com""https://docker.m.daocloud.io""https://docker.nju.edu.cn""https://docker.mirrors.ustc.edu.cn""https://hus-mirror.c.163.com""https://dockerhub.azk8s.cn""https://registry.cn-hangzhou.aliyuncs.com"
    ]
}5

8、进入容器

{
    "registry-mirrors": [
        "https://dockerproxy.com""https://docker.chenby.cn""https://dockerpull.com""https://dockerhub.jobcher.com""https://docker.mirrors.ustc.edu.cn""https://hub.uuuadc.top""https://mirror.baidubce.com""https://mirror.ccs.tencentyun.com""https://docker.m.daocloud.io""https://docker.nju.edu.cn""https://docker.mirrors.ustc.edu.cn""https://hus-mirror.c.163.com""https://dockerhub.azk8s.cn""https://registry.cn-hangzhou.aliyuncs.com"
    ]
}6

从这个容器退出,不会导致容器的停止,推荐大家使用

9、查看容器的某些进程PID

{
    "registry-mirrors": [
        "https://dockerproxy.com""https://docker.chenby.cn""https://dockerpull.com""https://dockerhub.jobcher.com""https://docker.mirrors.ustc.edu.cn""https://hub.uuuadc.top""https://mirror.baidubce.com""https://mirror.ccs.tencentyun.com""https://docker.m.daocloud.io""https://docker.nju.edu.cn""https://docker.mirrors.ustc.edu.cn""https://hus-mirror.c.163.com""https://dockerhub.azk8s.cn""https://registry.cn-hangzhou.aliyuncs.com"
    ]
}7

10、删除容器

{
    "registry-mirrors": [
        "https://dockerproxy.com""https://docker.chenby.cn""https://dockerpull.com""https://dockerhub.jobcher.com""https://docker.mirrors.ustc.edu.cn""https://hub.uuuadc.top""https://mirror.baidubce.com""https://mirror.ccs.tencentyun.com""https://docker.m.daocloud.io""https://docker.nju.edu.cn""https://docker.mirrors.ustc.edu.cn""https://hus-mirror.c.163.com""https://dockerhub.azk8s.cn""https://registry.cn-hangzhou.aliyuncs.com"
    ]
}8

11、查看镜像列表

{
    "registry-mirrors": [
        "https://dockerproxy.com""https://docker.chenby.cn""https://dockerpull.com""https://dockerhub.jobcher.com""https://docker.mirrors.ustc.edu.cn""https://hub.uuuadc.top""https://mirror.baidubce.com""https://mirror.ccs.tencentyun.com""https://docker.m.daocloud.io""https://docker.nju.edu.cn""https://docker.mirrors.ustc.edu.cn""https://hus-mirror.c.163.com""https://dockerhub.azk8s.cn""https://registry.cn-hangzhou.aliyuncs.com"
    ]
}9

12、启动所有容器

{
    "registry-mirrors": [
        "https://hub.uuuadc.top""https://docker.anyhub.us.kg""https://dockerhub.jobcher.com""https://dockerhub.icu""https://docker.ckyl.me""https://docker.awsl9527.cn"
    ]
}0

13、修改Docker容器内的文件

1)使用docker exec命令和文本编辑器

如果你只是想临时修改容器内的文件,并且容器内有可用的文本编辑器(如vi、nano等),你可以使用docker exec命令来启动一个交互式shell会话,并在这个会话中编辑文件。例如:

{
    "registry-mirrors": [
        "https://hub.uuuadc.top""https://docker.anyhub.us.kg""https://dockerhub.jobcher.com""https://dockerhub.icu""https://docker.ckyl.me""https://docker.awsl9527.cn"
    ]
}1

2)使用docker cp命令

如果你想要从宿主机上直接修改文件,然后将其复制回容器内,可以使用docker cp命令。首先,从容器中将文件复制到宿主机:

{
    "registry-mirrors": [
        "https://hub.uuuadc.top""https://docker.anyhub.us.kg""https://dockerhub.jobcher.com""https://dockerhub.icu""https://docker.ckyl.me""https://docker.awsl9527.cn"
    ]
}2

然后,在宿主机上修改文件,修改完成后,再将文件复制回容器:

{
    "registry-mirrors": [
        "https://hub.uuuadc.top""https://docker.anyhub.us.kg""https://dockerhub.jobcher.com""https://dockerhub.icu""https://docker.ckyl.me""https://docker.awsl9527.cn"
    ]
}3

14、创建容器时指定IP

Docker创建容器时默认采用bridge网络,自动分配ip,不允许自己指定。

在实际部署中,我们需要指定容器ip,不允许其自动分配ip,尤其是搭建集群时,固定ip是必须的。

我们可以创建自己的bridge网络,例如:mynet,创建容器的时候指定网络为mynet并指定ip即可。

15、查看网络模式

{
    "registry-mirrors": [
        "https://hub.uuuadc.top""https://docker.anyhub.us.kg""https://dockerhub.jobcher.com""https://dockerhub.icu""https://docker.ckyl.me""https://docker.awsl9527.cn"
    ]
}4

16、创建一个新的bridge网络

{
    "registry-mirrors": [
        "https://hub.uuuadc.top""https://docker.anyhub.us.kg""https://dockerhub.jobcher.com""https://dockerhub.icu""https://docker.ckyl.me""https://docker.awsl9527.cn"
    ]
}5

17、查看网络信息

{
    "registry-mirrors": [
        "https://hub.uuuadc.top""https://docker.anyhub.us.kg""https://dockerhub.jobcher.com""https://dockerhub.icu""https://docker.ckyl.me""https://docker.awsl9527.cn"
    ]
}6

18、创建容器并指定容器ip

{
    "registry-mirrors": [
        "https://hub.uuuadc.top""https://docker.anyhub.us.kg""https://dockerhub.jobcher.com""https://dockerhub.icu""https://docker.ckyl.me""https://docker.awsl9527.cn"
    ]
}7

19、查看数据卷相关信息

{
    "registry-mirrors": [
        "https://hub.uuuadc.top""https://docker.anyhub.us.kg""https://dockerhub.jobcher.com""https://dockerhub.icu""https://docker.ckyl.me""https://docker.awsl9527.cn"
    ]
}8

20、删除镜像

1)删除单个镜像

{
    "registry-mirrors": [
        "https://hub.uuuadc.top""https://docker.anyhub.us.kg""https://dockerhub.jobcher.com""https://dockerhub.icu""https://docker.ckyl.me""https://docker.awsl9527.cn"
    ]
}9

其中 <IMAGE_ID> 是你想要删除的镜像的 ID。你可以使用 { "registry-mirrors": [ "https://dockerproxy.com""https://docker.chenby.cn""https://dockerpull.com""https://dockerhub.jobcher.com""https://docker.mirrors.ustc.edu.cn""https://hub.uuuadc.top""https://mirror.baidubce.com""https://mirror.ccs.tencentyun.com""https://docker.m.daocloud.io""https://docker.nju.edu.cn""https://docker.mirrors.ustc.edu.cn""https://hus-mirror.c.163.com""https://dockerhub.azk8s.cn""https://registry.cn-hangzhou.aliyuncs.com" ] }9 命令来查看所有镜像及其 ID。

2)通过镜像名称和标签删除

{
    "registry-mirrors": [
        "https://docker.m.daocloud.io""https://docker.1panel.live"
    ]
}0

例如,要删除名为 ubuntu 且标签为 latest 的镜像,你可以使用:

{
    "registry-mirrors": [
        "https://docker.m.daocloud.io""https://docker.1panel.live"
    ]
}1

3)强制删除镜像

如果镜像正在被容器使用,默认情况下 Docker 不会允许你删除它。你可以使用 -f 选项来强制删除镜像,即使它正在被容器使用(注意:这可能会导致正在使用该镜像的容器出现问题)。

{
    "registry-mirrors": [
        "https://docker.m.daocloud.io""https://docker.1panel.live"
    ]
}2

4)删除多个镜像

你可以一次性删除多个镜像,只需在命令中列出它们的 ID 或名称即可:

{
    "registry-mirrors": [
        "https://docker.m.daocloud.io""https://docker.1panel.live"
    ]
}3

5)删除所有未使用的镜像

Docker 提供了一个命令来删除所有未被容器使用的镜像,即悬挂的(dangling)镜像。你可以使用以下命令:

{
    "registry-mirrors": [
        "https://docker.m.daocloud.io""https://docker.1panel.live"
    ]
}4

如果你还想删除所有未被任何容器引用的镜像(而不仅仅是悬挂的镜像),可以使用 -a 选项:

{
    "registry-mirrors": [
        "https://docker.m.daocloud.io""https://docker.1panel.live"
    ]
}4 -a

注意,这些命令会删除符合条件的所有镜像,因此在使用前请确保你不会误删重要的镜像。

 

至此本文就全部介绍完了,希望对您有所帮助!