详解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之实战项目的主要内容,如果未能解决你的问题,请参考以下文章
企业运维实战--最全Docker学习笔记1.Docker简介安装部署镜像构建Dockerfile详解镜像构建镜像优化本地私有仓库搭建