重庆网站建设尚智逢源,光泽县规划建设局网站,做淘客应该知道的网站,网站开发能进无形资产吗Dockerfile是一个用于定义Docker镜像的文本文件#xff0c;包含了一系列的指令和参数#xff0c;用于指示Docker在构建镜像时应该执行哪些操作#xff0c;例如基于哪个基础镜像、复制哪些文件到镜像中、运行哪些命令等。 Dockerfile文件的内容主要有几个部分组成#xff0c… Dockerfile是一个用于定义Docker镜像的文本文件包含了一系列的指令和参数用于指示Docker在构建镜像时应该执行哪些操作例如基于哪个基础镜像、复制哪些文件到镜像中、运行哪些命令等。 Dockerfile文件的内容主要有几个部分组成包括基础镜像创建者信息镜像操作指令容器启动指令等 创建Dockerfile文件并通过docker bulid来构建镜像是除了从镜像仓库拉取、解压保存镜像之外的另一种自定义构建镜像的方式。构建指令docker build -timage-name 文件目录 --load Dockerfile文件指令
#FROM FROM指定基础镜像这个文件需要在本地有如果没有则在docker build后增加--load参数去docker官网进行拉取 Dockerfile文件中定义的镜像就以FROM的镜像为基础可指定tag
#MAINTAINER 是备注用以指定创建者信息
#COPY 将同目录下的文件复制到镜像中 也可以使用—chown参数指定权限 格式为 filename path
#ADD 格式同COPY 区别是移动tar文件后会自动解压 docker官方推荐使用COPY
#RUN 说明镜像构建过程中需要运行的命令每次执行都会增加一层 有shell模式和exec模式 shell模式 直接使用linux命令即可 exec模式通过方括号指定参数来实现如 RUN [/bin/bash,-c, yum -y install xxx] /bin/bash表示解释器位置 -c代表指定后面是要执行的命令
#EXPOSE 声明端口说明这个端口是容器映射出去的端口 可以指定多个 声明后docker run -P会随机将宿主机端口映射到声明后的端口
#CMD CMD在docker run命令执行时执行 有shell模式和exec模式 但会被docker run后自带的命令所覆盖 如果使用了ENTRYPOINT指令作为其默认参数
#ENTERYPOINT 作用于CMD相同 有shell模式和exec模式 ENTERYPOINT 不会被docker run后自带的命令覆盖如果使用了参数--entrypoint则可以覆盖
ENTERYPOINT与CMD混用 ENTERYPOINT [nginx,-c] CMD [/nginx.conf] nginx是nginx的命令行工具 -c代表用xx文件执行该命令 /nginx.conf基于根目录下的nginx.conf运行即该文件是默认文件 如果docker run指定了命令就会覆盖掉CMD指定的文件转而使用docker run指定的文件
#VOLUME 指定容器内的默认挂载点使用后会默认把宿主机/var/lib/docker/volumes中挂载到容器中的挂载点在docker run时可以通过-v手动指定宿主机挂载点 1.持久化存储避免因为重启导致数据丢失 2.可以通过-v来更好管理存储容器端固定而宿主机端不固定
#WORKDIR 指定命令的工作目录需要提前创建好
#ENV 指定环境变量 格式为ENV keyvalue 例如ENV VERSION 1.0就可以使用$VERSION来引用
#USER 用以指定执行命令的用户和用户组
#ONBUILD 延迟执行创建的命令在某次构建镜像时不会执行但下次如果有新的dockerfile使用了本镜像进行镜像构建时就会执行这条命令。
nginx镜像构建
mkdir wsdockerfile
#centos8已经停更了下载软件需要另外的源这个文件清华镜像站和centos官网都能找到
cp Centos-vault-8.5.2111.repo wsdockerfile/
cd wsdockerfile/
#删除并替换/etc/yum.repos.d/的源文件
#下载nginx并开放80端口
#用ENTRYPOINT使docker启动时自动启动nginx
cat dockerfile EOF
FROM centos
MAINTAINER ws
RUN rm -rf /etc/yum.repos.d/*
COPY Centos-vault-8.5.2111.repo /etc/yum.repos.d/
RUN yum install -y nginx
COPY index.html /usr/share/nginx/html/
EXPOSE 80
ENTRYPOINT [/usr/sbin/nginx,-g,daemon off;]
EOFecho 123 index.htmldocker build -tws/nginx:v1 . #开始构建
#[] Building 130.1s (10/10) FINISHED docker:default
# [internal] load build definition from dockerfile 0.0s
# transferring dockerfile: 270B 0.0s
# [internal] load .dockerignore 0.0s
# transferring context: 2B 0.0s
# [internal] load metadata for docker.io/library/centos:latest 0.0s
# [1/5] FROM docker.io/library/centos 0.0s
# [internal] load build context 0.0s
# transferring context: 77B 0.0s
# CACHED [2/5] RUN rm -rf /etc/yum.repos.d/* 0.0s
# CACHED [3/5] COPY Centos-vault-8.5.2111.repo /etc/yum.repos.d/ 0.0s
# [4/5] RUN yum install -y nginx 129.6s
# [5/5] COPY index.html /usr/share/nginx/html/ 0.0s
# exporting to image 0.4s
# exporting layers 0.4s
# writing image sha256:075aaa08f6799ed252578b0c82645e41c61a818584e6e183053a6ce 0.0s
# naming to docker.io/ws/nginx:v1 0.0s
docker images | grep ws/nginx
#ws/nginx v1 075aaa08f679 51 seconds ago 342MB
docker run -d -p 80 --name wshttp ws/nginx:v1
#1f57b4d4b5a8d73fa5488b792099c08fe15cb1bbfdc71d166c1430f5be9e15d4
docker ps
#CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
#1f57b4d4b5a8 ws/nginx:v1 /usr/sbin/nginx -g … 19 seconds ago Up 18 seconds 0.0.0.0:32768-80/tcp, :::32768-80/tcp wshttptomcat8镜像构建
tomcat版本tomcat-8.5.97 官网能下载到 jdk版本jdk-8u45
mkdir wsdockerfile2
cp jdk-8u45-linux-x64.rpm apache-tomcat-8.5.97.tar.gz Centos-vault-8.5.2111.repo wsdockerfile2
cd wsdockerfile2
#ADD传送jdk包和tomcat包并解压
#rpm包安装jdk-8u45
#ENTRYPOINT安装tomcat开始后查看日志
echo
FROM centos
MAINTAINER ws
RUN rm -rf /etc/yum.repos.d/*
COPY Centos-vault-8.5.2111.repo /etc/yum.repos.d/
ADD jdk-8u45-linux-x64.rpm /usr/local/ #\\
ADD apache-tomcat-8.5.97.tar.gz /usr/local/
RUN cd /usr/local rpm -ivh jdk-8u45-linux-x64.rpm
RUN mv /usr/local/apache-tomcat-8.5.97 /usr/local/tomcat8
ENTRYPOINT /usr/local/tomcat8/bin/startup.sh tail -F /usr/local/tomcat8/logs/catalina.out
EXPOSE 8080dockerfiledocker build -ttomcat8 . --load
#