08-Docker自定义构建镜像

Docker自定义构建镜像

可能绝大多数情况下,Docker的镜像都是来自网络,但是也有可能我们自己有会去构建一些我们自己的镜像

怎么做?

在构建Docker镜像时,需要使用一个文件,文件的名固定为:Dockerfile

Dockerfile4部分

Dockerfile 分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令

基础镜像信息
#设置基础镜像
FROM centos
维护者信息
MAINTAINER 565599455@qq.com
镜像操作指令
#复制压缩包到镜像中,并进行解压
ADD ./jdk-8u11-linux-x64.tar.gz /usr/local/java
ADD ./apache-tomcat-8.5.20.tar.gz /usr/local/tomcat
#set environment variable
ENV JAVA_HOME /usr/local/java/jdk1.8.0_11
ENV JRE_HOME $JAVA_HOME/jre  
ENV CLASSPATH .:$JAVA_HOME/lib:$JRE_HOME/lib  
ENV PATH $PATH:$JAVA_HOME/bin
#EXPOSE 映射端口
EXPOSE 8080
容器启动时执行指令
#ENTRYPOINT 配置容器启动时,需要执行的文件
ENTRYPOINT /usr/local/tomcat/apache-tomcat-8.5.20/bin/startup.sh && tail -F /usr/local/tomcat/apache-tomcat-8.5.20/logs/catalina.out

Dockerfile的详细命令介绍

FROM : 指定基础镜像,要在哪个镜像建立

FROM centos

MAINTAINER:指定维护者信息

MAINTAINER 565599455@qq.com

RUN:在镜像中要执行的Linux命令

ADD: 相当于 COPY,但是比 COPY 功能更强大(如果是压缩包,会自动解压)

COPY :复制本地主机的 (为 Dockerfile 所在目录的相对路径)到容器中的

ENV:定义环境变量

WORKDIR:指定当前工作目录,相当于 cd ,为后续的 RUN 、 CMD 、 ENTRYPOINT 指令配置工作目录。

EXPOSE:指定容器要打开的端口

VOLUME:挂载目录,创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等。

格式为VOLUME [“/data”]

ENTRYPOINT 指定容器在运行时,需要执行的文件,或者需要命令的操作的文件

CMD 指定容器在运行时,需要运行的命令

Dockerfile的示例

1、构建Tomcat
#设置基础镜像
FROM centos
MAINTAINER 565599455@qq.com
#复制压缩包到镜像中,并进行解压
ADD ./jdk-8u11-linux-x64.tar.gz /usr/local/java
ADD ./apache-tomcat-8.5.20.tar.gz /usr/local/tomcat
#set environment variable
ENV JAVA_HOME /usr/local/java/jdk1.8.0_11
ENV JRE_HOME $JAVA_HOME/jre  
ENV CLASSPATH .:$JAVA_HOME/lib:$JRE_HOME/lib  
ENV PATH $PATH:$JAVA_HOME/bin
#EXPOSE 映射端口
EXPOSE 8080
#ENTRYPOINT 配置容器启动时,需要执行的文件
ENTRYPOINT /usr/local/tomcat/apache-tomcat-8.5.20/bin/startup.sh && tail -F /usr/local/tomcat/apache-tomcat-8.5.20/logs/catalina.out
2、构建Nginx
# Base images 基础镜像
FROM centos

#MAINTAINER 维护者信息
MAINTAINER tianfeiyu 

#ENV 设置环境变量
ENV PATH /usr/local/nginx/sbin:$PATH

#ADD  文件放在当前目录下,拷过去会自动解压
ADD nginx-1.8.0.tar.gz /usr/local/  
ADD epel-release-latest-7.noarch.rpm /usr/local/  

#RUN 执行以下命令 
RUN rpm -ivh /usr/local/epel-release-latest-7.noarch.rpm
RUN yum install -y wget lftp gcc gcc-c++ make openssl-devel pcre-devel pcre && yum clean all
RUN useradd -s /sbin/nologin -M www

#WORKDIR 相当于cd
WORKDIR /usr/local/nginx-1.8.0 

RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-pcre && make && make install

RUN echo "daemon off;" >> /etc/nginx.conf

#EXPOSE 映射端口
EXPOSE 80

#CMD 运行以下命令
CMD ["nginx"]

构建自己的Tomcat

1、在Linux中选择一个目录/root/docker/,将JDK以及Tomcat的压缩包上传至该目录

image-20201225101252064

2、创建Dockerfile文件

image-20201225101331244

3、编写Dockerfile内容

#设置基础镜像
FROM centos
MAINTAINER 565599455@qq.com
#复制压缩包到镜像中,并进行解压
ADD ./jdk-8u271-linux-x64.tar.gz /usr/local/java
ADD ./apache-tomcat-8.5.61.tar.gz /usr/local/tomcat
#set environment variable
ENV JAVA_HOME /usr/local/java/jdk1.8.0_271
ENV JRE_HOME $JAVA_HOME/jre  
ENV CLASSPATH .:$JAVA_HOME/lib:$JRE_HOME/lib  
ENV PATH $PATH:$JAVA_HOME/bin
#EXPOSE 映射端口
EXPOSE 8080
#ENTRYPOINT 配置容器启动时,需要执行的文件
ENTRYPOINT /usr/local/tomcat/apache-tomcat-8.5.61/bin/startup.sh && tail -F /usr/local/tomcat/apache-tomcat-8.5.61/logs/catalina.out

4、执行该文件,构建一个Tomcat镜像出来

Dockerfile在哪个目录下,就在哪个目录执行如下命令:

docker build -t woniu/tomcat:latest --rm=true .

docker build 构建一个镜像

woniuxy/tomcat 镜像的名称

Latest 镜像的版本 eg:1.0 2.0 latest最新版本

–rm=true . 我也不知道,这是个啥鬼东西,反正就是不能省略(注意:最后还有一个 .)

5、运行容器

docker run -d -p 8080:8080 --name woniutomcat woniu/tomcat:latest

在浏览器,即可查看效果!

Dockerfile的内容,到此结束!!!

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇