Docker常用命令

162 阅读3分钟

这是我参与8月更文挑战的第11天,活动详情查看:8月更文挑战 最好的学习方式:查看官方文档

Docker官方文档:docs.docker.com/engine/refe…

但更好的学习方式可能是:学习并总结输出成文档

基础命令

docker info

显示docker基本信息,如容器数、镜像数、插件、内核等信息

image-20210821105207853.png

docker version

查看docker版本信息

docker help

查看docker帮助信息,可以看到docker的基本用法及所有命令的简介。使用docker COMMAND --help还可以查看具体的命令的使用帮助。如:docker images --help

1.png

2.png

docer inspect

返回docker 相关对象的信息,如容器对象、镜像对象等。

示例:

docker inspect d1b93a440f8b

镜像命令

docker images

查看本地所有镜像

docker pull

拉取镜像。用法:docker pull [OPTIONS] NAME[:TAG|@DIGEST]

默认是从官方镜像仓库拉取Docker Hub。当我们需要某个镜像时,我们就可以访问官方的镜像仓库查找。

3.png

示例:

# 拉取zulu jdk镜像
docker pull mcr.microsoft.com/java/jdk:8u222-zulu-centos

有几个注意事项:

  • 如果TAG不填写,则默认拉取最新版本镜像
  • @DIGEST为镜像的摘要,可以理解为每个镜像的id。官方定义为:使用V2以及V2以上格式的镜像将会有一个叫做digest的内容可寻址标识符。
docker rmi

删除镜像

可选项:-v 强制删除

当镜像已经启动过容器(即使容器已经停止运行),是不能直接删除镜像的。

## 运行删除命令
docker rmi hello-world
## 删除失败
Error response from daemon: conflict: unable to remove repository reference "hello-world" (must force) - container 6224436b148b is using its referenced image d1165f221234

这种情况,需要加-f选项,强制删除。

容器命令

docker ps

查看容器,默认只查看运行的容器

可选项

-a 查看所有容器,包括各种状态的容器

-n 查看最近创建的容器,示例: docker ps -n 5 最近创建的5个容器

-l 最近创建的的一个镜像

-s 展示容器文件大小

-q 只显示容器id

-f 过滤容器。当容器过多时,可以使用 -f 选项快速筛选容器。

示例:docker ps -a -f "name=obj" 查看名字包含「obj」的容器。

具体用法可参考:docs.docker.com/engine/refe…

-format 格式化显示,示例:docker ps --format "{{.ID}}: {{.Command}}"

--no-trunc 容器id不缩写显示

docker run

新建容器并启动

它有非常多的可选参数,具体可参考:docs.docker.com/engine/refe…

常见的可选项:

可选项说明
--detach , -d以后台形式运行容器并打印容器ID(PS:docker容器使用后台运行,就必须要有要一个前台进程,docker发现没有应用,就会自动停止 # nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
--name为容器分配名字
-it使用交互方式运行,进入容器查看内容
docker start

启动容器

docker restart

重启容器

docker stop

停止当前正在运行的容器

docker kill

强制停止当前容器

docker rm

移除镜像

# 移除所有状态为exited的容器
docker rm $(docker ps --filter status=exited -q)
docker exec

运行容器里的一个命令。

用法:docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

最常用选项:

-it 以交互的方式进入容器并运行命令

示例:

docker exec -it d1b93a440f8b bash

执行 exit可退出容器

docker attach

进入容器正在执行的终端(docker exec会新建一个新的终端执行)

docker cp

从容器拷贝文件到宿主机

用法:docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-

示例:

# 容器/home目录下的Test.java文件拷贝到宿主机的当前目录
docker cp d1b93a440f8b:/home/Test.java .

持续更新