Docker镜像
管理镜像
- 从docker hub下载镜像
1 | [root@node1 ~]# docker pull hello-world |
- 查看镜像信息
1
[root@node1 ~]# docker images hello-world
- 给镜像添加tag标签(起别名,创建链接)
1 | [root@localhost ~]# docker tag hello-world:latest hello-world:0.0.1 |
- 运行镜像
1 | [root@node1 ~]# docker run -it ubuntu bash |
- 查看镜像创建历史
1 | [root@node1 ~]# docker history hello-world |
- 搜索镜像
1 | [root@localhost ~]# docker search nginx |
删除镜像
rmi 只能删除 host 上的镜像,不会删除registry 的镜像。
如果一个镜像对应了多个 tag,只有当最后一个 tag 被删除时,镜像才被真正删除。
后台存在退出状态的容器,依赖该镜像时不可以删除,可以使用
docker ps -a
查看,使用docker rm 删除依赖的容器
,然后才能删除该镜像
1 | [root@node1 ~]# docker image rm ubuntu:18.10 |
清理临时镜像
1
[root@localhost ~]# docker image prune
构建镜像
基于已有镜像
第一步: 运行容器
1
[root@node1 ~]# docker run -it alpine
第二步: 进行自定义操作(安装bash)
1
2
3
4# 更新Alpine的软件源为国内(清华大学)的站点
echo "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/main/" > /etc/apk/repositories
# 安装bash vim
apk update && apk upgrade && apk add --no-cache bash bash-doc bash-completion vim && rm -rf /var/cache/apk/* && /bin/bash第三步: 在宿主机操作,查看容器名称
1
2
3
4# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4cb9079a8de4 alpine "/bin/sh" 5 minutes ago Up 5 minutes gallant_noether第四步: 将容器保存为镜像
1
2
3
4[root@node1 ~]# docker commit gallant_noether alpine-vim-bash:1.0
sha256:88068208e6f16aba3743a727a7da88659afc2c8315cb3981fda7fe48178b0f5f
# 或者根据容器id直接创建
[root@node1 ~]# docker commit 4cb9079a8de4 alpine-vim-bash:1.0第五步: 查看新镜像属性
1
2
3[root@node1 ~]# docker images alpine-vim-bash
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine-vim-bash 1.0 88068208e6f1 About a minute ago 34.1MB第六步: 从新镜像启动容器,验证操作
1
2docker run -it alpine-vim-bash:1.0
# vim
本地模板导入
第一步: 访问openvz模板网站,下载模板文件
第二步: 导入到docker镜像中
1
2
3[root@node1 ~]# wget http://download.openvz.org/template/precreated/centos-7-x86_64-minimal.tar.gz
[root@node1 ~]# cat centos-7-x86_64-minimal.tar.gz | docker import - centos:7第三步: 查看镜像列表
1
[root@node1 ~]# docker images centos:7
Dockerfile 构建镜像
第一步: 准备Dockerfile文件
1
2
3
4[root@node1 ~]# mkdir ~/docker && touch ~/docker/Dockerfile
[root@node1 ~]# vim ~/docker/Dockerfile
FROM alpine
RUN apk update && apk upgrade && apk add --no-cache bash bash-doc bash-completion vim && rm -rf /var/cache/apk/* && /bin/bash第二步: 使用docker build 创建镜像
1
2
3
4
5[root@node1 docker]# cd ~/docker
[root@node1 docker]# docker build -t alpine:2.0 .
# -t: 创建镜像的标签
# . 表示Dockerfile文件在当前路径
# -f 参数指定 Dockerfile 的位置第三步: 查看alpine:2.0镜像信息
1
[root@node1 docker]# docker images alpine:2.0
第四步: 查看镜像构建历史,验证镜像
1
2
3
4
5
6[root@node1 docker]# docker history alpine:2.0
IMAGE CREATED CREATED BY SIZE COMMENT
51462ce6c32b 9 minutes ago /bin/sh -c apk update && apk upgrade && apk … 36.3MB
c059bfaa849c 10 months ago /bin/sh -c #(nop) CMD ["/bin/sh"] 0B
<missing> 10 months ago /bin/sh -c #(nop) ADD file:9233f6f2237d79659… 5.59MB
导出和导入镜像
导出镜像
1
2docker save image_name > xx.tar
docker save -o xx.tar image_name导入镜像
1
2docker load < xx.tar
docker load -i xx.tar
镜像总结
命令 | 说明 |
---|---|
images | 显示镜像列表 |
history | 显示镜像构建历史 |
commit | 从容器创建新镜像 |
build | 从 Dockerfile 构建镜像 |
tag | 给镜像打 tag |
pull | 从 registry 下载镜像 |
push | 将 镜像 上传到 registry |
rmi | 删除 Docker host 中的镜像 |
search | 搜索 Docker Hub 中的镜像 |
image prune | 清理临时镜像 |
镜像命令
docker images
列出本地主机上的镜像显示说明:
1
2
3
4
5
6
7
8
9
10REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,
docker 将默认使用 ubuntu:latest 镜像OPTIONS说明:
1
2
3
4-a :列出本地所有的镜像(含中间映像层)
-q :只显示镜像ID。
--digests :显示镜像的摘要信息
--no-trunc :显示完整的镜像信息
docker search 某个XXX镜像名字
从网站:https://hub.docker.com 上查找
命令:
docker search [OPTIONS] 镜像名字
OPTIONS说明
1
2
3--no-trunc : 显示完整的镜像描述
-s : 列出收藏数不小于指定值的镜像。
--automated : 只列出 automated build类型的镜像;
docker pull 某个XXX镜像名字
下载镜像docker pull 镜像名字[:TAG]
docker rmi 某个XXX镜像名字ID
删除镜像删除单个:
docker rmi -f 镜像ID
删除多个:
docker rmi -f 镜像名1:TAG 镜像名2:TAG
删除全部:
docker rmi -f $(docker images -qa)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 凉月の博客!
评论