# Docker常用命令

# Docker镜像常用命令

# 搜索镜像

可使用docker search命令搜索存放在Docker Hub中的镜像:

docker search [OPTION] TERM

如使用如下命令得到输出:

sudo docker search pytorch

# NAME                                  DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
# bitnami/pytorch                        Bitnami PyTorch Docker Image                   46                   
# armswdev/pytorch-arm-neoverse         PyTorch builds for AArch64 CPUs                 7                    
# armswdev/pytorch-arm-neoverse-n1      PyTorch images for Arm Neoverse-N1              7                    
# graphcore/pytorch                     The Poplar® SDK plus PyTorch for IPUs.          2                    
# graphcore/pytorch-jupyter             The Poplar® SDK plus PyTorch for IPUs includ…   2            

该列表包含五列,分别表示:

  • NAME: 镜像仓库名称
  • DESCRIPTION: 镜像仓库描述
  • STARS: 镜像仓库收藏数,表示该镜像仓库的受欢迎程度,类似github的star
  • OFFICIAL: 表示是否为官方仓库,该列标记为[OK]的镜像均由各软件的官方项目组创建和维护
  • AUTOMATED: 表示是否是自动创建的镜像仓库

# 下载镜像

使用docker pull命令可以从Docker Registry上下载镜像。

docker pull [OPTION] NAME[:TAG|@DIGEST]

命令参数见下表:

Name Default Description
--all-tags,-a false 下载所有标签的镜像
--disable-content-trust true 忽略镜像的校验

如下命令:

docker pull ros

执行该命令后,会从Docker Hub中的ROS仓库下载最新的ROS镜像。如镜像下载缓慢,可参考前述章节配置镜像加速器。

# 列出镜像

使用docker images命令即可列出已下载的镜像。

命令格式:

docker images [OPTIONS] [REPOSITORY[:TAG]]

参数如下表:

Name Default Description
--all,-a false 列出本地所有镜像层(包括中间镜像层,默认情况下,过滤中间映像层)
--digest false 显示摘要信息
--filter,-f 显示满足条件的镜像
--no-trunc false 不截断输出,显示完整的镜像信息
--quiet,-q false 只显示镜像ID

例如执行如下命令得到:

sudo docker images

# REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
# hello-world   latest    9c7a54a9a43c   11 days ago   13.3kB

展示出来的五个字段的含义分别为:

  • REPOSITORY:镜像所属仓库名称
  • TAG:镜像标签,默认是latest,表示最新
  • IMAGE ID:镜像ID,表示镜像唯一标识
  • SIZE:镜像大小

# 删除本地镜像

使用docker rmi命令即可删除指定镜像。

命令格式:

docker rmi [OPTIONS] IMAGE [IMAGE...]

命令参数列表:

Name Default Description
--force,-f false 强制删除
--no-prune false 不移除该镜像的过程镜像,默认是移除

如下命令将输出指定镜像:

sudo docker rmi -f hello-world
# Untagged: hello-world:latest
# Untagged: hello-world@sha256:fc6cf906cbfa013e80938cdf0bb199fbdbb86d6e3e013783e5a766f50f5dbce0
# Deleted: sha256:9c7a54a9a43cca047013b82af109fe963fde787f63f9e016fdc3384500c2823d

# 保存镜像

docker save命令

命令格式:

docker save [OPTIONS] IMAGE [IMAGE...]

命令参数:

Name Default Description
--output,-o false 输出到文件,而非标准输出

如下命令将保存镜像:

docker save --output hello-world.tar hello-world

# 加载镜像

命令格式

docker load [OPTIONS]

命令参数

Name Default Description
--input,-i 从文件加载而非标准输入
--quiet,-q false 静默加载

命令示例:

docker load --input hello.tar

# 构建镜像

创建一个新的镜像需要使用 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建镜像。

命令格式

docker build [OPTIONS] PATH | URL | -

命令参数见docker build --help

命令示例

sudo docker build -t daydayup/ubuntu:1.8 .
  • -t :指定要创建的目标镜像名
  • . :Dockerfile文件所在目录,可以指定Dockerfile 的绝对路径

# Docker容器常用命令

# 新建并启动容器

docker run [OPTIONS]

这个命令十分常用

命令参数可通过docker run --help查看

示例命令

docker run -d -p 91:80 nginx

如上命令会启动一个nginx容器。访问http://{Docker宿主机IP}:91/,可以访问启动的nginx服务器。

需要注意的是,使用docker run命令创建容器时,会先检查本地是否存在指定镜像。如果本地不存在该名称的镜像,Docker会自动从Docker hub下载镜像并启动一个Docker容器。

# 列出容器

命令格式

docker ps [OPTIONS]

命令参数

Name Default Description
--all, -a false 列出所有容器,包括未运行的容器。默认只展示运行的容器
--filter,-f 根据条件过滤显示内容
--format 通过Go语言模板文件展示镜像
--last,-n -1 显示最近创建的n个容器(包含所有状态)
--no-trunc false 不截断输出
--quiet,-q false 静默模式,只展示容器的ID
--size,-S false 显示总文件大小

若需列出所有容器(包括已停止的容器),可使用-a参数。该表格包含了7列,含义如下:

  • CONTAINER_ID:表示容器ID。
  • IMAGE:表示镜像名称。
  • COMMAND:表示启动容器时运行的命令。
  • CREATED:表示容器的创建时间。
  • STATUS:表示容器运行的状态。
  • Up表示运行中,Exited表示已停止。
  • PORTS:表示容器对外的端口号。
  • NAMES:表示容器名称。该名称默认由Docker自动生成,也可使用docker run的-name选项自行指定。

# 停止容器

命令格式

docker stop [OPTIONS] CONTAINER [CONTAINER...]
Name Default Description
--time, -t 10 强制停止容器前等待的时间,单位s

示例

docker stop 7789ad3f2(容器ID)/hello-world(容器名称)

# 强制停止容器

docker kill 78f4ed(容器ID)

# 启动已停止的容器

docker start [OPTIONS] CONTAINER [CONTAINER...]

docker run可新建并启动一个容器,对于已停止的容器,可使用docker start命令来启动。

示例

docker start 78df23fd(容器ID)

# 删除容器

docker rm 788df98(容器ID)

删除所有容器

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

# 导出容器

docker export red_panda > latest.tar

将容器导出成一个压缩包文件

# 导入容器

docker import latest.tar > nginx

从归档文件导入内容并创建容器。

(adsbygoogle = window.adsbygoogle || []).push({});