网站首页 > 技术文章 正文
镜像
###docker 该镜像名和标签
Docker tag 镜像名:标签名 新镜像名:新标签名
###Docker 的镜像分层
Hello world 的dockerfile
FROM scrath
COPY hello /
CMD ["/hello/"]
Sratch 从零开始构建,白手起家的一个镜像
###Base镜像
Bootfs: 内核空间
Rootfs: 用户空间
###镜像分层 Dockerfile
///镜像的构成概念:
Dockerfile镜像有缓存机制,但是注意:缓存机制对于镜像所处的层数必须一致,否则无法使用缓存。
分层的特性
FROM scratch 不依赖其他镜像,从scratch(从零开始)构建。
FROM centos 基础镜像,其他镜像可以在此基础上进行扩展,通常都是各种linux发行版的docker镜像,比如Ubuntu,Debian,centos等。
Docker镜像在运行时直接使用docker宿主机的kernel(bootfs内核空间),不同基础镜像的区别主要是rootfs(用户空间)不同。
启动镜像的时候,一个新的可写层会加载到镜像的顶部,这一层通常称为"容器层",之下是"镜像层"。容器层可以读写,镜像层只允许读取。
dockerfile镜像有一个缓存机制。注意:缓存机制对于镜像所处的层数必须一致,否则无法使用缓存
[root@docker01 ~]# cat Dockerfile 文件名首字母大写
FROM centos
RUN yum -y install net-tools
RUN yum -y install httpd
CMD ["/bin/bash"]
///运行Dockerfile文件
[root@docker01 ~]# docker build -t new_centos .
-t:代表镜像名称
. :代表Dockerfile文件在本目录下,注意:同一目录下只能有一个Dockerfile
RUN:: 运行容器使执行的shell命令
例如:
RUN ["yun","install","httpd"]
RUN yum -y install httpd
ENV: 设置容器环境变量
例如:ENV MYSQL_ROOT_PASSWORD 123.com
COPY: 拷贝文件或目录到镜像容器中,根ADD类似,但不具备自动下载或自动解压
ENTRYPOINT: 运行容器时执行的shell命令
HEALTHCHECK: 健康检查
USER: 为RUN、CMD、ENTRYPOINT执行命令指定运行用户
ARG: 构建时指定一些参数
例如:
FROM centos
ARG user
USER: $user
注意:RUN在building时运行,可以写多条
CMD和ENTRYPOINT在运行CONTARNER时运行,只能写一条,如果写多条,最后一条生效
使用dockerfile搭建Nginx示例:
[root@docker01 ~]# cat Dockerfile
FROM centos
COPY nginx-1.14.0.tar.gz /
RUN tar zxf nginx-1.14.0.tar.gz
WORKDIR nginx-1.14.0
RUN yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel zlib zlib-devel
RUN useradd -s /sbin/nologin -M nginx
RUN ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
RUN make && make install
RUN ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
RUN nginx -t
CMD ["/usr/local/sbin/nginx"]
创建dockerfile文件
[root@docker01 ~]# cat Dockerfile
FROM centos
COPY nginx-1.14.0.tar.gz /
RUN tar zxf nginx-1.14.0.tar.gz
WORKDIR nginx-1.14.0
RUN yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel zlib zlib-devel
RUN useradd -s /sbin/nologin -M nginx
RUN ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
RUN make && make install
RUN ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
RUN nginx -t
CMD ["/usr/local/sbin/nginx"]
基于dockerfile文件创建镜像
基于创建的镜像运行容器nginx_02 并映射端口
进入容器后更改显示界面
在容器中查看nginx是否启动
在终端中验证
在虚拟机中进行访问映射的7777端口
猜你喜欢
- 2024-09-27 【容器篇】认识Dockerfile dockerfile示例
- 2024-09-27 Dockerfile常用指令大全及详解 dockerfile中最常见的指令是什么
- 2024-09-27 阿里云Docker/Kubernetes(K8S) 日志解决方案与选型对比
- 2024-09-27 Docker 镜像构建之 Dockerfile docker镜像在哪个文件夹
- 2024-09-27 docker进击之Dockerfile最佳实践 dockersfile
- 2024-09-27 Dockerfile简单使用 dockerfile示例
- 2024-09-27 Dockerfile你值得拥有 dockerfile sh
- 2024-09-27 DockerFile文件详解 dockerfile文件详解java
- 2024-09-27 Docker实战九之Docker Dockerfile
- 2024-09-27 Docker篇(三):Dockerfile实战开启
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)