Docker的常用命令

Docker的常用命令。

Docker的常用命令

帮助命令

docker version		# 显示docker的版本信息 
docker info		# 显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help	# 万能命令

Docker 帮助文档的地址:https://docs.docker.com/reference/

镜像命令

docker images

默认值将显示所有顶级镜像、它们的存储库和标签,以及它们的大小。docker images

选项

参数描述
-a, –all显示所有镜像(默认隐藏中间镜像)
–digests显示摘要
-f, –filter根据提供的条件筛选输出
–format使用自定义模板设置输出格式:
“table”:使用列标题以表格格式打印输出(默认)
“table TEMPLATE”:使用给定的 Go 模板以表格格式打印输出
“json”:以 JSON 格式打印
“TEMPLATE”:使用给定的 Go 模板打印输出。
参考https://docs.docker.com/go/formatting/
有关使用模板设置输出格式的详细信息
–no-trunc不要截断输出
-q, –quiet仅显示图像 ID
[root@localhost ~]# docker images
REPOSITORY    TAG                  IMAGE ID       CREATED         SIZE
python        3.11-slim-bullseye   f5e43f6dcc5a   12 days ago     128MB
python        3.9-bullseye         845340d6d07d   3 weeks ago     906MB
hello-world   latest               d2c94e258dcb   11 months ago   13.3kB

# 解释
REPOSITORY      镜像的仓库源
TAG		镜像的标签
IMAGE ID	镜像的id
CREATED		镜像的创建时间
SIZE		镜像的大小

# 可选项
  -a, --all             # 显示所有镜像(默认隐藏中间镜像)
  -q, --quiet           # 只显示镜像的id

描述 在 Docker Hub 中搜索镜像 用法 docker search [OPTIONS] TERM

选项

参数描述
-f, –filter根据提供的条件筛选输出
–format使用 Go 模板进行漂亮的打印搜索
–limit最大搜索结果数
–no-trunc不要截断输出
[root@localhost ~]# docker search mysql
NAME                            DESCRIPTION                                      STARS     OFFICIAL
mariadb                         MariaDB Server is a high performing open sou…   5722      [OK]
mysql                           MySQL is a widely used, open-source relation…   15008     [OK]
phpmyadmin                      phpMyAdmin - A web interface for MySQL and M…   966       [OK]
percona                         Percona Server is a fork of the MySQL relati…   627       [OK]
circleci/mysql                  MySQL is a widely used, open-source relation…   29        

# 可选项
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print search using a Go template
      --limit int       Max number of search results
      --no-trunc        Don't truncate output

# 示例
  --filter=STARS=3000	# 搜索出来的镜像就是STARS大于3000的

docker pull

描述 从镜像仓库下载镜像 用法 docker pull [OPTIONS] NAME[:TAG|@DIGEST]

您的大多数镜像都将在基础镜像之上创建,这些镜像来自Docker Hub镜像仓库。

Docker Hub 中心包含许多预构建的镜像,您可以尝试,而无需定义和配置自己的。pull

要下载特定镜像或一组镜像(即存储库), 使用。docker pull

代理配置

如果您位于 HTTP 代理服务器后面,例如在公司设置中, 在打开连接到仓库之前,您可能需要配置 Docker 守护进程的代理设置,有关详细信息,请参阅 dockerd 命令行参考

并发下载

默认情况下,Docker 守护程序将一次拉取映像的三层。 如果您使用的是低带宽连接,这可能会导致超时问题,您可能需要降低 这是通过守护程序选项实现的。有关更多详细信息,请参阅守护程序文档--max-concurrent-downloads

选项

参数缺省描述
-a, –all-tags下载仓库中所有标记的镜像
–disable-content-trusttrue跳过图像验证
–platformAPI 1.32+ 如果服务器支持多平台,则设置平台
-q, –quiet禁止详细输出
# 下载镜像的命令:docker pull 镜像名[:tag]
[root@192 ~]# docker pull mysql
Using default tag: latest		# 如果不写 tag,默认就是latest
latest: Pulling from library/mysql
2ba873cb070a: Pull complete 		# 分层下载,docker image的核心,联合文件系统
dd1a4da808dd: Pull complete 
3292fb4adf41: Pull complete 
3811c45068cc: Pull complete 
e13320244c05: Pull complete 
6a34d702f281: Pull complete 
de90f4481477: Pull complete 
d575200ae375: Pull complete 
aea400be5707: Pull complete 
38c930606a4f: Pull complete 
Digest: sha256:0f2e15fb8b47db2518b1428239ed3e3fe6a6693401b2cf19552063562cfc2fc4	#签名信息,也就是防伪标识
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest		# 真实地址

# 下面的两个命令是等价的
docker pull docker.io/library/mysql:latest 等价与 docker pull mysql

# 指定版本下载
[root@192 ~]# docker pull python:3.9-slim-bullseye
3.9-slim-bullseye: Pulling from library/python
04e7578caeaa: Pull complete 
97413375e23b: Pull complete 
8153a73f01c8: Pull complete 
579b68351ad8: Pull complete 
e30845563140: Pull complete 
Digest: sha256:4699b511fd5a0bf93f8067749285f040d593709dbb46016334556c972f055099
Status: Downloaded newer image for python:3.9-slim-bullseye
docker.io/library/python:3.9-slim-bullseye

docker rmi

描述:删除一个或多个镜像 用法: docker rmi [OPTIONS] IMAGE [IMAGE...]

从主机节点中删除(并取消标记)一个或多个镜像。如果镜像有多个标签,使用此命令并将标签作为参数仅删除标签。如果标签是镜像的唯一标签,则镜像和标签都被删除。

这不会从仓库中删除镜像。您无法删除正在运行容器的镜像,除非使用强制参数 -f 。 查看主机上的所有镜像使用 docker images 命令。

选项

参数描述
-f, –force强制删除图像
–no-prune不要删除未标记的父项
[root@192 ~]#docker rmi -f 镜像id	# 删除指定的镜像
[root@192 ~]#docker rmi -f 镜像id 镜像id 镜像id……		# 删除多个镜像
[root@192 ~]# docker rmi -f $(docker images -aq)	# 删除全部的镜像

容器命令

说明:我们有了镜像才可以创建容器,在Linux中下载一个CentOS镜像来测试学习。

docker pull centos

新建容器并启动

docker run [可选参数] 镜像

docker run [可选参数] image

# 常用参数说明
--name="Name"	# 起一个容器名字,比如tomcat01、tomcat02……
-d		# 后台方式运行
-it		# 使用交互方式运行,进入容器查看内容
-p		# 指定容器的端口 -p 8080:8080
	-p ip:主机端口:容器端口
	-p 主机端口:容器端口(常用)
	-p 容器端口
	容器端口
-P		# 随机指定端口

测试,启动并进入容器

[root@192 ~]# docker run -it centos /bin/bash
[root@e663c4f0b596 /]# ls		# 查看容器内的CentOS,基础版本,很多命令都是不完善的。
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

从容器中退回主机,并停止容器

[root@e663c4f0b596 /]# exit		# 直接停止并退出容器
exit
[root@192 ~]# ls
anaconda-ks.cfg  Clash for Windows-0.20.39-x64-linux  Desktop    Downloads  Pictures  Python-3.5.0      Templates  Videos
chatglm.cpp      Clash.for.Windows-0.20.zip           Documents  Music      Public    Python-3.5.0.tgz  tsz.txt

不停止容器,直接退出到主机 Ctrl+p+q

docker ps

描述:列出容器 用法:docker ps [OPTIONS]

选项

参数缺省描述
-a, –all显示所有容器(默认显示正在运行)
-f, –filter根据提供的条件筛选输出
–format使用自定义模板设置输出格式:
“table”:使用列标题以表格格式打印输出(默认)
“table TEMPLATE”:使用给定的 Go 模板以表格格式打印输出
“json”:以 JSON 格式打印
“TEMPLATE”:使用给定的 Go 模板打印输出。
参考https://docs.docker.com/go/formatting/
有关使用模板设置输出格式的详细信息
-n, –last-1显示 n 个上次创建的容器(包括所有状态)
-l, –latest显示最新创建的容器(包括所有状态)
–no-trunc不要截断输出
-q, –quiet仅显示容器 ID
-s, –size显示文件总大小

用法实例

# docker ps 命令
-a		# 显示所有容器(默认显示正在运行)
-n=?		# 显示 n 个上次创建的容器(包括所有状态)
-q		# 仅显示容器 ID

[root@192 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@192 ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS                     PORTS     NAMES
e663c4f0b596   centos         "/bin/bash"   9 minutes ago   Exited (0) 4 minutes ago             awesome_jones
365d43d7c584   d2c94e258dcb   "/hello"      8 days ago      Exited (0) 8 days ago                sweet_ptolemy

docker rm

描述:删除一个或多个容器 用法:docker rm [OPTIONS] CONTAINER [CONTAINER...]

选项

参数描述
-f, –force强制移除正在运行的容器(使用 SIGKILL)
-l, –link删除指定的链接
-v, –volumes删除与容器关联的匿名卷

用法实例

docker rm 容器id		# 删除指定的容器
docker rm -f $(docker ps -aq)	# 删除所有的容器
docker ps -a -q|xargs docker rm	# 删除所有的容器(感觉没有 -f 参考,不太严谨)

docker start

docker start 容器id # 启动容器

dokcer stop

docker stop 容器id # 停止当前正在运行的容器

描述:终止一个或多个正在运行的容器 用法:docker kill [OPTIONS] CONTAINER [CONTAINER...]

子命令会终止一个或多个容器。容器内的主进程会收到信号(默认信号),或者是使用选项指定的信号。您可以通过容器的ID、ID前缀或名称来引用容器。 docker kill SIGKILL --signal

该标志设置发送到容器的系统调用信号。例如,此信号可以是格式为 的信号名称,也可以是与内核系统调用表中的位置匹配的无符号数字,例如。--signal SIG<NAME> SIGINT 2

虽然默认的()信号会终止容器,但是通过设置的信号可能是非终止的,这取决于容器的主进程。例如,在大多数情况下,信号将是非终止的,容器在接收到信号后会继续运行。SIGKILL --signal SIGHUP

挖坑:以上原官网个命令排版应该有问题,以后我学会了在重新排版

注意

ENTRYPOINT和以 shell 形式运行的子进程不会传递信号。这意味着可执行文件不是容器的 PID 1,也不会接收 Unix 信号。CMD /bin/sh -c

选项

参数描述
-s, –signal发送到容器的信号

示例

发送一个KILL信号给一个容器:SIGKILL my_container

docker kill my_container

发送一个自定义信号给一个容器(--signal) 以下示例向名为:my_container的容器发送信号SIGHUP

docker kill --signal=SIGHUP  my_container

您可以通过名称或编号指定自定义信号。前缀是可选的,因此以下示例是等效的:SIG

docker kill --signal=SIGHUP my_container
docker kill --signal=HUP my_container
docker kill --signal=1 my_container

请参考signal(7)手册页,查看标准Linux信号列表。

docker restart

docker restart 容器id # 重启容器容器

docker kill

docker kill 容器id # 强制停止当前容器