Docker 镜像的操作
- 1. 拉取镜像
- 2 查看本地镜像
- 3 搜索镜像
- 4 删除本地镜像
- 5 镜像的导入和导出
- 6 创建镜像
- 6.1 已有镜像的容器创建
- 6.2 基于本地模板导入
- 7 导出和导入镜像
1. 拉取镜像
# 从docker hub中央仓库拉取镜像到本地
docker pull 镜像名称[:tag]
镜像名称: 这个是仓库地址;url的地址一样
tag: 这个才是镜像,如果不指定那么就是latest
# 例如:
docker pull daocloud.io/library/tomcat:8.5.15-jre8
2 查看本地镜像
# 查看本地已经安装过的镜像信息,包含标识,名称,版本,更新时间,大小
docker images # 列出所有镜像
docker image ls # 列出所有镜像
docker images -q # 只查看镜像ID
# 查看该镜像的详细信息
docker inspect [REPOSITORY][:latest] | [IMAGE ID]
# 可以格式化输出
docker inspect -f {{".Config.Image"}} hello-world
# 标签TAG区分发行版本
# docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
docker tag SOURCE_IMAGE_REPOSITORY[:TAG] TARGET_IMAGE_REPOSITORY[:TAG]
docker tag hello-world:latest hello-world:1.1.0
# 查看镜像内支持的环境变量
docker run [REPOSITORY][:TAG] | [IMAGE ID] env
例如:docker run b2cb11db9d3d env
3 搜索镜像
# docker search [关键字]
docker search mysql
4 删除本地镜像
# 镜像会占用磁盘空间,可以直接手动删除,标识通过查看获取
docker rmi [REPOSITORY][:tag] | [IMAGE ID] # 可选择标识,如果不选,默认latest
docker rmi $(docker images -q) # 删除所有镜像
# docker images 查看到IMAGE ID
# 删除之前镜像之前,需要先删依赖该镜像的所有容器
docker ps -a # 查看所有容器
docker rm [CONTAINER ID] # 删除容器
# 删除依赖某个镜像的所有容器,并删除该镜像
docker ps -qa -f ancestor=nginx:1.9.5 # 查看"nginx:1.9.5"镜像ID的所有容器
docker stop $(docker ps -qa -f ancestor=nginx:1.9.5) # 停止以"nginx:1.9.5"镜像ID的所有容器
docker rm $(docker ps -qa -f ancestor=nginx:1.9.5) # 删除以"nginx:1.9.5"镜像ID的所有容器
docker rmi nginx:1.9.5
# 查找出所有以 image 之后创建的 image 的父 image,并删除子镜像,然后删除父镜像
docker rmi $(docker image ls -q --filter since=ba6acccedd29)
docker rmi ba6acccedd29
5 镜像的导入和导出
# 如果因为网络原因可以通过硬盘的方式传输镜像,虽然不规范,但是有效,但是这种方式导出的镜像名称和版本都是null,需要手动修改
# 注意: 导入的镜像ID一样的,则将会合并一个
# 1. 将本地的镜像导出
docker save -o 导出的路径/自定义名字 镜像id
# 例如:
docker save -o /root/tomcat.image b8dfe9ade316 # b8dfe9ade316为镜像ID,可通过docker images查询
# 2. 加载本地的镜像文件【导出的镜像名称和版本都是null】,并需要重新命名镜像名称和版本
docker load -i 镜像文件
# 例如:
docker load -i tomcat.image
#重新命名镜像名称和版本
docker tag 镜像id 新镜像名称:版本
# 例如:
docker tag b8dfe9ade316 tomcat:8.5 # b8dfe9ade316镜像ID ,可通过docker images查询
6 创建镜像
6.1 已有镜像的容器创建
# 运行中的容器ID:1dae1e42ed1d
# -m 提交信息
# -a 作者
docker commit -m "Add a new file" -a "huzhike" 1dae1e42ed1d test:1.1.0
6.2 基于本地模板导入
cat xxx.tar.gz | docker import - ubuntu:14.04
7 导出和导入镜像
# 导出
# docker save -o xxx.tar REPOSITORY[:TAG] | IMAGE ID
docker save -o ubuntu_14.04.tar ubuntu:latest
docker save -o ubuntu_14.04.tar ba6acccedd29
# 导入
docker load --input ubuntu_14.04.tar
或者
docker load < ubuntu_14.04.tar