二、Docker常用命令

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 二、Docker常用命令

Docker常用命令

3.1 帮助命令

docker version:详细版本信息 docker -v:简略版本信息

docker info:对docker镜像、容器、宿主机情况等描述

docker --help:类似于Linux的man,列举所有命令及其含义解释。

3.2 镜像命令

docker images [OPTIONS] [ARGS]:列出本地主机上的镜像

OPTIONS说明:可以通过docker iamges --help查看OPTIONS

  • -a :a表示all,列出本地所有的镜像(含中间映像层)
  • -q :只显示镜像ID。
  • --digests :显示镜像的摘要信息
  • --no-trunc::显示完整的镜像信息

ARGS说明:可以直接写镜像名,比如centos,mysql等等,就是直接查对应的镜像信息。

docker search [OPTIONS] 某个个xxx镜像名字:查镜像

OPTIONS说明: 可以通过docker search --help查看OPTIONS

  • --no-trunc : 显示完整的镜像描述
  • --limit int : 显示最多int条信息。

docker pull 某个个xxx镜像名字[:TAG]:下载镜像

不写版本号默认下载最新版

docker rmi 某个个xxx镜像ID:删除镜像

我们来删一下hello-world

报错了,因为我们正在使用hello-world需要加-f强制删除,docker rmi -f hello-world

  • 删除单个:docker rmi -f 镜像ID/镜像名[:TAG]
  • 删除多个:docker rmi -f 镜像名1:TAG 镜像名2:TAG
  • 删除全部:docker rmi -f $(docker images -qa)

3.3 容器命令

1. 下载镜像,新建并启动容器

有镜像才能创建容器,这是根本前提(下载一个CentOS镜像演示) docker pull centos

一个centos只有231M。

新建并启动容器,docker run [options] imageID/imageName[:TAG] [command] [arg..]

options说明:

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

现在我们进入了,centos容器。(-i -t可以合在一起写成-it)

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

docker ps [OPTIONS]

OPTIONS说明:

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

可以看到正在运行的容器ID,跟我们启动的centos容器一致。这表示我们通过docker在centos上运行了一个centos容器。

3. 退出容器

exit:容器停止退出;

ctrl+P+Q:容器不停止退出

先exit退出我们运行的centos容器实例。然后,我们以centosByDocker为名字,生成一个centos的容器实例:

docker run -it --name centosByDocker centos

然后按ctrl+P+Q,(按了之后还要按一下回车)回到我们的宿主机:

,然后执行docker ps可以看到容器没有关闭。

4. 启动容器(start 与 run区分开) & 重启容器(restart)

docker start是启动已有容器,docker run是新建并启动容器,这里需要区分开。

启动容器:docker start 容器ID/容器Names即可启动容器。

重启容器:docker restart 容器ID/容器Names

5. 停止容器 & 强制停止容器

停止容器:docker stop 容器ID/容器name

强制停止容器:docker kill 容器ID/容器name

6. 删除已停止的容器

docker rm 容器ID:删除之前需要停止容器。

docker rm -f 容器ID:强制删除,容器运行时可以直接删除。

一次性删除多个容器:

  • docker rm -f $(docker ps -a -q)
  • docker ps -a -q | xargs docker rm
  • docker rm 容器ID1 容器ID2 ..

注:删除的时候不需要吧容器ID写全,写两位就可以,删除前请核对,防止误删

3.4 重要容器命令

1. 启动守护式容器

命令:docker run -d 镜像名[:TAG]/镜像ID

(后台启动)启动守护容器centos:docker run -d --name centosde centos

问题:然后docker ps进行查看, 会发现容器已经退出,并没有处于运行状态。

很重要的要说明的一点: Docker容器后台运行,就必须有一个前台进程。容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。

这个是docker的机制问题,比如你的web容器,我们以nginx为例,正常情况下,我们配置启动服务只需要启动相应的service即可。例如service nginx start但是,这样做,nginx为后台进程模式运行,就导致docker前台没有运行的应用,,这样的容器后台启动后,会立即自杀因为他觉得他没事可做了。所以,最佳的解决方案是,将你要运行的程序以前台进程的形式运行。

2. 查看容器日志

命令:docker logs -f -t --tail 数字 容器ID

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

后台运行centos,循环打印一句话:

docker run -d centos /bin/sh -c "while true;do echo hello zzyy;sleep 2;done"

查询一下容器日志:docker logs -f -t --tail 10 容器ID/容器NAME

这里加了-f会不停的追加,如果不加就只会打印--tail指定数目的记录。

3. 查看容器内的进程 & 查看容器内部细节

查看容器内进程命令:docker top 容器ID/容器名

查看容器内细节命名:docker inspect 容器ID/容器名,输出形式为json字符串。

4. 进入正在运行的容器并以命令行交互

docker run -it centos 创建并启动一个centos容器,然后ctrl+p+q退出容器但不关闭。

那么如何再次进入这个容器呢?

  • 使用docker attach 容器ID/容器name命令即可再次进入容器。
  • 使用docker exec -it 容器ID/容器name /bin/bash

注:exec可以不进入容器,直接返回容器中执行的结果,例如:

docker exec -it 容器ID/容器name ls -l

exec与attach的区别:

attach 直接进入容器启动命令的终端,不会启动新的进程;

exec 是在容器中打开新的终端,并且可以启动新的进程;

通过exec进入的容器,使用exit退出时,容器不会关闭。

关于-i -t 与 -it的区别:i是创建标准io接口,t是伪造tty终端;如果光一个i的话,虽然也可以输入命令得到输出,但结果很不友好,自己可以试试;如果光一个t,就只有一个tty,你输入什么都没有反应,因为你没有开放对应的输入接口;正确的应该是-it,开放接口并创建伪tty。

5. 从容器内拷贝文件到主机上

命令:docker cp 容器ID:容器内路径 目的主机路径

3.5 总结

attach Attach to a running container  当前 shell 下 attach 连接指定运行镜像

build Build an image from a Dockerfile  通过 Dockerfile 定制镜像

commit Create a new image from a container changes  提交当前容器为新的镜像

cp Copy files/folders from the containers filesystem to the host path 从容器中拷贝指定文件或者目录到宿主机中

create Create a new container  创建一个新的容器,同 run,但不启动容器

diff Inspect changes on a container's filesystem  查看 docker 容器变化

events Get real time events from the server  从 docker 服务获取容器实时事件

exec Run a command in an existing container  在已存在的容器上运行命令

export Stream the contents of a container as a tar archive  导出容器的内容流作为一个 tar 归档文件[对应 import ]

history Show the history of an image  展示一个镜像形成历史

images List images  列出系统当前镜像

import Create a new filesystem image from the contents of a tarball  从tar包中的内容创建一个新的文件系统映像[对应export]

info Display system-wide information  显示系统相关信息

inspect Return low-level information on a container  查看容器详细信息

kill Kill a running container  kill 指定 docker 容器

load Load an image from a tar archive  从一个 tar 包中加载一个镜像[对应 save]

login Register or Login to the docker registry server  注册或者登陆一个 docker 源服务器

logout Log out from a Docker registry server  从当前 Docker registry 退出

logs Fetch the logs of a container  输出当前容器日志信息

port Lookup the public-facing port which is NAT-ed to PRIVATE_PORT  查看映射端口对应的容器内部源端口

pause Pause all processes within a container  暂停容器

ps List containers  列出容器列表

pull Pull an image or a repository from the docker registry server  从docker镜像源服务器拉取指定镜像或者库镜像

push Push an image or a repository to the docker registry server  推送指定镜像或者库镜像至docker源服务器

restart Restart a running container  重启运行的容器

rm Remove one or more containers  移除一个或者多个容器

rmi Remove one or more images  移除一个或多个镜像[无容器使用该镜像才可删除,否则需删除相关容器才可继续或 -f 强制删除]

run Run a command in a new container  创建一个新的容器并运行一个命令

save Save an image to a tar archive  保存一个镜像为一个 tar 包[对应 load]

search Search for an image on the Docker Hub  在 docker hub 中搜索镜像

start Start a stopped containers  启动容器

stop Stop a running containers  停止容器

tag Tag an image into a repository  给源中镜像打标签

top Lookup the running processes of a container  查看容器中运行的进程信息

unpause Unpause a paused container  取消暂停容器

version Show the docker version information  查看 docker 版本号

wait Block until a container stops, then print its exit code  截取容器停止时的退出状态值


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
安全 Docker 容器
|
1天前
|
NoSQL 关系型数据库 MySQL
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
74 56
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
|
2月前
|
网络安全 数据安全/隐私保护 Docker
|
8天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
130 77
|
5天前
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
57 24
|
1月前
|
Java 应用服务中间件 Linux
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
本文主要讲解了Docker的安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库以及Docker容器虚拟化与传统虚拟机比较。
470 11
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
|
7天前
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
70 6
|
3月前
|
Linux Docker 容器
Docker操作 :容器命令
Docker操作 (四)
205 56
|
2月前
|
存储 监控 安全
|
2月前
|
存储 关系型数据库 MySQL