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 命令只是为已有的镜像打标签,不会创建新的镜像层或复制镜像。因此,它的执行速度通常很快。
本文参考马哥教育文档