官方文档:https://docs.docker.com/engine/reference/commandline/docker/
菜鸟教程:https://www.runoob.com/docker/docker-command-manual.html
Docker的操作命令和可用参数非常多,经常不用容易生疏,做个文档记录一下做个备忘,持续补充…
镜像管理
images
docker images
列出镜像信息,还有一个命令是image
,是用于镜像操作的
常用命令
列出最近创建的镜像:docker images
列出某个仓库和Tag的镜像:docker images REPOSITORY:TAG
仅列出id:docker images -q
过滤未打tag的镜像:docker images --filter "dangling=true"
格式化输出:
docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
rmi
docker rmi
用于删除镜像
常用命令
强制删除镜像:docker rmi -f IMAGES
tag
docker tag
标记本地镜像,将其归入某一仓库。不是修改镜像元信息,原来的镜像保留,生成一个新的镜像:docker tag busybox freeze/busybox:1.0
build
docker build
构建镜像,之前也写了一篇关于dockerfile
的文章,里面有更详细的介绍。
常用命令
使用dockerfile
构建镜像:docker build - < Dockerfile
或Get-Content Dockerfile | docker build -
打标签:docker build -t vieux/apache:2.0 .
history
docker history
查看指定镜像的创建历史
常用命令
查看创建历史,不省略输出信息:docker history --no-trunc nginx
列出具体日期:docker history freeze/busybox:1.0 --human=false
格式化输出,列出创建命令:
docker history --format "{{.CreatedBy}}" --no-trunc nginx
仅输出镜像id:docker history busybox -q
load/save
docker save
将指定(多个)镜像保存成 tar 归档文件。仅指定REPOSITORY
会把所有关联的TAG
也导出。
docker load
导入使用 docker save
命令导出的镜像。docker load
不能对载入的镜像重命名。
常用命令
导出:docker save busybox:1.32 > busybox_1.32.tar
导入:docker load < busybox_1.32.tar
commit
docker commit
从容器创建一个新的镜像。一般用于调试,不建议用到实际生产,因为commit
会提交额外的文件,添加新的层,并且commit
内容不透明。
常用命令
本地提交:docker commit --author "Freeze" --message "修改index内容" webserver nginx:v1.1
修改镜像配置:docker commit --change "ENV DEBUG=true" c3f279d17e0a svendowideit/testimage:version3
diff
docker diff
列出容器和镜像之间的差异文件,
A
表示文件或目录添加
D
表示文件或目录被删除
C
表示文件或目录变更
镜像仓库
search
docker search
搜索镜像
常用命令
限制输出,默认限制是25:docker search --limit=5 busybox
格式化输出,配合--no-trunc
完整显示:
docker search --format "{{.Name}}: {{.Description}}" --no-trunc nginx
根据START
过滤:docker search --filter=stars=10 busybox
过滤仅显示官方镜像:docker search --filter is-official=true busybox
login
docker login
登录到镜像仓库
常用命令
交互式登录:docker login docker.io
通过文件流登录:cat ~/my_password.txt | docker login --username foo --password-stdin
push/pull
通过docker login
成功登录镜像仓库后(这里使用的是默认的docker hub
,私有仓库要在仓库前加地址),使用docker push USERNAME/busybox:1.0
推送本地镜像到镜像仓库
使用docker pull USERNAME/busybox:1.0
从镜像仓库中拉取镜像。