Docker打怪升级之路四

Docker打怪升级之路四,第1张

Docker打怪升级之路四

目录

1、安装docker并配置镜像加速

2、Dockerfile常用指令总结

3、基于centos制作tomcat镜像

4、利用桥接实现不同宿主机之间容器互联

5、Dockerfile编写技巧之ENTRYPOINT[x.sh]配合CMD


1、安装docker并配置镜像加速

添加国内镜像源使得拉去镜像速度加快、如网易云、腾讯云、阿里云

阿里云可通过 容器镜像服务-镜像工具-镜像加速-获取自己专属的加速地址,将地址添加至 /etc/docker/daemon.json中即可

[root@master1 ~]# cat /etc/docker/daemon.json 
{
  "data-root": "/var/lib/docker",
  "exec-opts": ["native.cgroupdriver=cgroupfs"],
  "registry-mirrors": ["https://fivjgw66.mirror.aliyuncs.com","https://docker.mirrors.ustc.edu.cn", "http://hub-mirror.c.163.com"], 
  "insecure-registries": ["127.0.0.1/8"],
  "max-concurrent-downloads": 10,
  "live-restore": true,
  "log-driver": "json-file",
  "log-level": "warn",
  "log-opts": {
    "max-size": "15m",
    "max-file": "3"
    },
  "storage-driver": "overlay2"
}

2、Dockerfile常用指令总结
  • FROM  基于哪个基础镜像制作的     
  • LABEL  标签一般说明作者邮箱等信息,也可是对Dockerfile镜像一些描述
  • ADD      复制本地文件至镜像内
  • COPY   复制以及解压文件至镜像内
  • ENV     定义变量;变量可用于docker built以及docker run阶段
  • RUN     执行命令
  • EXPOSE    暴露端口,默认为TCP
  • ENTRYPOINT     访问入口,优先级比CMD高,常配合CMD达到执行脚本+可持续执行命令的作用     
  • CMD            一般用于容器可持续执行的命令

3、基于centos制作tomcat镜像

1、思路 centos基础镜像-jdk环境镜像-tomcat基础镜像-tomcat业务镜像

添加环境变量->添加JDK包->添加Tomcat二进制包->执行run_tomcat.sh持续命令

2、将基础镜像制作成tomcat镜像,准备的文件有:

[root@master1 dockerfile]# tree .
.
├── README.md        
├── system                  ### 系统镜像目录
│   ├── alpine
│   └── centos     
│       ├── build.sh
│       └── Dockerfile     ##基于centos镜像添加一些常用应用软件
└── web                        ###  业务镜像目录
    ├── jdk           ##   jdk环境镜像目录
    │   ├── Dockerfile    ##添加JAVA_HOME及PATH等环境变量  
    │   ├── jdk-8u301-linux-x64.tar.gz   ##jdk的包
    │   └── profile          ##将环境变量添加的配置文件
    ├── nginx
    └── tomcat               ###  tomcat镜像目录
        ├── apache-tomcat-8.5.72.tar.gz     ## tomcat的包
        ├── Dockerfile      ##定义tomcat环境基础变量及添加tomcat包
        └── tomcat-app1    ### 业务tomcat镜像
            ├── Dockerfile    ##添加主页、run_tomcat.sh持续运行脚本、用户目录属性、暴露端口等
            ├── index.jsp       ##主页
            ├── run_tomcat.sh   ##核心命令/apps/tomcat/bin/catalina.sh start
            └── server.xml     ##定义主页所在目录

8 directories, 12 files

--- Dockerfile文件  ----------------------------------------

## Centos基础镜像
[root@master1 dockerfile]# cat system/centos/Dockerfile 
FROM centos:centos7.9.2009
LABEL maintainer="yyy"
ENV REFESH_DATA 2021-10-18
RUN yum -y install wget && rm -f /etc/yum.repos.d/* 
 && wget -P /etc/yum.repos.d/  http://mirrors.aliyun.com/repo/Centos-7.repo 
 && yum -y install vim-enhanced tcpdump lrzsz tree telnet bash-completion net-tools 
 && yum -y install  gcc make glibc glibc-devel pcre-devel openssl-devel zlib-devel 
 && yum clean all 
 && rm -f /etc/localtime 
 && ln -s ../usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN groupadd www -g 2021 && useradd www -u 2021 -g www 

## jdk基础镜像
[root@master1 dockerfile]# cat web/jdk/Dockerfile 
FROM centos-base:v1
LABEL maintainer="yyy"
ADD jdk-8u301-linux-x64.tar.gz /usr/local/src
RUN ln -s /usr/local/src/jdk1.8.0_301 /usr/local/jdk
ADD profile /etc/profile
ENV JAVA_HOME /usr/local/jdk
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVE_HOME/lib/:$JRE_HOME/lib/
ENV PATH $PATH:$JAVA_HOME/bin


## tomcat基础镜像
[root@master1 dockerfile]# cat web/tomcat/Dockerfile 
FROM centos-jdk:8u301
LABEL maintainer="yyy"
ENV TZ "Asia/Shanghai"
ENV LANG en_US.UTF-8
ENV TERM xterm
ENV TOMCAT_MAJOR_VERSION 8
ENV TOMCAT_MINOR_VERSIOn 8.5.72
ENV APP_DIR ${CATALINA_HOME}/webapps



## tomcat业务镜像
[root@master1 dockerfile]# cat web/tomcat/tomcat-app1/Dockerfile 
FROM tomcat-base:v8.5.72
LABEL maintainer="yyy"
ADD server.xml /apps/tomcat/conf/server.xml
ADD run_tomcat.sh /apps/tomcat/bin/run_tomcat.sh
ADD index.jsp /data/tomcat/webapps/app/
RUN chown -R www.www /apps/ /data/tomcat/
EXPOSE 8080 8009
CMD ["/apps/tomcat/bin/run_tomcat.sh]


--- 变动文件细节  ----------------------------------------

##jdk环境的/etc/profile文件
export JAVA_HOME=/usr/local/jdk
export TOMCAT_HOME=/apps/tomcat
export PATH=$JAVE_HOME/bin:$JAVA_HOME/jre/bin:$TOMCAT_HOME/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVE_HOME/jre/lib:$JAVE_HOME/lib/tools.jar

## tomcat业务镜像主页jsp文件
[root@master1 dockerfile]# cat web/tomcat/tomcat-app1/index.jsp 
Tomcat Page in app1

## tomcat业务镜像server.xml修改appbase网页所在目录位置
      

## tomcat业务镜像CMD持续运行的脚本
[root@master1 dockerfile]# cat web/tomcat/tomcat-app1/run_tomcat.sh 
#!/bin/bash
echo "namesever 180.76.76.76" > /etc/resolv.conf
su - www -c "/apps/tomcat/bin/catalina.sh start"
su - www -c "tail -f /etc/hosts"

4、利用桥接实现不同宿主机之间容器互联

1、容器两端默认网桥模式,各容器网段不同;先添加对端容器所在网段的路由、添加iptables规则修改FORWARD

  • route add -net 192.168.1.0/24 gw 10.0.0.1
  • iptables -A FORWARD -s 10.0.0.0/24 -j ACCEPT #实现NAT内网地址到外网

2、另外一种将宿主机网卡加入网桥中不常用也不推荐

3、使用Open vSwitch(GRE隧道原理)

5、Dockerfile编写技巧之ENTRYPOINT[x.sh]配合CMD

通常要实现一段大部分的脚本或很多行命令集合执行在Dockerfile怎么实现,将脚本末尾添加“$@”这个

 通过将.sh脚本后面添加 ,在Dockerfile配合ENTRYPOINT和CMD达到的效果为:

CMD的内容都将成为参数传入到ENRTYPOINT里的命令,且此时脚本末尾为$@,表示命令行中传参将追加替换至脚本末尾,实现脚本+可持续执行的命令的效果

1、达到该镜像能够持续运行不退出的效果【CMD命令】

2、能够将脚本于ENTRYPOINT和CMD融合,达到即执行了脚本又能持续执行CMD中命令的效果。

如下面Haproxy镜像Dockerfile文件的构造

Dockerfile:  docker-entrypoint.sh:

 Haproxy镜像github:

 

 

 

 

 

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/3988457.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-10-21
下一篇 2022-10-21

发表评论

登录后才能评论

评论列表(0条)

保存