这是我参与8月更文挑战的第11天,活动详情查看:8月更文挑战 最好的学习方式:查看官方文档
但更好的学习方式可能是:学习并总结输出成文档
基础命令
docker info
显示docker基本信息,如容器数、镜像数、插件、内核等信息
docker version
查看docker版本信息
docker help
查看docker帮助信息,可以看到docker的基本用法及所有命令的简介。使用docker COMMAND --help
还可以查看具体的命令的使用帮助。如:docker images --help
docer inspect
返回docker 相关对象的信息,如容器对象、镜像对象等。
示例:
docker inspect d1b93a440f8b
镜像命令
docker images
查看本地所有镜像
docker pull
拉取镜像。用法:docker pull [OPTIONS] NAME[:TAG|@DIGEST]
默认是从官方镜像仓库拉取Docker Hub。当我们需要某个镜像时,我们就可以访问官方的镜像仓库查找。
示例:
# 拉取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 .