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

docker三大组件---镜像_第1张图片

在列出信息中,可以看到几个字段信息:

  • 来自于哪个仓库,比如 ubuntu
  • 镜像的标记,比如 14.04
  • 它的 ID 号(唯一)
  • 创建时间
  • 镜像大小

1.3创建镜像

创建镜像有很多方法,用户可以从 Docker Hub 获取已有镜像并更新,也可以利用本地文件系统创建一
个。

1.3.1、根据已有的nginx的镜像生成一个新的wyl-nginx的镜像。
docker cp index.html 3f8a4339aadd://usr/share/nginx/html

docker commit -m "fun"  3f8a4339aadd wyl-nginx

docker三大组件---镜像_第2张图片

之前的nginx镜像是运行后的页面的nginx的欢迎页面,我们对之前的做一个修改,然后运行,之后就会生成一个新的镜像。

# docker-nginx容器的名字
 docker run -itd -p 8080:80 --name docker-nginx  wyl-nginx

docker三大组件---镜像_第3张图片

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 .

docker三大组件---镜像_第4张图片

其中 -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

#出现下面的错误

docker三大组件---镜像_第5张图片

[root@bfd-v7 ~]# docker load

docker三大组件---镜像_第6张图片

1.5移除本地镜像

如果要移除本地的镜像,可以使用 docker rmi 命令。注意 docker rm 命令是移除容器,否则会报错。

[root@bfd-v7 ~]# docker rm  容器id  #上面的截图中有看到操作过程。
[root@bfd-v7 ~]# docker rmi hello-docker

你可能感兴趣的:(docker+k8s)