当前位置:   article > 正文

Docker学习,从hello-word到Dockerfile创建镜像_docker pull hello-world

docker pull hello-world

一、Docker的最小镜像hello-world

1、docker  pull 下载hello-world镜像

docker  pull   hello-world

2、docker  images  查看hello-world镜像信息

docker  images  hello-world

3、docker   run   hello-world 运行

Docker你好!

此消息显示您的安装似乎工作正常。

为了生成这个消息,Docker采取了以下步骤:

1 Docker客户端联系Docker守护进程。

2 Docker守护进程从Docker中心提取“hello-world”映像。

(amd64)

3所示。Docker守护进程从运行的映像创建了一个新容器

可执行文件,生成您当前正在读取的输出。

4所示。Docker守护进程将输出流到发送它的Docker客户机

你的终端。

为了尝试更有野心的东西,你可以运行一个Ubuntu容器:

$ docker运行- ubuntu bash

使用免费的Docker ID共享图片、自动化工作流程等:

https://hub.docker.com/

更多的例子和想法,请访问:

https://docs.docker.com/get-started/

4、Dockerfile 是镜像的描述文件,定义了如何构建 Docker 镜像

docker pull 后对应的镜像文件在:/var/lib/docker/image/

ll /var/lib/docker/image/overlay2/imagedb/content/sha256/

b2c2ab6dcf2e526597d0a5fc506f123088e6572a8a656f04cea86d4f559c66e9

bf756fb1ae65adf866bd8c456593cd24beb6a0a061dedf42b26a993176745f6b

docker images

Dockerfile只是用来生成镜像的,镜像中不会包含Dockerfile,这就像源码和程序的关系一样。

在Docker Hub(https://hub.docker.com)上找到你想要的镜像,里面都会有生成此镜像的Dockerfile以及相关文件在Github上的地址,可以在那里面找到。

二、Docker的base 镜像

base 镜像通常是各种 Linux 发行版的 Docker 镜像。

Linux 操作系统由内核空间和用户空间组成。

内核空间是 kernel,Linux 刚启动时会加载 bootfs 文件系统,之后 bootfs 会被卸载掉。

用户空间的文件系统是 rootfs,包含我们熟悉的 /dev, /proc, /bin 等目录。

对于 base 镜像来说,底层直接用 Host 的 kernel,自己只需要提供 rootfs 就行了。

1、docker   pull  centos 下载CentOS镜像

2、docker images  centos 查看CentOS镜像信息

base 镜像提供的是最小安装的 Linux 发行版

支持运行多种 Linux OS

不同 Linux 发行版的区别主要就是 rootfs。

3、说明:

a、base 镜像只是用户空间与发行版一致,kernel 版本与发型版是不同的。

① 查看Host kernel

uname  -r

② 启动并进入 CentOS 容器

docker  run  -it  centos

③ 验证容器是 CentOS 8.1的镜像

cat /etc/redhat-release

④ 验证容器的 kernel 版本与 Host 一致

uname  -r

b、容器只能使用 Host 的 kernel,并且不能修改。

三、Docker的镜像分层结构

1、分层结构的优势----资源共享

有多个镜像都从相同的 base 镜像构建而来,那么 Docker Host 只需在磁盘上保存一份 base 镜像;同时内存中也只需加载一份 base 镜像,就可以为所有容器服务了。

2、Docker的Copy-on-Write 特性

直观表现为多个容器共享一份基础镜像,当某个容器修改了基础镜像的内容,比如 /etc 下的文件,这时其他容器的 /etc 是不会被更改的。

容器的修改会被限制在单个容器内。

  1. 容器层与镜像层

当容器启动时,一个新的可写层被加载到镜像的顶部。

这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”。

所有对容器的改动 - 无论添加、删除、还是修改文件都只会发生在容器层中。

只有容器层是可写的,容器层下面的所有镜像层都是只读的。

镜像层数量可能会很多,所有镜像层会联合在一起组成一个统一的文件系统。

容器层中,用户看到的是一个叠加之后的文件系统。

4、分解动作

添加文件

在容器中创建文件时,新文件被添加到容器层中。

读取文件

在容器中读取某个文件时,Docker 会从上往下依次在各镜像层中查找此文件。一旦找到,打开并读入内存。

修改文件

在容器中修改已存在的文件时,Docker 会从上往下依次在各镜像层中查找此文件。一旦找到,立即将其复制到容器层,然后修改之。

删除文件

在容器中删除文件时,Docker 也是从上往下依次在镜像层中查找此文件。找到后,会在容器层中记录下此删除操作。

只有当需要修改时才复制一份数据,这种特性被称作 Copy-on-Write

容器层保存的是镜像变化的部分,不会对镜像本身进行任何修改

docker stop 优雅地停止容器

docker stop 容器ID或容器名

参数 -t:关闭容器的限时,如果超时未能关闭则用kill强制关闭,默认值10s,这个时间用于容器的自己保存状态

docker stop -t=60 容器ID或容器名

docker kill

docker kill 容器ID或容器名 :直接关闭容器

四、构建镜像

Docker 提供了两种构建镜像的方法:

docker commit 命令    和  Dockerfile 构建文件(推荐使用)

1、Dockerfile 构建镜像

Dockerfile 是一个文本文件,记录了镜像构建的所有步骤

新建Dockerfile文件

vi  Dockerfile

 

# This my first CentOS Dockerfile

# Version 1.0

# Base images 基础镜像

FROM centos

 

#MAINTAINER 维护者信息

MAINTAINER zola

 

#ENV 设置环境变量

#ADD  文件放在当前目录下,拷过去会自动解压

 

#RUN 执行以下命令

RUN yum install -y wget

 

#WORKDIR 相当于cd

#EXPOSE 映射端口

#CMD 运行以下命令

 

docker   build  -t  centos-with-wget  .

 

 

注意1、运行 docker build 命令,-t 将新镜像命名为 ubuntu-with-vi-dockerfile,命令末尾的 . 指明 build context 为当前目录。Docker 默认会从 build context 中查找 Dockerfile 文件,我们也可以通过 -f 参数指定 Dockerfile 的位置

注意2、首先 Docker 将 build context 中的所有文件发送给 Docker daemon。build context 为镜像构建提供所需要的文件或目录。

Dockerfile 中的 ADD、COPY 等命令可以将 build context 中的文件添加到镜像。此例中,build context 为当前目录 /root,该目录下的所有文件和子目录都会被发送给 Docker daemon。

所以,使用 build context 就得小心了,不要将多余文件放到 build context,特别不要把 /、/usr 作为 build context,否则构建过程会相当缓慢甚至失败。

注意3、在上面的构建过程中,我们要特别注意指令 RUN 的执行过程。Docker 会在启动的临时容器中执行操作,并通过 commit 保存为新的镜像。

2、docker images 查看镜像信息

3、查看镜像分层结构

是通过在 base 镜像的顶部添加一个新的镜像层而得到的。

这个新镜像层的内容由 RUN  yum install -y wget 生成。

docker history 命令来验证

docker history 会显示镜像的构建历史,也就是 Dockerfile 的执行过程。

docker history  centos-with-wget

与centos做对比

docker history  centos

微信连接:https://mp.weixin.qq.com/s/EKTjOGVwA5OuwVie4LWOPQ

详情请见,微信公众号

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/632154
推荐阅读
相关标签
  

闽ICP备14008679号