IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Docker分层打镜像 -> 正文阅读

[系统运维]Docker分层打镜像

1自定义Centos基础镜像

[root@cent7-yzil ~]# docker pull centos:7.9.2009

[root@cent7-yzil ~]# mkdir /opt/dockerfile/{web/{nginx,tomcat,jdk,apache},system/{centos,ubuntu,redhat}} -pv

[root@cent7-yzil ~]# cd /opt/dockerfile/system/centos/
[root@cent7-yzil centos]# cat Dockerfile 
FROM centos:7.9.2009
LABEL maintainer "yzl calm_yzl@163.com"
RUN yum install epel-release -y && yum -y install vim-enhanced tcpdump lrzsz tree telnet bash-completion net-tools wget bzip2 lsof tmux man-pages zip unzip nfs-utils gcc make gcc-c++ glibc glibc-devel pcre pcre-devel openssl  openssl-devel systemd-devel zlib-devel screen  strace redhat-lsb-core

RUN rm -rf /etc/localtime && ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

[root@cent7-yzil centos]# cat build-command.sh 
#!/bin/bash
docker build -t centos7.9.2009:v1 .

[root@cent7-yzil centos]# bash build-command.sh 

[root@cent7-yzil centos]# docker images 
REPOSITORY       TAG        IMAGE ID       CREATED         SIZE
centos7.9.2009   v1         74f3c49ec716   3 minutes ago   579MB

2手动制作基于centos底层镜像编译nginx镜像

#进入到指定的Dockerfile目录
[root@cent7-yzil opt]# cd dockerfile/web/nginx/
[root@cent7-yzil nginx]# pwd
/opt/dockerfile/web/nginx
#编写Dockerfile
[root@cent7-yzil nginx]# cat Dockerfile 
FROM  centos7.9.2009:v1 
LABEL maintainer "yzl calm_yzl@163.com"
ADD nginx-1.18.0.tar.gz /usr/local/src/
RUN groupadd -g 1000 nginx && useradd -g 1000 -u 1000 nginx
RUN cd /usr/local/src/nginx-1.18.0 && ./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module && make && make install
RUN cd /apps/nginx/
#ADD nginx.conf /apps/nginx/conf/nginx.conf
RUN ln -s /apps/nginx/sbin/nginx /usr/bin
EXPOSE 80 443
CMD ["nginx","-g","daemon off;"]

[root@cent7-yzil nginx]# ls
build-command.sh  Dockerfile  nginx-1.18.0.tar.gz

[root@cent7-yzil nginx]# cat build-command.sh 
#!/bin/bash
docker build -t nginx-1.18:v1 .

[root@cent7-yzil nginx]# bash build-command.sh 

[root@cent7-yzil nginx]# docker images
REPOSITORY       TAG        IMAGE ID       CREATED          SIZE
nginx-1.18       v1         b44b5d8d58d3   26 seconds ago   612MB

#验证是否成功,浏览器打开http://10.0.0.123/
[root@cent7-yzil nginx]# docker run -it -d -p 80:80 -p 443:443 --name nginx-1.18-v1 nginx-1.18:v1 
#导出镜像nginx的配置文件到nginx下目录,重新改配置在重新打镜像
[root@cent7-yzil nginx]# docker run -it --rm nginx-1.18:v1 bash

[root@cent7-yzil nginx]# docker run -it --rm nginx-1.18:v1 bash
[root@fb76e408d239 /]# ls /apps/nginx/conf/nginx.conf
/apps/nginx/conf/nginx.conf
[root@fb76e408d239 /]# 

[root@cent7-yzil nginx]# docker cp fb76e408d239:/apps/nginx/conf/nginx.conf .
[root@cent7-yzil nginx]# ls
build-command.sh  Dockerfile  nginx-1.18.0.tar.gz  nginx.conf

[root@cent7_6 ~]# scp /etc/nginx/nginx.conf 10.0.0.123:/opt/dockerfile/web/nginx/

#修改Dockerfile,取消复制nginx
[root@cent7-yzil nginx]# cat Dockerfile 
FROM  centos7.9.2009:v1 
LABEL maintainer "yzl calm_yzl@163.com"

ADD nginx-1.18.0.tar.gz /usr/local/src/
RUN groupadd -g 1000 nginx && useradd -g 1000 -u 1000 nginx
RUN cd /usr/local/src/nginx-1.18.0 && ./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module && make && make install
RUN cd /apps/nginx/
ADD nginx.conf /apps/nginx/conf/nginx.conf    #取消这行注释
RUN ln -s /apps/nginx/sbin/nginx /usr/bin
EXPOSE 80 443
CMD ["nginx","-g","daemon off;"]
#nginx配置更改
[root@cent7-yzil nginx]# egrep -v "^#|^$" nginx.conf 
user nginx;
worker_processes auto;
error_log /apps/nginx/logs/error.log;
pid /usr/nginx/run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
    worker_connections 1024;
}
http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /apps/nginx/logs/access.log  main;
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;
    include             /apps/nginx/mime.types;
    default_type        application/octet-stream;
    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /apps/nginx/conf.d/*.conf;
    server {
        listen       80;
        listen       [::]:80;
        server_name  _;
        root         /apps/nginx/html;
        # Load configuration files for the default server block.
        include /apps/nginx/default.d/*.conf;
        error_page 404 /404.html;
        location = /404.html {
        }
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }
}

3自定义tomcat业务镜像

[root@cent7-yzil ~]# cd /opt/dockerfile/web/jdk/
[root@cent7-yzil jdk]# ls
build-command.sh  Dockerfile  jdk-8u291-linux-x64.tar.gz  profile

[root@cent7_6 ~]# scp /etc/profile 10.0.0.123:/opt/dockerfile/web/jdk/

[root@cent7-yzil jdk]# cat build-command.sh 
#!/bin/bash
docker build -t jdk-base:v8.291 .

#第一种
[root@cent7-yzil jdk]# cat Dockerfile 
#JDK Base image
FROM  centos7.9.2009:v1
LABEL maintainer "yzl calm_yzl@163.com"

ADD jdk-8u291-linux-x64.tar.gz /usr/local/src/
RUN ln -sv /usr/local/src/jdk1.8.0_291 /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


#第二种 $前需要转移 \$,要不然会出错
[root@cent7-yzil jdk]# cat Dockerfile 
#JDK Base image
FROM  centos7.9.2009:v1
LABEL maintainer "yzl calm_yzl@163.com"

ADD jdk-8u291-linux-x64.tar.gz /usr/local/src/
RUN ln -sv /usr/local/src/jdk1.8.0_291 /usr/local/jdk

ADD profile /etc/profile
RUN echo "export JAVA_HOME=/usr/local/jdk" > /etc/profile.d/jdk.sh
RUN echo "export PATH=$PATH:\$JAVA_HOME/bin" >> /etc/profile.d/jdk.sh
RUN echo "JRE_HOME=\$JAVA_HOME/jre" >> /etc/profile.d/jdk.sh
RUN echo "export CLASSPATH=\$JAVA_HOME/lib/:\$JRE_HOME/lib/" /etc/profile.d/jdk.sh
RUN source /etc/profile.d/jdk.sh
#验证是否安装成功
[root@cent7-yzil jdk]# docker run -it --rm jdk-bash:v8.291 bash
[root@80e586822463 /]# java -version
java version "1.8.0_291"
Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)

4从JDK镜像构建tomcat 8 Base 镜像5

[root@cent7-yzil tomcat]# ls
apache-tomcat-8.5.64.tar.gz  build-command.sh  Dockerfile

#第一种
[root@cent7-yzil tomcat]# cat Dockerfile 
#Tomcat Base
FROM jdk-base:v8.291
LABEL maintainer "yzl calm_yzl@163.com"

#env
ENV TZ "Asia/Shanghai"
ENV LANG en_US.UTF-8
ENV TERM xterm
ENV TOMCAT_MAJOR_VERSION 8
ENV TOMCAT_MINOR_VERSION 8.5.64
ENV CATALINA_HOME /apps/tomcat
ENV APP_DIR ${CATALINA_HOME}/webapps

#tomcat
RUN mkdir /apps
ADD apache-tomcat-8.5.64.tar.gz /apps
RUN ln -sv /apps/apache-tomcat-8.5.64 /apps/tomcat

RUN groupadd tomcat -g 2000 && useradd tomcat -u 2000 -g tomcat
RUN chown tomcat.tomcat /apps/ -R

#第二种
[root@cent7-yzil tomcat]# cat Dockerfile 
#Tomcat Base
FROM jdk-base:v8.291
LABEL maintainer "yzl calm_yzl@163.com"

RUN echo "PATH=/apps/tomcat/bin:$PATH" > /etc/profile.d/tomcat.sh
RUN source /etc/profile.d/tomcat.sh

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

RUN groupadd tomcat -g 2000 && useradd tomcat -u 2000 -g tomcat
RUN chown tomcat.tomcat /apps/ -R


[root@cent7-yzil tomcat]# cat build-command.sh 
#/bin/bash
docker build -t tomcat-base:v8.5.64 .

[root@cent7-yzil tomcat]# bash build-command.sh 

#测试是否可以访问http://10.0.0.123:8080/
[root@cent7-yzil ~]# docker run -it -p 8080:8080 -d tomcat-base:v8.5.64
#内部启动tomcat
[root@cent7-yzil ~]# docker exec -it 0e0bf1ed74fc bash
[root@0e0bf1ed74fc /]# startup.sh

5tomcat镜像 ?

[root@cent7-yzil tomcat]# cat Dockerfile 
#Tomcat Base
FROM jdk-base:v8.291
LABEL maintainer "yzl calm_yzl@163.com"

#env
#ENV TZ "Asia/Shanghai"
#ENV LANG en_US.UTF-8
#ENV TERM xterm
#ENV TOMCAT_MAJOR_VERSION 8
#ENV TOMCAT_MINOR_VERSION 8.5.64
RUN echo "PATH=/usr/local/jdk/bin:/apps/tomcat/bin:$PATH" > /etc/profile.d/tomcat.sh   #变量传给普通用户
RUN source /etc/profile.d/tomcat.sh
#ENV CATALINA_HOME /apps/tomcat
#ENV APP_DIR ${CATALINA_HOME}/webapps

ENV JAVA_HOME /usr/local/jdk             #变量传给root用户
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/:$JRE_HOME/lib/
ENV PATH $PATH:$JAVA_HOME/bin

#tomcat
RUN mkdir /apps
ADD apache-tomcat-8.5.64.tar.gz /apps
ADD profile /etc/
RUN ln -s /apps/apache-tomcat-8.5.64 /apps/tomcat

RUN groupadd tomcat -g 2000 && useradd tomcat -u 2000 -g tomcat
RUN chown tomcat.tomcat /apps/ -R

CMD { /apps/tomcat/bin/catalina.sh start; tail -f /etc/hosts; }    #开机启动

?

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-22 13:52:26  更:2021-08-22 13:54:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 20:52:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计