详解Dockerfile之实战项目

Posted 刘贤松handler

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详解Dockerfile之实战项目相关的知识,希望对你有一定的参考价值。

docker 的使用过程:它分为镜像构建容器启动

dockerfile:镜像的构建过程。即创建一个镜像,它包含安装运行所需的环境、程序代码等。这个创建过程就是使用 dockerfile 来完成的。然后执行docker build . 就能制作镜像。从上往下依次执行dockerfile里面的命令dockerfile的作用是从无到有的构建镜像。它包含安装运行所需的环境、程序代码等。这个创建过程就是使用 dockerfile 来完成的。Dockerfile - 为 docker build 命令准备的,用于建立一个独立的 image

docker-compse.yml 记录一个项目(project, 一般是多个镜像)的构建过程。docker-compose是编排容器的。可以同时管理多个 container ,包括他们之间的关系、用官方 image 还是自己 build 、各种网络端口定义、储存空间定义等 他们之间的关系可以分为

1.dockerfile: 构建镜像;

2.docker run: 启动容器;

3.docker-compose: 启动服务;

docker  build   .       #当前目录执行`
`docker  build -t  shykes/myapp  .   # -t 指定dockerfe的名字`
`docker  build -t  shykes/myapp  -f /path/Dockerfile  /path   #  -f 指定路径

构建容器前先开启内核路由转发,否则创建的容器无法连接网络。

echo -e "net.ipv4.ip_forward = 1\\nnet.ipv4.conf.default.rp_filter = 0 \\nnet.ipv4.conf.all.rp_filter = 0" >> /etc/sysctl.conf
sysctl -p

实例一 构建一个nginx镜像

需求:以centos为基础镜像,构建一个nginx源码编译安装的镜像,同时安装相应的管理工具

mkdir   /root/nginx-dockerfile   && cd   /root/nginx-dockerfile
cat Dockerfile
FROM centos:7
MAINTAINER zhangfan
COPY CentOS-Base.repo  /etc/yum.repos.d/  #拷贝本地源到镜像中
#安装基础管理命令
RUN yum install -y gcc gcc-c++ make \\
    openssl-devel pcre-devel gd-devel \\
    iproute net-tools telnet wget curl && \\
    yum clean all && \\
    rm -rf /var/cache/yum/*
#下载源码nginx包并编译安装
RUN wget http://nginx.org/download/nginx-1.15.5.tar.gz && \\
    tar zxf nginx-1.15.5.tar.gz && \\
    cd nginx-1.15.5 &&\\
    ./configure --prefix=/usr/local/nginx \\
    --with-http_ssl_module \\
    --with-http_stub_status_module && \\
    make -j 4 && make install && \\
    rm -rf /usr/local/nginx/html/* && \\
    echo "ok" >> /usr/local/nginx/html/status.html && \\
    cd / && rm -rf nginx-1.12.2* && \\
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

ENV PATH $PATH:/usr/local/nginx/sbin   #声明环境变量
#COPY nginx.conf /usr/local/nginx/conf/nginx.conf    #拷贝项目nginx配置
WORKDIR /usr/local/nginx   设置工作目录
EXPOSE 80      指定端口
CMD ["nginx", "-g", "daemon off;"]
docker  build  -t  nginx:v1        #当前目录执行,执行完无报错,说明构建成功

构建tomcat镜像

FROM centos:7                     #指定基础镜像
MAINTAINER zhangfan               #指定作者    
ENV VERSION=8.5.61                #定义版本
RUN yum install java-1.8.0-openjdk wget curl unzip iproute net-tools -y && \\
    yum clean all && \\
    rm -rf /var/cache/yum/*
#https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.61/bin/apache-tomcat-8.5.61.tar.gz
#下载安装二进制包
RUN wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v$VERSION/bin/apache-tomcat-$VERSION.tar.gz && \\
    tar zxf apache-tomcat-$VERSION.tar.gz && \\
    mv apache-tomcat-$VERSION /usr/local/tomcat && \\
    rm -rf apache-tomcat-$VERSION.tar.gz /usr/local/tomcat/webapps/* && \\
    mkdir /usr/local/tomcat/webapps/test && \\
    echo "ok" > /usr/local/tomcat/webapps/test/status.html && \\
    sed -i '1a JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"' /usr/local/tomcat/bin/catalina.sh && \\
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#设定环境变量
ENV PATH $PATH:/usr/local/tomcat/bin   
#设置工作目录
WORKDIR /usr/local/tomcat
#指定端口
EXPOSE 8080
CMD ["catalina.sh", "run"]  #配置前台启动
docker run -d   --name  tomcat01  -p 8089:8080  tomcat:v1
curl  http://192.168.106.100:8089/test/status.html  #出现如图所示的测试页面说明构建成功

构建jenkins项目

mkdir  /root/jenkins-dockerfile  &&cd  /root/jenkins-dockerfile
wget https://get.jenkins.io/war-stable/2.263.1/jenkins.war
cat  Dockerfile
FROM tomcat:v1                           #指定刚才构建的tomcat为基础镜像
MAINTAINER zhangfan               #指定作者
COPY jenkins.war   /usr/local/tomcat/webapps/ROOT.war   #将下载的jenkins.war  拷贝到tomcat项目中去
docker build  -t  tomcat:v2   .
docker  run  -d  --name tomcat02  -p 8888:8080  tomcat:v2

以上是关于详解Dockerfile之实战项目的主要内容,如果未能解决你的问题,请参考以下文章

Dockerfile详解

企业运维实战--最全Docker学习笔记1.Docker简介安装部署镜像构建Dockerfile详解镜像构建镜像优化本地私有仓库搭建

Dockerfile实战之部署python网站

Docker 之 Dockerfile 常用语法与实战

Docker小白到实战之Dockerfile解析及实战演示,果然顺手

Docker 进阶之 Dockerfile 详解