Docker基础知识(二)-- 基础命令

816 阅读12分钟

Docker基础命令

今天复习一下docker的基础命令。 参照网上的经典Docker命令图片重新绘制。

镜像相关

docker tag

Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE

root@Yuan-Ubuntu:~# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
redis        latest    5e25361b75a2   6 minutes ago   252MB
redis        6.2.0     cc69ae189a1a   32 hours ago    105MB
rabbitmq     latest    99720090a9d6   7 days ago      156MB
centos       latest    300e315adb2f   2 months ago    209MB
root@Yuan-Ubuntu:~# docker tag redis:latest redis:5.2
root@Yuan-Ubuntu:~# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
redis        5.2       5e25361b75a2   6 minutes ago   252MB
redis        latest    5e25361b75a2   6 minutes ago   252MB
redis        6.2.0     cc69ae189a1a   32 hours ago    105MB
rabbitmq     latest    99720090a9d6   7 days ago      156MB
centos       latest    300e315adb2f   2 months ago    209MB
docker build

Build an image from a Dockerfile

# Dockerfile
FROM centos
RUN yum install -y wget
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN tar -xvf redis.tar.gz
FROM centos
RUN yum install -y wget \
    && wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \
    && tar -xvf redis.tar.gz

# docker build .
docker builder

Manage builds

docker commit

Create a new image from a container’s changes

docker pull

Pull an image or a repository from a registry

# 拉取指定版本的redis镜像
root@Yuan-Ubuntu:~# docker pull redis:6.2.0
6.2.0: Pulling from library/redis
45b42c59be33: Pull complete
5ce2e937bf62: Pull complete
2a031498ff58: Pull complete
7407cbab5258: Pull complete
c2d6c3b35be8: Pull complete
1997ce073dcd: Pull complete
Digest: sha256:26bd5f3d2bbfb21d0e4f03d642570e63c8776d2a9e5963e4057280fb3b4e3e29
Status: Downloaded newer image for redis:6.2.0
docker.io/library/redis:6.2.0
docker push

Push an image or a repository to a registry

docker history

Show the history of an image

# 可看到镜像制作的历史过程
root@Yuan-Ubuntu:~# docker history redis:6.2.0
IMAGE          CREATED        CREATED BY                                      SIZE      COMMENT
cc69ae189a1a   30 hours ago   /bin/sh -c #(nop)  CMD ["redis-server"]         0B
<missing>      30 hours ago   /bin/sh -c #(nop)  EXPOSE 6379                  0B
<missing>      30 hours ago   /bin/sh -c #(nop)  ENTRYPOINT ["docker-entry…   0B
<missing>      30 hours ago   /bin/sh -c #(nop) COPY file:df205a0ef6e6df89…   374B
<missing>      30 hours ago   /bin/sh -c #(nop) WORKDIR /data                 0B
<missing>      30 hours ago   /bin/sh -c #(nop)  VOLUME [/data]               0B
<missing>      30 hours ago   /bin/sh -c mkdir /data && chown redis:redis …   0B
<missing>      30 hours ago   /bin/sh -c set -eux;   savedAptMark="$(apt-m…   31.6MB
<missing>      30 hours ago   /bin/sh -c #(nop)  ENV REDIS_DOWNLOAD_SHA=67…   0B
<missing>      30 hours ago   /bin/sh -c #(nop)  ENV REDIS_DOWNLOAD_URL=ht…   0B
<missing>      30 hours ago   /bin/sh -c #(nop)  ENV REDIS_VERSION=6.2.0      0B
<missing>      2 weeks ago    /bin/sh -c set -eux;  savedAptMark="$(apt-ma…   4.15MB
<missing>      2 weeks ago    /bin/sh -c #(nop)  ENV GOSU_VERSION=1.12        0B
<missing>      2 weeks ago    /bin/sh -c groupadd -r -g 999 redis && usera…   329kB
<missing>      2 weeks ago    /bin/sh -c #(nop)  CMD ["bash"]                 0B
<missing>      2 weeks ago    /bin/sh -c #(nop) ADD file:d5c41bfaf15180481…   69.2MB
root@Yuan-Ubuntu:~#
docker image

Manage images

# 管理镜像命令,和其它管理镜像的命令类似
  build       Build an image from a Dockerfile
  history     Show the history of an image
  import      Import the contents from a tarball to create a filesystem image
  inspect     Display detailed information on one or more images
  load        Load an image from a tar archive or STDIN
  ls          List images
  prune       Remove unused images
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rm          Remove one or more images
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
docker images

List images

# 查看所有镜像
root@Yuan-Ubuntu:~# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
redis        6.2.0     cc69ae189a1a   30 hours ago   105MB
rabbitmq     latest    99720090a9d6   7 days ago     156MB
centos       latest    300e315adb2f   2 months ago   209MB
docker rmi

Remove one or more images

# 比如我要删除hello-world镜像
# 首先确保没有容器在使用该镜像,否则删不掉
root@Yuan-Ubuntu:~# docker ps -a
CONTAINER ID   IMAGE         COMMAND                  CREATED          STATUS                      PORTS     NAMES
12b047a4530f   redis:6.2.0   "docker-entrypoint.s…"   8 minutes ago    Exited (0) 24 seconds ago             new_redis
103c9c8b827f   redis:6.2.0   "docker-entrypoint.s…"   11 minutes ago   Exited (0) 24 seconds ago             stupefied_murdock
94d2cf2570c0   redis:6.2.0   "docker-entrypoint.s…"   13 minutes ago   Exited (0) 24 seconds ago             dreamy_bassi
348aba2c17d4   rabbitmq      "docker-entrypoint.s…"   3 hours ago      Exited (0) 19 seconds ago             sleepy_goldstine
057aa2624bc3   rabbitmq      "docker-entrypoint.s…"   3 hours ago      Exited (0) 19 seconds ago             sleepy_cannon
4785044579f0   centos        "/bin/bash"              3 hours ago      Exited (0) 3 minutes ago              funny_dhawan
# 查看所有镜像
root@Yuan-Ubuntu:~# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
redis         6.2.0     cc69ae189a1a   30 hours ago    105MB
rabbitmq      latest    99720090a9d6   7 days ago      156MB
centos        latest    300e315adb2f   2 months ago    209MB
hello-world   latest    bf756fb1ae65   13 months ago   13.3kB
# 删除镜像,有多个版本的时要跟上:版本号
root@Yuan-Ubuntu:~# docker rmi hello-world
Untagged: hello-world:latest
Untagged: hello-world@sha256:95ddb6c31407e84e91a986b004aee40975cb0bda14b5949f6faac5d2deadb4b9
Deleted: sha256:bf756fb1ae65adf866bd8c456593cd24beb6a0a061dedf42b26a993176745f6b
Deleted: sha256:9c27e219663c25e0f28493790cc0b88bc973ba3b1686355f221c38a36978ac63
root@Yuan-Ubuntu:~#
docker save

Save one or more images to a tar archive (streamed to STDOUT by default)

docker search

Search the Docker Hub for images

# 查找镜像,具体版本要到dockerhub上找
root@Yuan-Ubuntu:~# docker search redis
NAME                             DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
redis                            Redis is an open source key-value store that…   9140      [OK]
bitnami/redis                    Bitnami Redis Docker Image                      173                  [OK]
sameersbn/redis                                                                  83                   [OK]
grokzen/redis-cluster            Redis cluster 3.0, 3.2, 4.0, 5.0, 6.0           76
rediscommander/redis-commander   Alpine image for redis-commander - Redis man…   54                   [OK]
redislabs/redisearch             Redis With the RedisSearch module pre-loaded…   30
redislabs/redis                  Clustered in-memory database engine compatib…   27
redislabs/redisinsight           RedisInsight - The GUI for Redis                25
oliver006/redis_exporter          Prometheus Exporter for Redis Metrics. Supp…   23
redislabs/rejson                 RedisJSON - Enhanced JSON data type processi…   23
arm32v7/redis                    Redis is an open source key-value store that…   22
bitnami/redis-sentinel           Bitnami Docker Image for Redis Sentinel         19                   [OK]
redislabs/redisgraph             A graph database module for Redis               15                   [OK]
webhippie/redis                  Docker images for Redis                         11                   [OK]
arm64v8/redis                    Redis is an open source key-value store that…   10
s7anley/redis-sentinel-docker    Redis Sentinel                                  10                   [OK]
redislabs/redismod               An automated build of redismod - latest Redi…   9                    [OK]
insready/redis-stat              Docker image for the real-time Redis monitor…   9                    [OK]
goodsmileduck/redis-cli          redis-cli on alpine                             7                    [OK]
centos/redis-32-centos7          Redis in-memory data structure store, used a…   5
circleci/redis                   CircleCI images for Redis                       5                    [OK]
clearlinux/redis                 Redis key-value data structure server with t…   3
tiredofit/redis                  Redis Server w/ Zabbix monitoring and S6 Ove…   1                    [OK]
wodby/redis                      Redis container image with orchestration        1                    [OK]
xetamus/redis-resource           forked redis-resource                           0                    [OK]
docker trust

Manage trust on Docker images

docker save

Save one or more images to a tar archive (streamed to STDOUT by default)

docker load

Load an image from a tar archive or STDIN

docker login

Log in to a Docker registry

docker logout

Log out from a Docker registry

容器相关

docker attach

Attach local standard input, output, and error streams to a running container

root@Yuan-Ubuntu:~# docker ps
CONTAINER ID   IMAGE         COMMAND                  CREATED          STATUS         PORTS                    NAMES
12b047a4530f   redis:6.2.0   "docker-entrypoint.s…"   27 minutes ago   Up 2 minutes   0.0.0.0:8000->6379/tcp   new_redis
root@Yuan-Ubuntu:~# docker attach new_redis
docker container

Manage containers

# 管理容器的命令集合
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
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  inspect     Display detailed information on one or more containers
  kill        Kill one or more running containers
  logs        Fetch the logs of a container
  ls          List containers
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  prune       Remove all stopped containers
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  run         Run a command in a new container
  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
  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
docker context

Manage contexts

docker cp

Copy files/folders between a container and the local filesystem

docker create

Create a new container

docker diff

Inspect changes to files or directories on a container’s filesystem

docker engine

Manage the docker engine

docker events

Get real time events from the server

docker exec

Run a command in a running container

root@Yuan-Ubuntu:~# docker exec 12b047a4530f ls
dump.rdb
docker export

Export a container’s filesystem as a tar archive

# 导出
root@Yuan-Ubuntu:~# docker export 12b047a4530f -o redis.tar
root@Yuan-Ubuntu:~# ls
redis.tar.gz  snap
docker import

Import the contents from a tarball to create a filesystem image

docker info

Display system-wide information

# 查看docker系统的信息
root@Yuan-Ubuntu:~# docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)

Server:
 Containers: 6
  Running: 0
  Paused: 0
  Stopped: 6
 Images: 3
 Server Version: 20.10.3
 Storage Driver: overlay2
 ...
docker inspect

Return low-level information on Docker objects

docker kill

Kill one or more running containers

root@Yuan-Ubuntu:~# docker kill 94d2cf2570c0
94d2cf2570c0
root@Yuan-Ubuntu:~# docker ps
CONTAINER ID   IMAGE      COMMAND                  CREATED       STATUS       PORTS                                                 NAMES
348aba2c17d4   rabbitmq   "docker-entrypoint.s…"   2 hours ago   Up 2 hours   4369/tcp, 5671-5672/tcp, 15691-15692/tcp, 25672/tcp   sleepy_goldstine

docker logs

Fetch the logs of a container

docker manifest

Manage Docker image manifests and manifest lists

docker network

Manage networks

root@Yuan-Ubuntu:~# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
248a0a65a361   bridge    bridge    local
6ad3a44d85fe   host      host      local
3a07c5f8816a   none      null      local
docker plugin

Manage plugins

docker port

List port mappings or a specific mapping for the container

root@Yuan-Ubuntu:~# docker run -d -p 8000:6379 --name my_redis redis:6.2.0
12b047a4530fc8edb9dff0cf6cf4120019f21a64c5b4b71a41e31913c68e50d2
root@Yuan-Ubuntu:~# docker ps
CONTAINER ID   IMAGE         COMMAND                  CREATED         STATUS         PORTS                                                 NAMES
12b047a4530f   redis:6.2.0   "docker-entrypoint.s…"   8 seconds ago   Up 5 seconds   0.0.0.0:8000->6379/tcp                                my_redis
348aba2c17d4   rabbitmq      "docker-entrypoint.s…"   2 hours ago     Up 2 hours     4369/tcp, 5671-5672/tcp, 15691-15692/tcp, 25672/tcp   sleepy_goldstine
root@Yuan-Ubuntu:~# docker port 12b047a4530f
6379/tcp -> 0.0.0.0:8000
docker run

Run a command in a new container

root@Yuan-Ubuntu:~# docker run -d redis:6.2.0
94d2cf2570c05f042f1f68e714c4472a7ba2db4276f8bd84eefbfdbc271e2f87
docker ps

List containers

root@Yuan-Ubuntu:~# docker ps
CONTAINER ID   IMAGE         COMMAND                  CREATED          STATUS          PORTS                                                 NAMES
94d2cf2570c0   redis:6.2.0   "docker-entrypoint.s…"   26 seconds ago   Up 23 seconds   6379/tcp                                              dreamy_bassi
348aba2c17d4   rabbitmq      "docker-entrypoint.s…"   2 hours ago      Up 2 hours      4369/tcp, 5671-5672/tcp, 15691-15692/tcp, 25672/tcp   sleepy_goldstine
docker rename

Rename a container

# 将my_redis重命名为new_redis
root@Yuan-Ubuntu:~# docker rename 12b047a4530f new_redis
root@Yuan-Ubuntu:~# docker ps
CONTAINER ID   IMAGE         COMMAND                  CREATED         STATUS         PORTS                                                 NAMES
12b047a4530f   redis:6.2.0   "docker-entrypoint.s…"   2 minutes ago   Up 2 minutes   0.0.0.0:8000->6379/tcp                                new_redis
348aba2c17d4   rabbitmq      "docker-entrypoint.s…"   2 hours ago     Up 2 hours     4369/tcp, 5671-5672/tcp, 15691-15692/tcp, 25672/tcp   sleepy_goldstine
docker restart

Restart one or more containers

# 重启单个容器
root@Yuan-Ubuntu:~# docker restart 12b047a4530f
12b047a4530f
# 重启多个容器
root@Yuan-Ubuntu:~# docker restart 12b047a4530f 348aba2c17d4
12b047a4530f
348aba2c17d4
# 重启所有容器
root@Yuan-Ubuntu:~# docker restart $(docker ps -aq)
12b047a4530f
103c9c8b827f
94d2cf2570c0
348aba2c17d4
057aa2624bc3
4785044579f0
181b5b47f164
f44d1fc7839d
docker rm

Remove one or more containers

root@Yuan-Ubuntu:~# docker ps -aq
12b047a4530f
103c9c8b827f
94d2cf2570c0
348aba2c17d4
057aa2624bc3
4785044579f0
181b5b47f164
f44d1fc7839d
root@Yuan-Ubuntu:~# docker rm 181b5b47f164
181b5b47f164
root@Yuan-Ubuntu:~# docker ps -aq
12b047a4530f
103c9c8b827f
94d2cf2570c0
348aba2c17d4
057aa2624bc3
4785044579f0
f44d1fc7839d
root@Yuan-Ubuntu:~#
docker start

Start one or more stopped containers

root@Yuan-Ubuntu:~# docker ps -a
CONTAINER ID   IMAGE         COMMAND                  CREATED          STATUS                      PORTS     NAMES
12b047a4530f   redis:6.2.0   "docker-entrypoint.s…"   21 minutes ago   Exited (0) 13 minutes ago             new_redis
103c9c8b827f   redis:6.2.0   "docker-entrypoint.s…"   25 minutes ago   Exited (0) 13 minutes ago             stupefied_murdock
94d2cf2570c0   redis:6.2.0   "docker-entrypoint.s…"   26 minutes ago   Exited (0) 13 minutes ago             dreamy_bassi
348aba2c17d4   rabbitmq      "docker-entrypoint.s…"   3 hours ago      Exited (0) 13 minutes ago             sleepy_goldstine
057aa2624bc3   rabbitmq      "docker-entrypoint.s…"   3 hours ago      Exited (0) 13 minutes ago             sleepy_cannon
4785044579f0   centos        "/bin/bash"              3 hours ago      Exited (0) 16 minutes ago             funny_dhawan
root@Yuan-Ubuntu:~# docker start 12b047a4530f
12b047a4530f
root@Yuan-Ubuntu:~# docker ps
CONTAINER ID   IMAGE         COMMAND                  CREATED          STATUS         PORTS                    NAMES
12b047a4530f   redis:6.2.0   "docker-entrypoint.s…"   22 minutes ago   Up 8 seconds   0.0.0.0:8000->6379/tcp   new_redis
docker stats

Display a live stream of container(s) resource usage statistics

root@Yuan-Ubuntu:~# docker stats 12b047a4530f
CONTAINER ID   NAME        CPU %     MEM USAGE / LIMIT     MEM %     NET I/O       BLOCK I/O   PIDS
12b047a4530f   new_redis   0.22%     3.789MiB / 3.815GiB   0.10%     3.18kB / 0B   0B / 0B     5

docker stop

Stop one or more running containers

root@Yuan-Ubuntu:~# docker stop 12b047a4530f
12b047a4530f
docker system

Manage Docker

  # 可以查看docker系统磁盘、事件、信息等
  df          Show docker disk usage
  events      Get real time events from the server
  info        Display system-wide information
  prune       Remove unused data
docker top

Display the running processes of a container

root@Yuan-Ubuntu:~# docker ps
CONTAINER ID   IMAGE         COMMAND                  CREATED          STATUS          PORTS                    NAMES
12b047a4530f   redis:6.2.0   "docker-entrypoint.s…"   53 minutes ago   Up 23 minutes   0.0.0.0:8000->6379/tcp   new_redis
root@Yuan-Ubuntu:~# docker top 12b047a4530f
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
systemd+            18126               18104               0                   14:21               ?                   00:00:03            redis-server *:6379
docker pause

Pause all processes within one or more containers

docker unpause

Unpause all processes within one or more containers

docker update

Update configuration of one or more containers

更新一个或多个容器的配置,比如cpu、磁盘之类的
docker version

Show the Docker version information

docker volume

Manage volumes

docker wait

Block until one or more containers stop, then print their exit codes

今天就分享到这里啦!感谢各位的阅读!码字不易,如果本文对你有帮助的话,帮忙点个赞吧~