FreezeJ' Blog

Docker常用命令(二)

2021-12-14

官方文档: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 - < DockerfileGet-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表示文件或目录变更

镜像仓库

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从镜像仓库中拉取镜像。