7 Dockerfile定制容器镜像
7.1 Dockerfile格式
Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令,’#’ 为 Dockerfile 中的注释。

| 指令 | 描述 |
|---|---|
| FROM | 构建新镜像是基于哪个镜像 |
| MAINTAINER LABEL | 镜像维护者姓名或邮箱地址 |
| RUN | 构建镜像时运行的Shell命令 |
| COPY | 拷贝文件或目录到镜像中 |
| ENV | 设置环境变量 |
| USER | 为RUN、CMD和ENTRYPOINT执行命令指定运行用户 |
| EXPOSE | 声明容器运行的服务端口 |
| HEALTHCHECK | 容器中服务健康检查 |
| WORKDIR | 为RUN、CMD、ENTRYPOINT、COPY和ADD设置工作目录 |
| ENTRYPOINT | 运行容器时执行,如果有多个ENTRYPOINT指令,最后一个生效 |
| CMD | 运行容器时执行,如果有多个CMD指令,最后一个生效 |
7.3 Build镜像
Usage: docker build [OPTIONS] PATH | URL | -[flags]Options:
-
-t, --tag list 镜像名称
-
-f, --file string 指定Dockerfile文件位置
docker build .
docker build -t shykes/myapp .
docker build -t shykes/myapp -f /path/Dockerfile /path
docker build -t shykes/myapp http://www.example.com/Dockerfile
7.4 构建Nginx基础镜像
FROM centos:7
MAINTAINER weirel
RUN yum -y install gcc gcc-c++ make \
openssl-devel pcre-devel gd-devel \
iproute net-tools telnet wget curl --nogpgcheck && \
yum clean all && \
rm -rf /var/cache/yum/*
RUN wget http://nginx.org/download/nginx-1.19.10.tar.gz && \
tar zxvf nginx-1.19.10.tar.gz && \
cd nginx-1.19.10 && \
./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/index.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
WORKDIR /usr/local/nginx
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
wget https://cunqi0105-1300757323.cos.ap-shanghai.myqcloud.com/configuration-file/nginx.conf
7.5 构建Tomcat基础镜像
FROM centos:7
MAINTAINER weirel
ENV VERSION=8.5.65
RUN yum -y install java-1.8.0-openjdk wget curl unzip iproute net-tools --nogpgcheck && \
yum clean all && \
rm -rf /var/cache/yum/*
RUN wget https://mirrors.bfsu.edu.cn/apache/tomcat/tomcat-8/v8.5.65/bin/apache-tomcat-8.5.65.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"]
7.6 构建PHP基础镜像
FROM centos:7
MAINTAINER weirel
RUN yum -y install epel-release --nogpgcheck && \
yum -y install gcc gcc-c++ make gd-devel libxml2-devel \
libcurl-devel libjpeg-devel libpng-devel openssl-devel \
libmcrypt-devel libxslt-devel libtidy-devel autoconf \
iproute net-tools telnet wget curl --nogpgcheck && \
yum clean all && \
rm -rf /var/cache/yum/*
RUN wget http://docs.php.net/distributions/php-7.3.7.tar.gz && \
tar zxvf php-7.3.7.tar.gz && \
cd php-7.3.7 && \
./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--enable-fpm --enable-opcache \
--with-mysql --with-mysqli --with-pdo-mysql \
--with-openssl --with-zlib --with-curl --with-gd \
--with-jpeg-dir --with-png-dir --with-freetype-dir \
--enable-mbstring --with-mcrypt --enable-hash && \
make -j 4 && make install && \
cp php.ini-production /usr/local/php/etc/php.ini && \
cp sapi/fpm/php-fpm.conf /usr/local/php/etc/php-fpm.conf && \
sed -i "90a \daemonize = no" /usr/local/php/etc/php-fpm.conf && \
mkdir /usr/local/php/log && \
cd / && rm -rf php* && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ENV PATH $PATH:/usr/local/php/sbin
COPY php.ini /usr/local/php/etc/
COPY php-fpm.conf /usr/local/php/etc/
WORKDIR /usr/local/php
EXPOSE 9000
CMD ["php-fpm"]
wget https://cunqi0105-1300757323.cos.ap-shanghai.myqcloud.com/configuration-file/php-fpm.conf
wget https://cunqi0105-1300757323.cos.ap-shanghai.myqcloud.com/configuration-file/php.ini
7.7 构建Nginx前端项目
FROM nginx
MAINTAINER weirel
COPY ./dist /usr/share/nginx/html
EXPOSE 80
ENTRYPOINT ["nginx","-s","reload"]
7.7 构建java后端项目
FROM openjdk:8-jdk-alpine
MAINTAINER weirel
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
EXPOSE 8888
ENTRYPOINT ["java","-jar","/app.jar"]
7.8 搭建LNMP网站平台
1、自定义网络
docker network create lnmp
2、创建Mysql容器
docker run -d --name lnmp_mysql --net lnmp --mount src=mysql-vol,dst=/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=wordpress mysql:5.7 --character-set-server=utf8
3、创建PHP容器
docker run -d --name lnmp_php --net lnmp --mount src=wwwroot,dst=/wwwroot php:v1
4、创建Nginx容器
docker run -d --name lnmp_nginx --net lnmp -p 88:80 --mount src=wwwroot,dst=/wwwroot nginx:v1
本文摘抄或总结其他笔记,笔记不涉及任何商业用途,如果侵权请及时联系处理

浙公网安备 33010602011771号