Docker 镜像(Image)常用命令总结
简单总结一下Docker 镜像(Image)常用命令,也算给自己复习一下。
镜像就像是一个只读的模板,这里面装着运行应用程序需要的一切,文件系统、库、依赖还有代码,就像一个装满工具的工具箱。而容器呢,就是从这个模板里变出来的可运行实例。下面开始总结
1. 搜索镜像(search)
有时候咱们想找个合适的镜像,就像在超市里找自己需要的商品一样。这时候就可以用 docker search <image_name> 命令,从 Docker Hub(这可是默认的公共镜像仓库,就像一个超大的镜像超市)里搜索可用的镜像。比如说,你想找和 nginx 相关的镜像,就可以输入 docker search nginx,一下子就能看到好多相关的镜像信息。
2. 拉取镜像(pull)
找到合适的镜像后,就得把它下载到本地,就像把超市里的商品买回家。用 docker pull <image_name>[:tag] 命令就能搞定。这里的 [:tag] 是可选的,用来指定镜像的版本标签,要是不指定,默认就会拉取 latest 标签的镜像。比如你想拉取最新版本的 Ubuntu 镜像,就输入 docker pull ubuntu;要是想拉取指定版本的 Redis 镜像,像 6.2 版本的,就输入 docker pull redis:6.2。
3. 查看本地镜像(images / image ls)
把镜像下载到本地后,想知道自己都有哪些“宝贝”,就可以用 docker images 或者 docker image ls 命令,列出本地已经存在的所有镜像,就像查看自己家里的存货一样。
4. 删除本地镜像(rmi / image rm)
要是有些镜像不用了,想清理一下空间,就可以删除它们。用 docker rmi <image_name>[:tag] | <image_id> 命令。不过要注意哦,如果有正在运行的容器是基于这个镜像创建的,那就得先停止并删除这些容器,才能成功删除镜像。要是不想那么麻烦,也可以用 -f 或者 --force 参数强制删除镜像,不过这种方式不太推荐,就像强行拆房子,可能会出问题。比如说,要通过名称和标签删除 redis:6.2 镜像,就输入 docker rmi redis:6.2;通过镜像 ID 删除(假设 ID 是 edbdd97bf78b),就输入 docker rmi edbdd97bf78b;要删除多个镜像,像 ubuntu:latest 和 redis:latest,就输入 docker rmi ubuntu:latest redis:latest。
5. 查看镜像详细信息(inspect)
有时候咱们想了解镜像的详细情况,就像了解一个商品的详细参数一样。这时候可以用 docker inspect <image_name>[:tag] | <image_id> 命令,它会以 JSON 格式返回镜像的详细元数据,让你对镜像了如指掌。比如输入 docker inspect ubuntu:latest,就能看到这个镜像的详细信息。
6. 查看镜像历史(history)
想知道一个镜像是怎么构建出来的,就像了解一个产品的生产过程一样。用 docker history <image_name>[:tag] | <image_id> 命令,就能显示镜像的构建历史,也就是组成这个镜像的每一层(layer)。比如输入 docker history nginx:latest,就能看到 nginx 镜像的构建过程。
7. 保存镜像为 tar 文件(save)
有时候咱们想把镜像分享给别人,或者在没有网络的情况下使用,就可以把镜像打包成一个.tar 归档文件,就像把自己的东西打包带走一样。用 docker save -o <output_filename.tar> <image_name>[:tag] 命令。比如要把 nginx:latest 镜像保存为 my_nginx_image.tar 文件,就输入 docker save -o my_nginx_image.tar nginx:latest。
8. 从 tar 文件加载镜像(load)
要是收到了别人打包好的镜像.tar 文件,想在本地使用,就可以用 docker load -i <input_filename.tar> 命令加载镜像到本地,就像把打包的东西拆开重新使用一样。比如输入 docker load -i my_nginx_image.tar,就能把镜像加载到本地。
9. 为镜像打标签(tag)
有时候咱们想把一个镜像推送到不同的仓库,或者给它换个名字,就像给商品换个包装一样。这时候可以用 docker tag <source_image>[:tag] <target_image>[:tag] 命令为已存在的镜像创建一个新的标签(相当于一个别名)。比如要把本地的 nginx:latest 标记为 myrepo/mynginx:1.0,就输入 docker tag nginx:latest myrepo/mynginx:1.0;要是想删除这个打了标签的镜像,就输入 docker rmi myrepo/mynginx:1.0