飞天使-docker知识点2-dockerfile构建镜像

文章目录

        • [dockerfile 简介](#dockerfile 简介)
        • [dockerfile 构建实例1](#dockerfile 构建实例1)
        • [dockerfile 直接构建nginx 本地镜像](#dockerfile 直接构建nginx 本地镜像)
        • [docke tag](#docke tag)
dockerfile 简介
复制代码
DockerFile 可以说是一种可以被 Docker 程序解释的脚本,DockerFile 是由一条条的命令组成的,每条命令对应 linux 下面的一条命令,Docker 程序将这些DockerFile 指令再翻译成真正的 linux 命令,其有自己的书写方式和支持的命令,Docker 程序读取 DockerFile 并根据指令生成 Docker 镜像,相比手动制作镜像的方式,DockerFile 更能直观的展示镜像是怎么产生的,有了写好的各种各样DockerFile 文件,当后期某个镜像有额外的需求时,只要在之前的 DockerFile添加或者修改相应的操作即可重新生成新的 Docke 镜像,避免了重复手动制作镜像的麻烦,具体如下
https://docs.docker.com/engine/reference/builder/

ADD
COPY
ENV
EXPOSE
FROM
LABEL
STOPSIGNAL
USER
VOLUME
WORKDIR
RUN
dockerfile 构建实例1
复制代码
From centos
MAINTAINER light 123456@qq.com

RUN rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm && \
    yum install -y vim wget tree lrzsz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop

ADD nginx-1.16.1.tar.gz /usr/local/src/
RUN cd /usr/local/src/nginx-1.16.1 && ./configure --prefix=/usr/local/nginx --with-http_sub_module && make && make install

RUN cd /usr/local/nginx/ && \
    echo "test nginx page" > /usr/local/nginx/html/index.html && \
    useradd nginx -s /sbin/nologin && \
    ln -sv /usr/local/nginx/sbin/nginx /usr/sbin/nginx

ADD nginx.conf /usr/local/nginx/conf/nginx.conf

EXPOSE 80 443

CMD ["nginx", "-g", "daemon off;"]
dockerfile 直接构建nginx 本地镜像
复制代码
docker build -t nginx:v1 .


cat Dockerfile 

FROM centos:7.8.2003

maintainer  "jack 2973707860@qq.com"

RUN yum install -y epel-release && yum install -y vim wget tree  lrzsz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop

#COPY nginx-1.16.1.tar.gz /usr/local/src/
ADD nginx-1.16.1.tar.gz /usr/local/src/

RUN cd /usr/local/src/nginx-1.16.1 && ./configure --prefix=/apps/nginx --with-http_sub_module && make && make install
RUN useradd nginx -u 2022
ADD nginx.conf /apps/nginx/conf/nginx.conf
ADD code.tar.gz /data/nginx/html
#ADD run_nginx.sh /apps/nginx/sbin/run_nginx.sh
#RUN chmod a+x /apps/nginx/sbin/run_nginx.sh
EXPOSE 80 443

#RUN useradd m43
#USER m43
#WORKDIR /opt
#run mkdir 123
#WORKDIR 123


#ENTRYPOINT ["/apps/nginx/sbin/run_nginx.sh"]

ENTRYPOINT ["/apps/nginx/sbin/nginx"]
CMD  ["-g","daemon off;"]


[root@light-test all-in-one[]# docker run -it -d -p 8888:80 nginx:v1
[root@light-test all-in-one[]# curl 127.0.0.1:8888
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
        <title>马哥教育</title>
	</head>
	<body>
	<h1>测试页面</h1>
	</body>
	</html>
docke tag
复制代码
docker tag 命令用于给一个现有的 Docker 镜像打标签,为镜像添加一个可识别的标识符。使用标签可以方便地对镜像进行分类和区分,也可以使多个标签指向同一个镜像。

docker tag 命令的语法如下:

docker tag <镜像名称>:<标签> <新镜像名称>:<新标签>
其中,<镜像名称> 是已有的镜像名称,<标签> 是已有的标签,<新镜像名称> 是为镜像设置的新名称,<新标签> 是为新镜像设置的新标签。

例如,如果有一个名为 myimage:latest 的镜像,您可以使用 docker tag 命令为该镜像添加一个新的标签:

docker tag myimage:latest myimage:v1.0
这将在 myimage:latest 镜像的基础上创建一个新的镜像 myimage:v1.0。

通过为镜像打上不同的标签,您可以实现对同一镜像的版本管理、发布和回滚。另外,使用不同的标签还可以方便地识别和管理具有不同用途的镜像。

请注意,docker tag 命令只是为已有的镜像打标签,不会创建新的镜像层或复制镜像。因此,它的执行速度通常很快。

本文参考马哥教育文档

相关推荐
xixiaoyunya3 分钟前
虚拟机备份怎么做:镜像级与文件级搭配的完整实操方案
linux·运维·网络
阿明69 分钟前
进程替换【Linux】
linux·运维·服务器
sunoo-22913 分钟前
【嵌入式Linux驱动学习】Day1-Day2 全流程梳理:环境搭建→U-Boot→内核→根文件系统→驱动基础
linux·运维·驱动开发·笔记·学习·阿里云·恩智浦
YonyouHRSaaS44 分钟前
从安全、信创、运维三方面看,人力资源管理系统哪种部署方式更适合企业HR?
运维·安全·hr系统·人力资源管理系统·hr saas·人事管理系统
倔强的石头1061 小时前
【Linux指南】动静态库系列(十二):库工程发布与错误排查:从能跑到可维护
linux·运维·服务器
wdfk_prog1 小时前
LWIP教程 03:从 `low_level_input()` 到 `pbuf_free()`——`pbuf` 的数据视图、Chain 与引用计数
运维·网络·笔记·学习
掉进电商坑三年没爬出来的东叔1 小时前
云服务器搭建个人网站实战:从零到公网访问,含域名HTTPS
运维·服务器·https
IT大白鼠1 小时前
彭大帅的AI运维助手跨出 Linux:全面接管 Windows 服务器
运维·服务器·人工智能
reasonsummer2 小时前
【办公类-131-05】20261007中2班周计划制作(原资料Word单元格不统一 失败)
运维·服务器
Mikko72 小时前
JVM 线上排查实战(六):JFR 怎么用?JDK 8 要不要加 UnlockCommercialFeatures、jfr 命令在哪、录的文件为什么读不了
java·运维·jvm·后端