Docker 常用命令汇总

120 阅读7分钟

镜像相关

  • docker image pull 是下载镜像的命令。镜像从远程镜像仓库服务的仓库中下载。默认情况下,镜像会从Docker Hub 的仓库只能够拉取。 docker image pull alpine:latest命令会从Docker Hub的alpine仓库中拉取标签为latest的镜像。
  • docker image ls 列出本地 Docker主机存储的镜像。 可以通过 --digests 参数来查看镜像的SHA256
  • docker image inspect 命令非常有用!该命令完美展示了惊喜细节,包括镜像层数据和元数据。
  • docker image rm 用于删除镜像。docker image rm alpine:latest 命令的含义是删除alpine:latest镜像。当镜像存在关联的容器,并且容器处于运行(Up)或停止(Eixted)状态时,不允许删除该镜像。docker rmi imageId 该命令也可以删除镜像。

容器相关

  • docker container run 是启动新容器的命令。该命令的最简形式接收镜像和命令作为参数。镜像用于创建容器,而命令则是希望容器运行的应用。docker container run -it ubuntu /bin/bash 命令会在前台启动一个Ubuntu 容器, 并运行Bash Shell。
  • Ctrl-PQ 会断开Shell和容器终端之间的链接,并在退出后保持容器在后台处于运行(UP)状态。
  • docker container ls 用于列出所有在运行(UP)状态的容器。如果使用-a标记,还可以看到处于停止(Exited)状态的容器。
  • docker container exec 允许用户在运行状态的容器中,启动一个新进程。该命令在将Docker主机Shell连接到一个运行容器时非常有用。docker container exec -it bash 命令会在容器内部启动一个Bash Shell 进程,并连接到该Shell。为了使该命令生效,用于创建容器的镜像必须包含Bash Shell。
  • docker container stop 命令会停止运行中的容器,并将状态置为Exited(0)。该命令通过发送SIGTERM 信号给容器内PID为1 的进程达到目的。如果进程没有在10s之内得到清理并停止运行,那么会接着发送SIGKOLL信号来强制停止该容器。docker container stop 可以接收容器ID以及容器名称作为参数。
  • docker container start 会重启处于停止(Exited)状态的容器。可以在docker container start 命令中指定容器的名称或者ID。
  • docker container rm 会删除停止运行的容器。可以通过容器名称或者ID来指定要删除的容器。推荐首先使用docker container stop 命令停止容器,然后使用docker container rm 来完成删除。
  • docker container inspect 命令会显示容器的配置细节和运行时的信息。该命令接收容器名称和容器ID作为主要参数。

应用的容器化相关

  • docker image build 命令会读取Dockerfile,并将应用程序容器化。使用-t 参数为镜像打标签,使用-f 参数指定Dockerfile的路径和名称,使用-f参数可以指定位于任意路径下的任意名称的Dockerfile。构建上下是指应用文件存放的位置,可能是本地Docker主机的一个目录或一个远程的Git仓库。
  • Dockerfile 中的FROM指令用于指定要构建的镜像的基础镜像。它通常是Dockerfile中的第一条指令。
  • Dockerfile 中的RUN指令用于在镜像中执行命令,这会创建新的镜像层。每个RUN指令创建一个新的镜像层。
  • Dockerfile中的COPY 指令用于将文件作为一个新的层添加到镜像中。通常使用COPY指令将应用代码复制到镜像中。
  • Dockerfile中的EXPOSE指令用于记录应用所使用的网络端口。
  • Dockerfile 中的ENTRYPOINT指令用于指定镜像以容器方式启动后默认运行的程序。
  • 其他的Dockerfile指令还有 LABEL、ENV、ONBUILD、HEALTHCHECK、CMD等。

Docker Compose部署应用

  • docker-compose up 命令用于部署一个 Compose 应用。默认情况下该命令会读取名为docker-compose.yml 或docker-compose.yaml的文件,当然用户也可以使用-f 指定其他文件名。通常情况下,会使用-d参数使应用在后台启动。
  • docker-compose stop 命令会停止Compose应用相关的所有容器,但不会删除它们。被停止的应用可以很容易地通过docker-compose restart 命令重新启动。
  • docker-compose rm 命令用于删除已停止的 Compose应用。它会删除容器和网络,但不会删除卷和镜像。
  • docker-compose restart 命令会重启已停止的Compose应用。如果用户在停止该应用后对其进行了变更,那么变更的内容不会反映在重启的应用中,这时需要重新部署应用使变更生效。
  • docker-compose ps命令 用于列出Compose 应用中的各个容器。输出内容包括当前状态、容器运行的命令以及网络端口。
  • docker-compose down 会停止删除运行中的Compose应用。它会删除容器和网络,但是不会删除卷和镜像。

Docker Swarm 相关

  • docker swarm init 命令用户创建一个新的Swarm。执行该命令的节点会成为第一个管理节点,并且会切换到Swarm 模式。
  • docker swarm join-token 命令用于查询加入管理节点和工作节点到现有 Swarm 时所使用的命令和token。要获取新增管理节点的命令,请执行docker swarm join-token manager 命令;要获取新增节点的命令,请执行docker swarm join-token worker命令。
  • docker node ls 命令用于列出Swarm 中的所有节点及相关信息,包括哪些是管理节点、哪个是管理节点。
  • docker service create 命令用于创建一个新的服务
  • docker service ls 命令用于列出Swarm 中运行的服务,以及诸如服务状态,服务副本等基本信息。
  • docker serivice ps 命令会给出更多关于某个服务副本的信息。
  • docker service inspect 命令用于获取关于服务的详尽信息。附加--pretty 参数可限制仅显示重要信息。
  • docker service scale 命令用于对服务副本个数进行增减
  • docker service update 命令用于对运行中的服务属性进行变更。
  • docker service logs 命令用于查看服务日志。
  • docker service rm 命令用于从Swarm 中删除某服务。该命令会在不做确认的情况下删除服务的所有副本,所以使用时保持警惕。

网络相关

  • docker network ls 用于列出运行在本地Docker 主机上的全部网络。
  • docker network create 创建新的Docker 网络。默认情况下,在Windows上会采用NAT驱动,在Linux上会采用Bridge驱动。可以使用-d参数指定驱动(网络类型)。docker network create -d overlay overnet 会创建一个新的名为overnet 的覆盖网络,其采用的驱动为 Docker Overylay.
  • docker network inspect 提供Docker网络的详细配置信息。
  • docker network prune 删除 Docker主机上全部未使用的网络。
  • docker network rm 删除Docker 主机上指定的网路。

卷与持久化数据相关

  • docker volume create 命令用于创建新卷。默认情况下,新卷创建使用 local 驱动,但是可以通过-d参数来指定不同的驱动。
  • docker volume ls 会列出本地Docker 主机上的全部卷。
  • docker volume inspect 用于查看卷的详细信息。可以使用该命令查看卷在Docker 主机文件系统的具体位置。
  • docker volume prune 会删除未被容器或服务副本使用的全部卷。谨慎用!
  • docker volune rm 删除未被使用的指定卷。

Docker Stack部署应用

  • docker stack deploy 用于根据Stack文件(通常是docker-stack.yml)部署和更新Stack服务命令。
  • docker stack ls 会列出Swarm 集群中的全部Stack,包括每个Stack拥有多少服务。
  • docker stack ps 列出某个已经部署的Stack相关详情。该命令支持Stack名称作为其重要参数,列举了服务副本在节点的分布情况,以及期望状态和当前状态。
  • docker stack rm 命令用于从Swarm集群中移除Stack。移除操作执行前并不会进行二次确认。docker 命令汇总