Docker 镜像常用命令总结

目录

[1. Docker镜像相关命令(重点掌握)](#1. Docker镜像相关命令(重点掌握))

[1.1 docker pull 镜像名称 [:tag] 拉取镜像](#1.1 docker pull 镜像名称 [:tag] 拉取镜像)

[1.2 docker search 镜向名称 (查询某个镜像)](#1.2 docker search 镜向名称 (查询某个镜像))

[1.3 docker images 列出当前主机上所有镜像](#1.3 docker images 列出当前主机上所有镜像)

[1.4 docker rmi 镜像ID 删除镜像](#1.4 docker rmi 镜像ID 删除镜像)

[1.5 docker system df 查看所有镜像容器所占空间](#1.5 docker system df 查看所有镜像容器所占空间)

[2. Docker 虚悬镜像是什么?](#2. Docker 虚悬镜像是什么?)

[3. 启动Docker](#3. 启动Docker)

[4. 查看Docker运行状态](#4. 查看Docker运行状态)

[5. 重启Docker](#5. 重启Docker)

[6. 停止Dokcer](#6. 停止Dokcer)

[7. 配置开机启动docker](#7. 配置开机启动docker)

[8. 查看 docker 所有命令](#8. 查看 docker 所有命令)


1. Docker镜像相关命令(重点掌握)

1.1 docker pull 镜像名称 [:tag] 拉取镜像

可以看到我在后面加上了[:tag],这个是版本号的意思,因为同一个镜像也许会有多种不同的版本,如果你加,默认就是给你拉取 latest最新版的,这一点要记住哦!

如下所示,我拉取 redis 镜像,它默认就是下载的最新的。

bash 复制代码
[root@localhost docker]# docker pull redis
Using default tag: latest
latest: Pulling from library/redis
a378f10b3218: Pull complete 
b266cd8112a6: Pull complete 
7ba86e6448de: Pull complete 
3aeb7c9e9a5f: Pull complete 
de3be2a98bda: Pull complete 
4f4fb700ef54: Pull complete 
98e18d21aa3b: Pull complete 
Digest: sha256:1f1bd4adf5dabf173b235ba373faef55f3ad53394791d1473763bf5a2181780d
Status: Downloaded newer image for redis:latest
docker.io/library/redis:latest

如下,我运行此命令查询 nginx 镜像都有哪些,返回了一大堆

bash 复制代码
[root@localhost ~]# docker search nginx
NAME                               DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                              Official build of Nginx.                        19145     [OK]       
unit                               Official build of NGINX Unit: Universal Web ...   15        [OK]       
nginxinc/nginx-unprivileged        Unprivileged NGINX Dockerfiles                  127                  
nginx/nginx-ingress                NGINX and  NGINX Plus Ingress Controllers fo...   82                   
nginx/nginx-prometheus-exporter    NGINX Prometheus Exporter for NGINX and NGIN...   33                   
nginxinc/nginx-s3-gateway          Authenticating and caching gateway based on ...   2                    
nginx/unit                         This repository is retired, use the Docker o...   64                   
nginx/nginx-ingress-operator       NGINX Ingress Operator for NGINX and NGINX P...   1                    
nginxinc/amplify-agent             NGINX Amplify Agent docker repository           1                    
nginx/nginx-quic-qns               NGINX QUIC interop                              1                    
nginxinc/ingress-demo              Ingress Demo                                    4                    
nginxproxy/nginx-proxy             Automated Nginx reverse proxy for docker con...   115                  
nginxproxy/acme-companion          Automated ACME SSL certificate generation fo...   125                  
bitnami/nginx                      Bitnami nginx Docker Image                      176                  [OK]
bitnami/nginx-ingress-controller   Bitnami Docker Image for NGINX Ingress Contr...   30                   [OK]
ubuntu/nginx                       Nginx, a high-performance reverse proxy & we...   102                  
nginxinc/nginmesh_proxy_debug                                                      0                    
nginxproxy/docker-gen              Generate files from docker container meta-da...   12                   
nginxinc/mra-fakes3                                                                0                    
kasmweb/nginx                      An Nginx image based off nginx:alpine and in...   6                    
rancher/nginx-ingress-controller                                                   11                   
nginxinc/ngx-rust-tool                                                             0                    
nginxinc/mra_python_base                                                           0                    
nginxinc/nginmesh_proxy_init                                                       0

如果有同学觉得比较多,我们可以在 search 后面加后缀 --limit N 显示几个,如下 --limit 5 表示显示排行榜前5个。

bash 复制代码
[root@localhost ~]# docker search --limit 5 redis
NAME                       DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
redis                      Redis is an open source key-value store that...   12425     [OK]       
redislabs/redisearch       Redis With the RedisSearch module pre-loaded...   59                   
redislabs/redisinsight     RedisInsight - The GUI for Redis                91                   
redis/redis-stack-server   redis-stack-server installs a Redis server w...   57                   
redislabs/rebloom          A probablistic datatypes module for Redis       24                   [OK]

最上面的NAME,DESCRIPT,STARTS,OFFICIAL,AUTOMATED是参数,这些参数的含义如下图中所示,一般情况下选择第一个镜像就可以了,第一个通常是官方镜像。

1.3 docker images 列出当前主机上所有镜像

刚才我已经拉取了一个 redis 镜像,下面我们使用这个命令查看一下,可以看到已经查询到了

TAG:镜像版本;

IMAGE ID:镜像ID;

SIZE:镜像大小;

bash 复制代码
[root@localhost docker]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
redis        latest    e579380d4317   6 days ago   138MB
1.4 docker rmi 镜像ID 删除镜像

我将刚才拉取下来的 redis 镜像再删除,然后 docker images 重新查看,可以看到,此时已经没有镜像了,redis 镜像已经没有了。

还有一点需要注意,后面的镜像ID可以写多个,表示删除多个。

bash 复制代码
[root@localhost docker]# docker rmi e579380d4317
Untagged: redis:latest
Untagged: redis@sha256:1f1bd4adf5dabf173b235ba373faef55f3ad53394791d1473763bf5a2181780d
Deleted: sha256:e579380d43178bcee8c8b219063605f45e035238335db5d3b3e95c5e38145700
Deleted: sha256:b1f68d2cfdde30e7bfe3002347c37bf6b872216fa8faaa612d06c9ec59668021
Deleted: sha256:562c06f2b95aea14af2496f9d4b9206efd39680b547232a7d4077137eb615d04
Deleted: sha256:28a572fe2e73a8bf90e92ed1a072c9227d019cdc202c2c88cd34c44f7ab45eee
Deleted: sha256:02b286a9390e2cd90268def73af145e1d09ac52aaa664d83bd0930373b2d62e2
Deleted: sha256:3d1901f414d075be1012ec6ba638b0b2005c79d414f677e8317f3fb7a1cab474
Deleted: sha256:3441e2762aa905a8939c32d5ac0d80e7f7222773fa1095825bfe9da360859be9
Deleted: sha256:cb4596cc145400fb1f2aa56d41516b39a366ecdee7bf3f9191116444aacd8c90

[root@localhost docker]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
1.5 docker system df 查看所有镜像容器所占空间

上面我说到了 docker images 可以查看所有镜像,而 docker system df 则可以帮助我们查看所有镜像/容器/数据卷占用的空间(这里补充一句,各个镜像独立运行,相互隔离,每个运行的镜像就是一个容器)

刚才我拉取了三个镜像,如下所示,运行命令之后,docker 就会把容器,镜像,数据卷各自占用的比例列出,这里我一个都没有运行,全都只是拉取下来的景象,所以占比为100%

bash 复制代码
[root@localhost docker]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    593aee2afb64   6 hours ago    187MB
redis        latest    e579380d4317   6 days ago     138MB
mysql        latest    ae2502152260   2 months ago   574MB
[root@localhost docker]# 
[root@localhost docker]# docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          3         0         823.7MB   823.7MB (100%)
Containers      0         0         0B        0B
Local Volumes   0         0         0B        0B
Build Cache     0         0         0B        0B

2. Docker 虚悬镜像是什么?

这也算是一个小的面试题,通过上面的学习,我们学会了使用 docker images 查看当前所有已有的docker 镜像。

但有些时候,查询出来的镜像的名字和版本都是none,只有镜像ID和大小,如下图。也就是说这个镜像我们不知道它是什么东西,不能确定,这种镜像称之为虚悬镜像。

这种镜像通常没什么用,建议删除,有时候是因为镜像下载过程中出现了问题,有时候是因为构建镜像时出现了问题。

3. 启动Docker

systemctl start docker

如下,在 Linux 操作系统中,只要没有报错就代表启动成功

bash 复制代码
[zhangsir@localhost ~]$ systemctl start docker

4. 查看Docker运行状态

systemctl status docker

刚才启动成功,查看一下运行状态,如下所示,Active为running表示正在运行中

bash 复制代码
[root@localhost ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2023-10-25 11:33:51 CST; 6s ago
     Docs: https://docs.docker.com
 Main PID: 9895 (dockerd)
    Tasks: 7
   Memory: 71.2M
   CGroup: /system.slice/docker.service
           └─9895 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Oct 25 11:33:50 localhost.localdomain systemd[1]: Starting Docker Application Container Engine...
Oct 25 11:33:50 localhost.localdomain dockerd[9895]: time="2023-10-25T11:33:50.961478252+08:00" level=info msg="Starting up"
Oct 25 11:33:51 localhost.localdomain dockerd[9895]: time="2023-10-25T11:33:51.003124975+08:00" level=info msg="[graphdriver] using prior storage driver: overlay2"
Oct 25 11:33:51 localhost.localdomain dockerd[9895]: time="2023-10-25T11:33:51.003454992+08:00" level=info msg="Loading containers: start."
Oct 25 11:33:51 localhost.localdomain dockerd[9895]: time="2023-10-25T11:33:51.063846884+08:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address"
Oct 25 11:33:51 localhost.localdomain dockerd[9895]: time="2023-10-25T11:33:51.086338615+08:00" level=info msg="Loading containers: done."
Oct 25 11:33:51 localhost.localdomain dockerd[9895]: time="2023-10-25T11:33:51.109714791+08:00" level=info msg="Docker daemon" commit=a61e2b4 graphdriver=overlay2 version=24.0.5
Oct 25 11:33:51 localhost.localdomain dockerd[9895]: time="2023-10-25T11:33:51.109756158+08:00" level=info msg="Daemon has completed initialization"
Oct 25 11:33:51 localhost.localdomain dockerd[9895]: time="2023-10-25T11:33:51.129061470+08:00" level=info msg="API listen on /run/docker.sock"
Oct 25 11:33:51 localhost.localdomain systemd[1]: Started Docker Application Container Engine.

5. 重启Docker

systemctl restart docker

重启 docker,命令与启动docker相似,加了一个前缀 "re",只要没有报错就代表重启成功,在查询一下状态,也显示正在运行中

bash 复制代码
[root@localhost ~]# systemctl restart docker
[root@localhost ~]# 
[root@localhost ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2023-10-25 11:35:37 CST; 1min 21s ago
     Docs: https://docs.docker.com
 Main PID: 10094 (dockerd)
    Tasks: 7
   Memory: 30.2M
   CGroup: /system.slice/docker.service
           └─10094 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Oct 25 11:35:36 localhost.localdomain systemd[1]: Starting Docker Application Container Engine...
Oct 25 11:35:37 localhost.localdomain dockerd[10094]: time="2023-10-25T11:35:37.065508073+08:00" level=info msg="Starting up"
Oct 25 11:35:37 localhost.localdomain dockerd[10094]: time="2023-10-25T11:35:37.082201618+08:00" level=info msg="[graphdriver] using prior storage driver: overlay2"
Oct 25 11:35:37 localhost.localdomain dockerd[10094]: time="2023-10-25T11:35:37.082323526+08:00" level=info msg="Loading containers: start."
Oct 25 11:35:37 localhost.localdomain dockerd[10094]: time="2023-10-25T11:35:37.136339904+08:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address"
Oct 25 11:35:37 localhost.localdomain dockerd[10094]: time="2023-10-25T11:35:37.153493234+08:00" level=info msg="Loading containers: done."
Oct 25 11:35:37 localhost.localdomain dockerd[10094]: time="2023-10-25T11:35:37.161727804+08:00" level=info msg="Docker daemon" commit=a61e2b4 graphdriver=overlay2 version=24.0.5
Oct 25 11:35:37 localhost.localdomain dockerd[10094]: time="2023-10-25T11:35:37.161762409+08:00" level=info msg="Daemon has completed initialization"
Oct 25 11:35:37 localhost.localdomain dockerd[10094]: time="2023-10-25T11:35:37.175532811+08:00" level=info msg="API listen on /run/docker.sock"
Oct 25 11:35:37 localhost.localdomain systemd[1]: Started Docker Application Container Engine.

6. 停止Dokcer

systemctl stop docker

在停止之后,它给了一个警告 "Stopping docker.service, but it can still be activated by:

docker.socket"

翻译过来就是 "停止docker.service,但它仍然可以由docker.socket激活"。

查看状态,此时docker已经停止,处于 dead 死亡状态。

bash 复制代码
[root@localhost ~]# systemctl stop docker
Warning: Stopping docker.service, but it can still be activated by:
  docker.socket
[root@localhost ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: inactive (dead) since Wed 2023-10-25 11:38:17 CST; 1min 20s ago
     Docs: https://docs.docker.com
  Process: 10094 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=0/SUCCESS)
 Main PID: 10094 (code=exited, status=0/SUCCESS)

Oct 25 11:35:37 localhost.localdomain dockerd[10094]: time="2023-10-25T11:35:37.136339904+08:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address"
Oct 25 11:35:37 localhost.localdomain dockerd[10094]: time="2023-10-25T11:35:37.153493234+08:00" level=info msg="Loading containers: done."
Oct 25 11:35:37 localhost.localdomain dockerd[10094]: time="2023-10-25T11:35:37.161727804+08:00" level=info msg="Docker daemon" commit=a61e2b4 graphdriver=overlay2 version=24.0.5
Oct 25 11:35:37 localhost.localdomain dockerd[10094]: time="2023-10-25T11:35:37.161762409+08:00" level=info msg="Daemon has completed initialization"
Oct 25 11:35:37 localhost.localdomain dockerd[10094]: time="2023-10-25T11:35:37.175532811+08:00" level=info msg="API listen on /run/docker.sock"
Oct 25 11:35:37 localhost.localdomain systemd[1]: Started Docker Application Container Engine.
Oct 25 11:38:17 localhost.localdomain systemd[1]: Stopping Docker Application Container Engine...
Oct 25 11:38:17 localhost.localdomain dockerd[10094]: time="2023-10-25T11:38:17.418003207+08:00" level=info msg="Processing signal 'terminated'"
Oct 25 11:38:17 localhost.localdomain dockerd[10094]: time="2023-10-25T11:38:17.418822780+08:00" level=info msg="Daemon shutdown complete"
Oct 25 11:38:17 localhost.localdomain systemd[1]: Stopped Docker Application Container Engine.

7. 配置开机启动docker

systemctl enable docker

运行这个命令之后,以后只要你启动了 Linux 服务器,Doker就会跟着启动,不需要每次都使用上面的启动命令

bash 复制代码
[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

8. 查看 docker 所有命令

docker --help

运行该命令,docker会给我们返回所有可执行命令,后面还有它的英文解释,大多也都不常用,同学们可以用到哪个查哪个。

bash 复制代码
[root@localhost ~]# docker --help

Usage:  docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Common Commands:
  run         Create and run a new container from an image
  exec        Execute a command in a running container
  ps          List containers
  build       Build an image from a Dockerfile
  pull        Download an image from a registry
  push        Upload an image to a registry
  images      List images
  login       Log in to a registry
  logout      Log out from a registry
  search      Search Docker Hub for images
  version     Show the Docker version information
  info        Display system-wide information

Management Commands:
  builder     Manage builds
  buildx*     Docker Buildx (Docker Inc., v0.11.2)
  compose*    Docker Compose (Docker Inc., v2.20.2)
  container   Manage containers
  context     Manage contexts
  image       Manage images
  manifest    Manage Docker image manifests and manifest lists
  network     Manage networks
  plugin      Manage plugins
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes

Swarm Commands:
  swarm       Manage Swarm

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  import      Import the contents from a tarball to create a filesystem image
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  wait        Block until one or more containers stop, then print their exit codes

Global Options:
      --config string      Location of client config files (default "/root/.docker")
  -c, --context string     Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context use")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket to connect to
  -l, --log-level string   Set the logging level ("debug", "info", "warn", "error", "fatal") (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default "/root/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Run 'docker COMMAND --help' for more information on a command.

For more help on how to use Docker, head to https://docs.docker.com/go/guides/
相关推荐
MonkeyKing_sunyuhua31 分钟前
ubuntu22.04 docker-compose安装postgresql数据库
数据库·docker·postgresql
追风林1 小时前
mac m1 docker本地部署canal 监听mysql的binglog日志
java·docker·mac
€☞扫地僧☜€2 小时前
docker 拉取MySQL8.0镜像以及安装
运维·数据库·docker·容器
茶馆大橘2 小时前
微服务系列六:分布式事务与seata
分布式·docker·微服务·nacos·seata·springcloud
全能全知者3 小时前
docker快速安装与配置mongoDB
mongodb·docker·容器
阿尔帕兹5 小时前
构建 HTTP 服务端与 Docker 镜像:从开发到测试
网络协议·http·docker
ZHOU西口7 小时前
微服务实战系列之玩转Docker(十八)
分布式·docker·云原生·架构·数据安全·etcd·rbac
景天科技苑9 小时前
【云原生开发】K8S多集群资源管理平台架构设计
云原生·容器·kubernetes·k8s·云原生开发·k8s管理系统
wclass-zhengge10 小时前
K8S篇(基本介绍)
云原生·容器·kubernetes
颜淡慕潇10 小时前
【K8S问题系列 |1 】Kubernetes 中 NodePort 类型的 Service 无法访问【已解决】
后端·云原生·容器·kubernetes·问题解决