Loading

二、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

img

报错了,因为我们正在使用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

img一个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

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

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

docker ps [OPTIONS]

OPTIONS说明:

  • -a :列出当前所有正在运行的容器+历史上运行过的

  • -l :显示最近创建的容器。

  • -n:显示最近n个创建的容器。

  • -q :静默模式,只显示容器编号。

  • --no-trunc :不截断输出。

img

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

3. 退出容器

exit:容器停止退出;

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

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

docker run -it --name centosByDocker centos

img

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

img,然后执行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

img

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

img

很重要的要说明的一点: 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"

img

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

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

img

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

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

img

查看容器内细节命名: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

img

exec与attach的区别:

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

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

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

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

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

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

3.5 总结

img

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 # 截取容器停止时的退出状态值

posted @ 2021-12-29 20:53  炒焖煎糖板栗  阅读(125)  评论(0编辑  收藏  举报