说说 Docker 容器常用命令

363 阅读3分钟

1 运行容器

指定某个镜像以容器的形式运行起来。语法为:docker run [OPTIONS] {IMAGE_NAME}

  • {IMAGE_NAME} 指的是镜像名称;
  • [OPTIONS] 指的是命令可选项。 Run的命令可选项非常多,我们在此列举出那些常用的可选项。
参数说明
-d在后台运行容器并打印出容器 ID;d 是 detach 的英文首字母。
-p映射端口号到主机。格式形如主机端口:容器端口。
--name指定容器名称。
--restart重启策略,有 no、on-failure[:max-retries]、always 与 unless-stopped 四种1
-v绑定虚拟机工作目录到容器目录。格式形如工作目录:容器目录。如果工作目录不存在,docker 会自动新建。
这里的工作目录指的是虚拟机中的 CentOS目录。

2 查看容器

查看正在运行的命令为: docker ps

列表字段具体说明如下:

字段说明
CONTAINERID容器 ID
IMAGE镜像名称
COMMAND容器启动时所运行的命令
CREATED容器创建时间,格式为距今多久
STATUS容器运行状态;常见的有:UP 表示运行中;Exited 表示已退出
PORTS需要对外暴露的端口号
NAMES容器名称

加上 -a 参数可以查看所有容器(不只是运行中的容器),完整命令为: docker ps -a

加上 -f 参数可以加入过滤条件,比如我们想过滤出镜像名称只包含 “config”的镜像。使用命令 docker ps -f "name=config"

3 进入容器

以下两种指令都只能进入处于运行中的容器。

3.1 查看运行日志

进入容器查看运行日志的命令格式为:docker attach {CONTAINER_ID}。其中 {CONTAINER_ID} 表示容器 ID。进入容器之后,就可以在控制台看到容器内的输入、输出与错误日志信息。下图是 gitLab 容器的运行日志:

在此如果键入 ctrl+Z,就会停止运行中的容器。

3.2 执行 Linux 指令

在容器内执行 Linux 指令使用 docker 的 exec 指令,语法为: docker exec [OPTIONS] {CONTAINER_ID} {COMMAND} 。{CONTAINER_ID} 是容器 ID,{COMMAND} 是需要执行的指令。

可能会用到以下两个可选参数 [OPTIONS]:

参数说明
-i打开交互模式,即保持 stdin 标准输入处于开启状态;i 即 interactive。
-t分配一个伪终端;t 即 tty。
-w指定容器中的工作路径

比如我们想进入 /var/log/gitlab 目录,然后打印出该目录的文件列表,就可以使用这条命令: docker exec -t -i -w /var/log/gitlab {CONTAINER_ID} ls -l。 命令执行后的输出结果形如:

4 查看容器日志

命令为:docker logs [CONTAINER_ID],其中 [CONTAINER_ID] 表示容器 ID。输出结果形如:

5 停止容器

停止某个容器,语法为:docker stop {CONTAINER_ID}

如果想停止所有容器,可以使用以下语法:

docker stop `docker ps -a -q`2

docker ps -a -q 会输出所有正在运行的容器 ID。

  • -a 表示列出所有正在运行的容器,a 是 all 的缩写;
  • -q 表示只输出容器 ID,q 是 quiet 的缩写。

6 启动容器

启动已停止的容器,语法为:docker start {CONTAINER_ID}

7 重启容器

启动运行中的容器,语法为:docker restart {CONTAINER_ID}

8 删除容器

命令为 docker rm {CONTAINER_ID},其中的 {CONTAINER_ID} 表示的是容器 ID。这条命令只能删除非运行状态的容器。如果需要删除正在运行的容器,可以带上 -f 命令参数,f 是 force 的单词简写形式。 命令执行成功后,控制台会返回被删除的容器 ID。


【1】Restart policies. 【2】黄勇.轻量级微服务架构(上册)[M].北京:电子工业出版社,2016:162.