Docker常用命令

帮助启动类命令

  • 启动Docker:systemctl start docker

  • 停止Docker:systemctl stop docker

  • 重启Docker:systemctl restart docker

  • 查看Docker状态:systemctl status docker

    停止并查看Docker状态

Docker常用命令 - 图1

启动并查看Docker状态

Docker常用命令 - 图2

  • 开机启动:systemctl enable docker

  • 查看Docker概要信息:docker info

    Docker常用命令 - 图3

  • 查看Docker总体帮助文档:docker --help

  • 查看Docker命令帮助文档:docker 具体命令 --help

镜像命令

  • 列出本地主机上的镜像:docker images

    Docker常用命令 - 图4

一个仓库源中可以有镜像的不同版本,通常使用REPOSITORY:TAG来定义不同版本的镜像

如果拉取镜像的时候不指定TAG,则默认是最新的版本,也就是latest

常用OPTIONS

Docker常用命令 - 图5

  • 在仓库中查找镜像:docker search xxxx

    Docker常用命令 - 图6

  • 拉取镜像:docker pull xxxx[:TAG]

    不加TAG默认是latest最新版

Docker常用命令 - 图7

也可指定版本

Docker常用命令 - 图8


虚悬镜像(DangLing Image)指的是REPOSITORY和TAG均为<none>的镜像,这种镜像建议删除

  • 查看镜像、容器、数据卷占用的空间:docker system df

    Docker常用命令 - 图9

  • 删除镜像:docker rmi 镜像ID

    此命令支持一次删除单个或者多个,rmi,这里的i就是image

Docker常用命令 - 图10

同时可以看到镜像ID其实是sha256的前一部分


删除全部,$取出所有的镜像ID

docker rmi -f $(docker images -qa)

启停容器命令

  • 新建+启动容器:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

    以CentOS镜像为例,在Docker上启动一个CentOS容器实例

Docker常用命令 - 图11

常用OPTIONS

  • —name=”新的容器名字”:为运行的容器起一个名字
  • -d:后台运行并返回容器ID
  • -i:以交互模式运行容器,通常配合-t使用
  • -t:为容器分配一个伪输入终端,通常配合-i使用
  • -P:随机端口映射
  • -p:指定端口映射。端口映射指的是:我们通过Docker对外暴露的端口访问Docker内部运行的容器,比如端口映射为80:8080,那么我们可以通过访问Docker宿主机的80端口,从而访问到Docker上运行的8080端口容器。
  • 启动守护式容器

    -it是交互式容器,也就是保持一个交互窗口,如果窗口关闭了,那么容器也就关闭了

-d是守护式容器,在后台运行

Docker常用命令 - 图12

这是由于Docker的机制造成的:Docker容器想要后台运行,就必须有一个前台进程。

如果容器运行的命令不是那些一直挂起的命令(比如top,tail等),那么容器会自动退出。

由于以后台的方式启动CentOS后,并没有前台进程并且没有挂起命令,所以自动退出了。

可以以前台的方式启动,然后退出容器不停止,具体见后面的退出操作。

  • 列出当前所有正在运行的容器:docker ps

    COMMAND表示启动容器时运行的命令

Docker常用命令 - 图13

常用OPTIONS

Docker常用命令 - 图14

  • 退出容器

    • exit:退出容器,容器停止

      Docker常用命令 - 图15

  • ctrl+p+q:退出容器,容器不停止。

    Docker常用命令 - 图16

  • 启动已停止运行的容器:docker start 容器ID或容器名

    因为Docker run的话,每次都会新创建一个容器,而不是启动已经停止的容器。

Docker常用命令 - 图17

  • 重启容器:docker restart 容器ID或容器名

  • 停止容器:docker stop 容器ID或容器名

  • 强制停止容器:docker kill 容器ID或容器名

  • 删除已经停止的容器:docker rm 容器ID

    Docker常用命令 - 图18

一次删除多个容器实例

docker rm -f $(docker ps -a -q)

docker ps -a -q | xargs docker rm

操作容器命令

  • 以Redis为例

    以后台的方式运行Redis

Docker常用命令 - 图19

  • 查看容器日志:docker logs 容器ID

    Docker常用命令 - 图20

  • 查看容器内运行的进程:docker top 容器ID

    类似Linux的top命令

Docker常用命令 - 图21

  • 查看容器内部细节:docker inspect 容器ID

    结果是JSON的形式,包括运行状态,镜像ID,配置等等各种信息

Docker常用命令 - 图22

  • 进入正在运行的容器并以命令行形式交互:docker exec -it 容器ID bashShelldocker attach 容器ID(一般用exec即可)

    比如我们以前台的方式启动CentOS,然后退出不停止

Docker常用命令 - 图23


exec和attach的区别:

  • exec是在容器中打开新的终端,启动新的进程,而后exit退出容器并不会停止容器的运行。
  • attach直接进入容器启动命令的终端,不启动新的进程,而后exit退出容器会停止容器的运行。

Docker常用命令 - 图24

一般,我们使用-d运行容器,然后使用exec进入容器,与容器进行交互。

  • 从容器内拷贝文件到主机上:docker cp 容器ID:容器内路径 目的主机路径

    注意:此命令不是运行在容器内的CentOS上,是运行在宿主机的命令行。

Docker常用命令 - 图25

  • 导入(import)和导出(export)容器

    导入导出容器是将整个容器打包,做备份。

导出容器:将整个容器导出为一个tar文件:docker export 容器ID > 文件名.tar

Docker常用命令 - 图26

导入容器:cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号,其中,镜像名、镜像用户和镜像版本号都是自定义的

Docker常用命令 - 图27