首页 > 编程知识 正文

docker容器生成镜像(docker 镜像 容器)

时间:2023-05-05 00:39:41 阅读:85751 作者:996

读了上一章,应该掌握了docker的基本概念和使用方法,但心里一定有疑问。 这个篇会告诉你docker的镜像是怎么来的。

Docker镜像是容器的基础。 Image镜像是根文件系统更改的有序集合,是运行容器时使用的相应执行参数。 镜像通常包含彼此分层到顶层的文件系统的并集。 它没有状态,永远不会改变。

镜像相当于你的集装箱最基础的模板,镜像的好坏、优化的质量决定着你的集装箱运行的性能和稳定性,所以对你的集装箱服务来说很重要。 但是,大家也不必担心。 基本上常用的软件、服务、APP在Docker Hub上有官方镜像,但是为了满足你的个性化需求,最好记住自制镜像。

镜像的管理

1.拉后视镜

[根@ centos~] #文档库资源中心:最后

latest :轮询频率库/中心

digest : sha 2563360 a 799 DD8A2 DED 4a 83484 BBAE 769 d 97655392 B3 F86533 CEB 7DD 96 BBAC 929809 F3C

status : downloadednewerimageforcentos 3360最后测试

与命令相同:坞站图像拉动

冒号前面是镜像名称,后面是版本号,无写入或latest都意味着抽取最新版本。

2 .看后视镜

[根@ centos-VM7~ ] #文件夹图像

repositorytagimageidcreatedsize

centos latest9f 38484 d 220 F4 months ago 202 MB

命令相同: docker image ls

3 .删除镜像

[根@ centos-vm7~] #文档库3360最后

命令相同: docker image rm

也可以在镜像名称或ID之后。

4 .反射镜的推动

[根@ centos~] #文档库用户_注册/中心3360最后

命令同步: docker图像推送

如果推送的仓库需要登录验证,则首先需要docker login

存储器登录名称

5 .清扫集装箱未使用的后视镜

[根@ centos~] #文档库图像计划

6 .导出镜像

docker save-oimage.tar centos :最后测试

与命令相同: docker image save

-o表示要导出到image.tar文件中

7 .导入镜像文件

坞站加载图像. tar

或者

dockerimportimage.tar image _ name :版本

命令相同: docker图像加载

8 .镜像的构建

docker build-t引擎:最后测试。

-t表示镜像名称(标签),后面的)点)表示当前目录,该目录必须是名为Dockerfile的目录

命令同步: docker图像构建

9 .查找镜像

docker search nginx

10 .通过提交容器生成镜像

docker commit-m='更新电视2 '-a=' your name ' e 218 EDB 10161 Ubuntu : v 2

-m:提交的说明信息-指定a :镜像创建者e218edb10161。 容器IDubuntu:v2:指定要创建的目标镜像名称11。 标记镜像(与添加别名相同)

dockertagubuntu : v2 centos : dev

centos:dev是新的标签名称

镜像的构建

Docker提供了通过配置docker文件来构建镜像的方法。 详情请参阅官方网站

使用Dockerfile构建镜像就像积木一样,Docker读取Dockerfile的内容,将层次的概念堆积起来形成最终的镜像。 介绍Dockerfile的主要命令。

功能文件命令基础镜像信息FROM维护者信息MAINTAINER镜像操作命令RUN、复制、添加、导出、工作区、构建、用户、卷、枚举、实验室

指定新镜像的基础镜像。 示例:

从Ubuntu :14.04

维修器

表示镜像的创建者及其电子邮件。 示例:

maintainer自动机'自动机@邮件.com '

运行

在新镜像中运行的命令,包括软件安装、基本环境配置和shell支持

l中使用来换行,如:

RUN echo 'hello docker!'

&& echo 'hello world!' > /tmp/test.txt

也可以使用exec格式RUN [“executable”, “param1”, “param2”]的命令,如:

RUN ["yum","install","-y","nginx"]

要注意的是,executable是命令,后面的param是参数

COPY

将主机的文件复制到镜像内,如果目的位置不存在,Docker会自动创建所有需要的目录结构,但是它只是单纯的复制,并不会去做文件提取和解压工作。如:

COPY application.yml /etc/springboot/test/src/resources

注意:需要复制的目录一定要放在Dockerfile文件的同级目录下,因为构建环境将会上传到Docker守护进程,而复制是在Docker守护进程中进行的。任何位于构建环境之外的东西都是不可用的。COPY指令的目的的位置则必须是容器内部的一个绝对路径。

ADD

将主机的文件复制到镜像中,跟COPY一样,限制条件和使用方式都一样,如:

ADD application.yml /etc/springboot/test/src/resources

但是ADD会对压缩文件(tar, gzip, bzip2, etc)在镜像中做提取和解压操作,如:

ADD conf.tgz /etc/springboot/test/src/resources

EXPOSE

暴露镜像的端口供主机做映射,启动镜像时,使用-P参数来讲镜像端口与宿主机的随机端口做映射。使用方式(可指定多个):

EXPOSE 8080

EXPOSE 8081

WORKDIR

在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录。如

WORKDIR /tmp

WORKDIR web

RUN echo 'hello docker' > 1.txt

最终会在/tmp/web/目录下生成1.txt文件

ONBUILD

当一个包含ONBUILD命令的镜像被用作其他镜像的基础镜像时(比如用户的镜像需要从准备好的位置添加源代码,或者用户需要执行特定于构建镜像的环境的构建脚本),该命令就会执行。

如创建镜像image1

FROM ubuntu

...

ONBUILD ADD . /var/www

...

然后创建镜像image2,指定image1为基础镜像,如

FROM image1

...

然后在构建image2的时候,日志上显示如下:

Step 0 : FROM image1

# Execting 1 build triggers

Step onbuild-0 : ADD . /var/www

...

USER

指定该镜像以什么样的用户去执行,如:

USER www-data

VOLUME

用来向基于镜像创建的容器添加卷。比如你可以将mongodb镜像中存储数据的data文件指定为主机的某个文件。(容器内部建议不要存储任何数据)

如:

VOLUME /data/db /data/configdb

说明:VOLUME 主机目录 容器目录

CMD

容器启动时需要执行的命令,如:

CMD /感动的流沙/bash

同样可以使用exec语法,如

CMD ["/感动的流沙/bash"]

当有多个CMD的时候,只有最后一个生效。

ENTRYPOINT

作用和用法和CMD一样,但CMD和ENTRYPOINT有区别,一定要注意:

CMD的命令会被docker run的命令覆盖而ENTRYPOINT不会

如使用CMD ["/感动的流沙/bash"]或ENTRYPOINT ["/感动的流沙/bash"]后,再使用docker run -ti image启动容器,它会自动进入容器内部的交互终端,如同使用

docker run -ti image /感动的流沙/bash。

但是如果启动镜像的命令为docker run -ti image /感动的流沙/ps,使用CMD后面的命令就会被覆盖转而执行感动的流沙/ps命令,而ENTRYPOINT的则不会,而是会把docker run 后面的命令当做ENTRYPOINT执行命令的参数。

以下例子比较容易理解

ENTRYPOINT ["/user/s感动的流沙/nginx"]

然后通过启动构建镜像的容器

docker run -ti image -g "daemon off"

此时-g "daemon off"会被当成参数传递给ENTRYPOINT,最终的命令变成了

/user/s感动的流沙/nginx -g "daemon off"

CMD和ENTRYPOINT都存在时

CMD和ENTRYPOINT都存在时,CMD的指令变成了ENTRYPOINT的参数,并且此CMD提供的参数会被docker run后面的命令覆盖,如:

ENTRYPOINT ["echo","hello","i am"]

CMD ["docker"]

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。