Docker——常用命令(帮助命令 & 镜像命令 & 容器命令)

Posted 张起灵-小哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker——常用命令(帮助命令 & 镜像命令 & 容器命令)相关的知识,希望对你有一定的参考价值。

文章目录:

1.开篇

2.帮助命令

2.1 docker version

2.2 docker info

2.3 docker --help

3.镜像命令

3.1 docker images

3.2 docker search

3.3 docker pull

3.4 docker rmi

4.容器命令

4.1 docker run(启动交互式容器)

4.2 docker ps

4.3 docker start

4.4 docker restart

4.5 docker stop

4.6 docker kill

4.7 docker rm

4.8 docker run(启动守护式容器)

4.9 docker logs

4.10 docker top

4.11 docker inspect

4.12 docker exec

4.13 docker attach

4.14 docker cp


1.开篇

所有Docker相关的命令,均来自Docker的官方文档:https://docs.docker.com/engine/reference/commandline/top/


2.帮助命令

2.1 docker version

查看docker版本信息

2.2 docker info

显示系统范围的信息

2.3 docker --help

查看docker中的所有命令及相关参数信息


3.镜像命令

3.1 docker images

列出本地主机上都有哪些镜像。

各个选项说明:

  • REPOSITORY:表示镜像的仓库源
  • TAG:镜像的标签(版本号)
  • IMAGE ID:镜像ID(可以理解为数据库表的主键)
  • CREATED:镜像创建时间
  • SIZE:镜像大小

同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像

-a : 列出本地所有的镜像(含中间映像层)。

-q :只显示镜像ID。

--digests : 显示镜像的摘要信息。

--no-trunc :显示完整的镜像信息。

3.2 docker search

在Docker Hub中搜索某个镜像。

不加参数,则默认检索出所有tomcat相关的镜像信息。

--limit,表示从检索记录中筛选出最大搜索的结果;1表示只筛选出1条。

--filter,表示根据提供的条件进行过滤;stars=5000表示过滤掉starts低于5000的nginx镜像信息。

3.3 docker pull

从仓库注册服务器中拉取某个仓库或者镜像。

3.4 docker rmi

删除一个或多个镜像。

单独的执行 docker rmi images镜像名,会报错,需要加上 --force(-f)进行强制删除。

删除多个镜像:docker rmi -f 镜像名1:TAG 镜像名2:TAG

删除全部镜像:docker rmi -f ${docker images -qa}  这个$中的内容docker images -qa,就是先检索出本地主机上都有哪些镜像,然后逐一删除。有点类似于mysql中的where id in(1001,1002,1003)、java中的iterator迭代器。


4.容器命令

根据docker三要素(仓库、镜像、容器)可以知道,有镜像才可以生产容器实例运行。

所以下面我首先从Docker Hub上拉取一个centos做测试。

4.1 docker run(启动交互式容器)

新建并启动容器。

  • --name="容器新名字": 为容器指定一个名称;
  • -d: 后台运行容器,并返回容器ID,也即启动守护式容器;
  • -i:以交互模式运行容器,通常与 -t 同时使用;
  • -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
  • -P: 随机端口映射;
  • -p: 指定端口映射,有以下四种格式

         ip:hostPort:containerPort
         ip::containerPort
         hostPort:containerPort
         containerPort

箭头所指的命令等价于:docker run -it afb6fca791e0 /bin/bash,此处启动的是交互式容器,也就是在当前宿主机的docker中,新开了一个linux终端。

在docker开启一个linux终端之后,对比这里的IMAGE ID、CONTAINER ID可以看到,当前的mycentos是根据centos这个镜像生产的容器实例。

4.2 docker ps

列出当前所有正在运行的容器。

  • -a :列出当前所有正在运行的容器+历史上运行过的
  • -l :显示最近创建的容器。
  • -n:显示最近n个创建的容器。
  • -q :静默模式,只显示容器编号。
  • --no-trunc :不截断输出。

退出容器有两个命令:①exit:将容器停止并退出;②ctrl + P + Q:容器不停止的情况下退出。

下面执行完 docker run -it afb6fca791e0 /bin/bash 进入docker中的linux终端之后,exit退出,然后可以使用docker ps -l 查看最近创建的容器;也可以docker ps -a查看历史上运行过的所有容器。

4.3 docker start

4.4 docker restart

4.5 docker stop

4.6 docker kill

上面四个分别是:启动容器、重启容器、优雅停止容器、暴力停止容器。

4.7 docker rm

删除已停止的容器。

删除单个容器:docker rm -f 容器ID

删除多个容器:docker rm -f ${docker ps -qa}

4.8 docker run(启动守护式容器)

#使用镜像centos:latest以后台模式启动一个容器
docker run -d centos
 
问题:然后docker ps -a 进行查看,会发现容器已经退出
很重要的要说明的一点: Docker容器后台运行,就必须有一个前台进程.
容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。
 
这个是docker的机制问题,比如你的web容器,我们以nginx为例,正常情况下,我们配置启动服务只需要启动响应的service即可。例如service nginx start
但是,这样做,nginx为后台进程模式运行,就导致docker前台没有运行的应用,这样的容器后台启动后,会立即自杀因为他觉得他没事可做了。
所以,最佳的解决方案是,将你要运行的程序以前台进程的形式运行。

4.9 docker logs

查看容器日志信息。

*   -t 是加入时间戳
*   -f 跟随最新的日志打印
*   --tail 数字 显示最后多少条

4.10 docker top

前面那个docker ps是列出当前主机中正在运行的所有容器。而docker top则是查看容器内正在运行的进程。

4.11 docker inspect

查看容器的内部细节。

4.12 docker exec

4.13 docker attach

上面这两个命令都是进入正在运行的容器,并以命令行形式交互。

两者的区别是:attach是直接进入容器启动命令的终端,不会启动新的进程。exec是在容器中打开新的终端,并且可以启动新的进程。

可以看到attach执行之后,则是直接进入了linux的终端。而exec如果在后面添加相应的linux命令则可以不进入linux终端,仍然处在当前宿主机中。

4.14 docker cp

将容器中的文件拷贝的主机中。

以上是关于Docker——常用命令(帮助命令 & 镜像命令 & 容器命令)的主要内容,如果未能解决你的问题,请参考以下文章

超值!Docker 常用命令汇总

Docker 学习笔记总结

Docker 学习笔记总结

docker学习笔记1

02-命令篇——基础命令&常用命令

Docker常用命令大全