Dockerfile简单使用实战

栏目: 服务器 · 发布时间: 5年前

内容简介:创建一个Dockerfile文件创建一个用于直接docker build脚本后续直接执行脚本即可执行脚本创建新镜像

利用Dockerfile制作 java 运行环境的镜像

当前用到的环境是:

Centos 7.5

docker-ce 18.06.1-ce

1、先用centos7.5.1804的基础镜像把一些运行需要的环境装好

在/app目录下创建相对应的文件目录

[root@node2 /app/]# mkdir dockerfile/{web/{nginx,tomcat,jdk,apache},system/{centos,ubuntu,redhat}}  -pv

[root@node2 /app]# cd dockerfile/system/centos/

[root@node2 /app/dockerfile/system/centos]# mkdir centos-7.5-base

[root@node2 /app/dockerfile/system/centos]# cd centos-7.5-base

创建一个Dockerfile文件

[root@node2 /app/dockerfile/system/centos/centos-7.5-base]#vim Dockerfile 
#Nginx Base Image
FROM centos:7.5.1804

LABEL maintaier "mr.luo <mr.luo@dklwj.com>"

RUN yum install -y vim wget pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop

创建一个用于直接docker build脚本后续直接执行脚本即可

[root@node2 /app/dockerfile/system/centos/centos-7.5-base]#vim build-command.sh 
#!/bin/bash
docker build -t 172.20.7.50/baseimages/centos-base:7.5.1804 .

执行脚本创建新镜像

[root@node2 /app/dockerfile/system/centos/centos-7.5-base]#bash build-command.sh 
Sending build context to Docker daemon  3.072kB
Step 1/3 : FROM centos:7.5.1804
---> 76d6bc25b8a5
Step 2/3 : LABEL maintaier 'mr.luo@dklwj.com'
---> Using cache
---> 05ccd970d71d
Step 3/3 : RUN yum install -y vim wget   pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop
---> Using cache
---> 73d683a54877
Successfully built 73d683a54877
Successfully tagged 172.20.7.50/baseimages/centos-base:7.5.1804

2、利用制作好的基础环境镜像制作jdk的镜像

从centos-7.5-base退出来在当前目录创建一个jdk1.8的目录.

[root@node2 /app/dockerfile/system/centos/centos-7.5-base]# cd ..
[root@node2 /app/dockerfile/system/centos]# mkdir jdk1.8
[root@node2 /app/dockerfile/system/centos]# cd jdk1.8/

创建Dockerfile

[root@node2 /app/dockerfile/system/centos/jdk1.8]#vim Dockerfile 
FROM 172.20.7.50/baseimages/centos-base:7.5.1804
LABEL maintainer "mr.luo <mr.luo@dklwj.com>"

ADD jdk-8u162-linux-x64.tar.gz /usr/local/src/
RUN ln -s /usr/local/src/jdk1.8.0_162/ /usr/local/jdk

ADD profile /etc/profile

ENV JAVA_HOME /usr/local/jdk
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/:$JRE_HOME/lib/
ENV PATH $PATH:$JAVA_HOME/bin

RUN rm -rf /etc/localtime && ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone

上传jdk包到当前目录下:

复制/etc/profile文件到当前目录

[root@node2 /app/dockerfile/system/centos/jdk1.8]#cp profile /etc/profile

在profile最后添加jdk的环境变量

[root@node2 /app/dockerfile/system/centos/jdk1.8]#vim profile 
export JAVA_HOME=/usr/local/jdk
export TOMCAT_HOME=/apps/tomcat
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$TOMCAT_HOME/bin:$PATH
export  CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

创建docker build的 shell 脚本

[root@node2 /app/dockerfile/system/centos/jdk1.8]#vim build-command.sh 
#!/bin/bash
#
docker build -t 172.20.7.50/baseimages/centos7.5-jdk:8.162 .

开始制作镜像

[root@node2 /app/dockerfile/system/centos/jdk1.8]#bash build-command.sh 
    Sending build context to Docker daemon  189.8MB
    Step 1/10 : FROM 172.20.7.50/baseimages/centos-base:7.5.1804
     ---> 73d683a54877
    Step 2/10 : LABEL maintainer "mr.luo <mr.luo@dklwj.com>"
     ---> Running in 65604dd1f392
    Removing intermediate container 65604dd1f392
     ---> c4720603ce38
    Step 3/10 : ADD jdk-8u162-linux-x64.tar.gz /usr/local/src/
     ---> bc98adffe1b4
    Step 4/10 : RUN ln -s /usr/local/src/jdk1.8.0_162/ /usr/local/jdk
     ---> Running in df5a6f67f9fd
    Removing intermediate container df5a6f67f9fd
     ---> 0ae1af0416c6
    Step 5/10 : ADD profile /etc/profile
     ---> eee23a69c0c8
    Step 6/10 : ENV JAVA_HOME /usr/local/jdk
     ---> Running in edbef8563e83
    Removing intermediate container edbef8563e83
     ---> 5f783f642054
    Step 7/10 : ENV JRE_HOME $JAVA_HOME/jre
     ---> Running in fa0e5f08e732
    Removing intermediate container fa0e5f08e732
     ---> 28a4d31463d4
    Step 8/10 : ENV CLASSPATH $JAVA_HOME/lib/:$JRE_HOME/lib/
     ---> Running in 3c4ebb04ac62
    Removing intermediate container 3c4ebb04ac62
     ---> 245f2dd82d52
    Step 9/10 : ENV PATH $PATH:$JAVA_HOME/bin
     ---> Running in 4f5e6093f0a9
    Removing intermediate container 4f5e6093f0a9
     ---> 5be0e6261eea
    Step 10/10 : RUN rm -rf /etc/localtime && ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
     ---> Running in 52d8cb8463a8
    Removing intermediate container 52d8cb8463a8
     ---> 9fb867ae8c39
    Successfully built 9fb867ae8c39
    Successfully tagged 172.20.7.50/baseimages/centos7.5-jdk:8.162

查看当前目录下的文件

[root@node2 /app/dockerfile/system/centos/jdk1.8]#ls
build-command.sh  Dockerfile  jdk-8u162-linux-x64.tar.gz  profile

检查制作好的镜像是否能正常使用

[root@node2 /app/dockerfile/system/centos/jdk1.8]#docker run -it --rm 172.20.7.50/baseimages/centos7.5-jdk:8.162 bash
[root@919844b164dc /]# java -version 
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
[root@919844b164dc /]# date
Thu Nov 22 21:17:49 CST 2018
[root@919844b164dc /]# exit
exit

3、做Tomcat的镜像

进入之前建好的/app/dockerfile/web/tomcat下,创建一个tomcat-base目录

[root@node2 ~]# cd /app/dockerfile/web/tomcat 
[root@node2 /app/dockerfile/web/tomcat]#mkdir tomcat-base

创建Dockerfile

[root@node2 /app/dockerfile/web/tomcat/tomcat-base]#vim Dockerfile 
FROM 172.20.7.50/baseimages/centos7.5-jdk:8.162

LABEL maintainer "mr.luo <mr.luo@dklwj.com>"

RUN mkdir /apps
ADD apache-tomcat-8.5.33.tar.gz /apps
RUN ln -s /apps/apache-tomcat-8.5.33 /apps/tomcat

创建docker build脚本

[root@node2 /app/dockerfile/web/tomcat/tomcat-base]#vim build-command.sh 
#!/bin/bash

docker build -t 172.20.7.50/baseimages/centos-tomcat:8.5.33 .

执行创建镜像文件:

[root@node2 /app/dockerfile/web/tomcat/tomcat-base]#bash build-command.sh 
    Sending build context to Docker daemon  9.625MB
    Step 1/5 : FROM 172.20.7.50/baseimages/centos7.5-jdk:8.162
     ---> 9fb867ae8c39
    Step 2/5 : LABEL maintainer "mr.luo <mr.luo@dklwj.com>"
     ---> Running in 9ce6fc4d2850
    Removing intermediate container 9ce6fc4d2850
     ---> b68755061b28
    Step 3/5 : RUN mkdir /apps
     ---> Running in b483c6b127f2
    Removing intermediate container b483c6b127f2
     ---> 605c1a048a5f
    Step 4/5 : ADD apache-tomcat-8.5.33.tar.gz /apps
     ---> 3c44f96ed41c
    Step 5/5 : RUN ln -s /apps/apache-tomcat-8.5.33 /apps/tomcat
     ---> Running in 4c1aa39a6c92
    Removing intermediate container 4c1aa39a6c92
     ---> 9b3bc4f58cc9
    Successfully built 9b3bc4f58cc9
    Successfully tagged 172.20.7.50/baseimages/centos-tomcat:8.5.33

利用创建好的镜像起一个容器检查下是否成功制作好,启动时加上-p暴露端口,在物理机上测试下

[root@node2 /app/dockerfile/web/tomcat/tomcat-base]#docker run -it -p 8802:8080 172.20.7.50/baseimages/centos-tomcat:8.5.33 bash   
[root@917b2c2262a3 /]# cd /apps/
[root@917b2c2262a3 apps]# ll
total 0
drwxr-xr-x 9 root root 220 Nov 22 22:08 apache-tomcat-8.5.33
lrwxrwxrwx 1 root root  26 Nov 22 22:08 tomcat -> /apps/apache-tomcat-8.5.33
[root@917b2c2262a3 apps]# ./tomcat/bin/catalina.sh start
Using CATALINA_BASE:   /apps/tomcat
Using CATALINA_HOME:   /apps/tomcat
Using CATALINA_TMPDIR: /apps/tomcat/temp
Using JRE_HOME:        /usr/local/jdk/jre
Using CLASSPATH:       /apps/tomcat/bin/bootstrap.jar:/apps/tomcat/bin/tomcat-juli.jar
Tomcat started.

在客户端用浏览器测试

Dockerfile简单使用实战


以上所述就是小编给大家介绍的《Dockerfile简单使用实战》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Release It!

Release It!

Michael T. Nygard / Pragmatic Bookshelf / 2007-03-30 / USD 34.95

“Feature complete” is not the same as “production ready.” Whether it’s in Java, .NET, or Ruby on Rails, getting your application ready to ship is only half the battle. Did you design your system to......一起来看看 《Release It!》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器