docker三大组件---镜像
1、 Docker 的三大组件之镜像。
Docker 运行容器前需要本地存在对应的镜像,如果镜像不存在本地,Docker 会从镜像仓库下载(默认是
Docker Hub 公共注册服务器中的仓库)。
- 从仓库获取镜像;
- 管理本地主机上的镜像;
- 介绍镜像实现的基本原理。
1.1获取镜像docker pull指令
我们从 Docker Hub 仓库下载一个 Ubuntu 12.04 操作系统的镜像。
#上一篇博客有说到,获取一个镜像。
[root@bfd-v7 ~]# docker pull ubuntu:12.04
1.2列出所有的镜像,docker images指令
docker images
在列出信息中,可以看到几个字段信息:
- 来自于哪个仓库,比如 ubuntu
- 镜像的标记,比如 14.04
- 它的 ID 号(唯一)
- 创建时间
- 镜像大小
1.3创建镜像
创建镜像有很多方法,用户可以从 Docker Hub 获取已有镜像并更新,也可以利用本地文件系统创建一
个。
1.3.1、根据已有的nginx的镜像生成一个新的wyl-nginx的镜像。
docker cp index.html 5cbfdbbe064b://usr/share/nginx/html
docker commit -m "fun" 5cbfdbbe064b wyl-nginx
之前的nginx镜像是运行后的页面的nginx的欢迎页面,我们对之前的做一个修改,然后运行,之后就会生成一个新的镜像。
1.3.2、Dockerfile生成镜像
#创建一个dl目录dockerfile的缩写
[root@bfd-v7 /]# mkdir dl
[root@bfd-v7 dl]# cd dl
[root@bfd-v7 dl]# touch Dockerfile
[root@bfd-v7 dl]# vim Dockerfile
#写上下面的呃逆荣
FROM alpine:latest
MAINTAINER wyl9527
CMD echo "hello docker"
Dockerfile 基本的语法是:
- 使用 # 来注释
- FROM 指令告诉 Docker 使用哪个镜像作为基础
- 接着是维护者的信息
- CMD 运行的指令
[root@bfd-v7 dl]# docker build -t hello-docker .
其中 -t 标记来添加 tag,指定新的镜像的用户信息。 “.” 是 Dockerfile 所在的路径(当前目录),也可以替换为一个具体的 Dockerfile 的路径。
可以看到 build 进程在执行操作。它要做的第一件事情就是上传这个 Dockerfile 内容,因为所有的操作都要依据 Dockerfile 来进行。 然后,Dockfile 中的指令被一条一条的执行。每一步都创建了一个新的容器,在容器中执行指令并提交修改(就跟之前介绍过的 docker commit 一样)。当所有的指令都执行完毕之后,返回了最终的镜像 id。所有的中间步骤所产生的容器都被删除和清理了。
*注意一个镜像不能超过 127 层
1.4镜像的导出和导入
1.4.1、如果要导出镜像到本地文件,可以使用 docker save 命令。
[root@bfd-v7 ~]# docker save -o wyl-nginx.tar.gz wyl-nginx
[root@bfd-v7 ~]# docker save -o hello-docker.tar.gz hello-docker
导出到当前的目录,如下图中的hello-docker.tar.gz文件。
1.4.2可以使用 docker load 从导出的本地文件中再导入到本地镜像库
在删除镜像之前要先用 docker rm 删掉依赖于这个镜像的所有容器
由于之前已经有了hello-docker的镜像,我们先删除,然后再导入。
[root@bfd-v7 ~]# docker rmi hello-docker
#出现下面的错误
[root@bfd-v7 ~]# docker load<hello-docker.tar.gz
[root@bfd-v7 ~]# docker images #查看一个新的hello-docker镜像
1.5移除本地镜像
如果要移除本地的镜像,可以使用 docker rmi 命令。注意 docker rm 命令是移除容器,否则会报错。
[root@bfd-v7 ~]# docker rm 容器id #上面的截图中有看到操作过程。
[root@bfd-v7 ~]# docker rmi hello-docker
推荐阅读
-
docker三大组件---镜像
-
玩转Docker----- 第二部 (docker镜像优化----四种优化方式)
-
Docker如何构建私有镜像以及私有镜像仓库(三)
-
Docker镜像以及私有仓库的创建
-
GitHub Actions构建Docker镜像
-
Docker学习笔记(三):DockerFile简介、DockerFile构建镜像、发布镜像
-
Springboot(十二)构建docker images镜像
-
Docker使用Dockerfile创建Centos(tomcat+jdk)镜像
-
SpringBoot+Docker实现项目的Maven打包&镜像构建&容器中运行==简单自动化部署
-
Docker教程(三):docker镜像讲解