dockerfile

基于jdk8的centos的Dockerfile

# 定义基础镜像
FROM centos:latest

# 定义维护者信息
LABEL maintainer="antball"

#定义构建时的参数
ARG JDK_TAR=jdk-8u201-linux-x64.tar.gz

#添加宿主机的jdk 到容器中的指定目录
ADD $JDK_TAR /usr/local/

#Ubuntu操作系统
#&& apt-get update  \
#&& apt-get -y install  vim  \
#&& apt-get -y install language-pack-zh-hans \
#&& apt-get install -y tzdata \

RUN yum install -y wget \
&& yum install -y vim  \
&& yum install -y tzdata \
#&& yum install net-tools.* \
&& yum install iputils \
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone \
&& yum -y install kde-l10n-Chinese glibc-common \
&& echo "export LC_ALL=zh_CN.UTF-8"  >>  /etc/profile \
&& localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 \
&& source /etc/profile

#设置环境变量
ENV JAVA_HOME=/usr/local/jdk1.8.0_201 
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH ${JAVA_HOME}/bin:$PATH
ENV LANG="zh_CN.UTF-8"

#RUN source /etc/profile

#ENV CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#ENV PATH=$PATH:$JAVA_HOME/bin

CMD ["java", "-version"]


https://blog.csdn.net/u010882691/article/details/82259033
https://www.cnblogs.com/gaogaoyanjiu/p/9390063.html
docker 中文乱码、时区问题
https://blog.csdn.net/cuigelasi/article/details/82852464

Docker run centos 中文乱码,时区不对 问题解决

构建jdk8镜像并运行容器

# 通过-f指定Dockerfile文件的位置
docker build -f /path/to/a/Dockerfile .

# 通过-t参数指定构建成后,镜像的仓库、标签,可指定多个
docker build -t antball/jdk8 .

# 运行镜像生成容器jdk_container
docker run 
  #-v /usr/local/jdk1.8.0_161:/usr/local/jdk  
  --name jdk_container
  antball/jdk8


#进入容器内查看 -it   是-i  和 -t的简写, 表示以交互式的方式运行容器,加上-d表示后台运行
docker run -it antball/jdk8 /bin/bash
[root@708a2e94c413 /]# java -version   # 出来结果表明配置没问题


maven Dockerfile

# 定义基础镜像
FROM antball/jdk8:latest

# 定义维护者信息
LABEL maintainer="antball"

#定义构建时的参数
ARG MAVEN_VERSION=apache-maven-3.6.1

RUN wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz \
  && tar xzvf apache-maven-3.6.1-bin.tar.gz -C /usr/local/  \
  && ln -sv /usr/local/apache-maven-3.6.1/ /usr/local/maven  \
  && rm -r apache-maven-3.6.1-bin.tar.gz

ENV MAVEN_HOME /usr/local/maven
ENV PATH $MAVEN_HOME/bin:${PATH}

  # && export MAVEN_HOME=/usr/local/maven  \
  # && export PATH=${MAVEN_HOME}/bin:${PATH}  \

CMD ["mvn", "-v"]

---
docker build -t antball/maven .

docker run 
  #-v /usr/local/jdk1.8.0_161:/usr/local/jdk  
   -P
  --name jdk_container
  antball/maven 




----

#安装supervisor   supervisor是linux下监控进程的工具,通过supervisor启动所有服务
RUN yum install -y python-setuptools.noarch && easy_install supervisor
COPY supervisord.conf /etc/supervisord.conf

#修改时区
RUN rm -rf /etc/localtime && ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

#配置显示中文
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
#设置环境变量
ENV LC_ALL zh_CN.utf8

https://www.cnblogs.com/ilinuxer/p/6649029.html
https://www.jianshu.com/p/cb73ac39820b
https://blog.51cto.com/1000682/2369455

nexus3 dockerfile

# 定义基础镜像
FROM antball/jdk8:latest

# 定义维护者信息
LABEL maintainer="antball"

#WORKDIR /usr/local/

#会在宿主机创建一个匿名卷挂载到容器的这个目录上
VOLUME ["/usr/local/sonatype-work"]
#VOLUME ["/usr/local/nexus-3.15.2-01/etc/nexus-default.properties"]

#定义构建时的参数
ARG NEXUS_TAR=nexus-3.15.2-01-unix.tar.gz

#添加宿主机的jdk 到容器中的指定目录
COPY ./$NEXUS_TAR /usr/local/

#RUN yum install -y wget \
#  && wget https://sonatype-download.global.ssl.fastly.net/repository/repositoryManager/3/nexus-3.16.2-01-unix.tar.gz \
RUN  tar xzvf /usr/local/nexus-3.15.2-01-unix.tar.gz -C /usr/local/  \
  && rm -r /usr/local/nexus-3.15.2-01-unix.tar.gz

ENV NEXUS_HOME=/usr/local/nexus-3.15.2-01
ENV PATH ${NEXUS_HOME}/bin:$PATH

EXPOSE 8081

CMD /usr/local/nexus-3.15.2-01/bin/nexus run 

---

# 定义基础镜像
FROM antball/jdk8:latest

# 定义维护者信息
LABEL maintainer="antball"

WORKDIR /usr/local/

#会在宿主机创建一个匿名卷挂载到容器的这个目录上
VOLUME ["/usr/local/sonatype-work"]
#VOLUME ["/usr/local/nexus-3.15.2-01/etc/nexus-default.properties"]

#定义构建时的参数
ARG NEXUS_TAR=nexus-3.15.2-01-unix.tar.gz

#添加宿主机的jdk 到容器中的指定目录
COPY ./$NEXUS_TAR ./

RUN  tar xzvf nexus-3.15.2-01-unix.tar.gz -C ./  \
  && rm -r ./nexus-3.15.2-01-unix.tar.gz

ENV NEXUS_HOME=/usr/local/nexus-3.15.2-01
ENV PATH ${NEXUS_HOME}/bin:$PATH

EXPOSE 8081

CMD ./nexus-3.15.2-01/bin/nexus run 

---

docker build -t antball/nexus3 .

#  --privileged=true 授予root权限(挂载多级目录必须为true,否则容器访问宿主机权限不足)
#  --restart=always
docker run -d \
    -v /usr/local/maven/3/sonatype-work:/usr/local/sonatype-work   \
    -v /usr/local/maven/3//usr/local/nexus-3.15.2-01/etc/nexus-default.properties \
    --name nexus_container \
    -p 8081:8081 \
    antball/nexus3 

挂载配置文件
https://blog.csdn.net/u011781521/article/details/80464220
https://blog.csdn.net/starzhou/article/details/86814872

tomcat dockerfile

# 定义基础镜像
FROM antball/jdk8:latest

# 定义维护者信息
LABEL maintainer="antball"

WORKDIR /usr/local/

#会在宿主机创建一个匿名卷挂载到容器的这个目录上
VOLUME ["/usr/local/apache-tomcat-8.5.40/logs"]
#VOLUME ["/usr/local/tomcat/conf"]
#VOLUME ["/usr/local/tomcat/mywebapps"]
# -v /root/docker/images/tomcat/conf:/usr/local/apache-tomcat-8.5.40/conf  \
# -v /root/docker/images/tomcat/mywebapps:/usr/local/apache-tomcat-8.5.40/mywebapps   \

#VOLUME ["/usr/local/tomcat/conf/server.xml"]
#VOLUME ["/usr/local/tomcat/conf/Catalina/localhost"]


#定义构建时的参数
ARG TOMCAT_TAR=apache-tomcat-8.5.40.tar.gz

#添加宿主机的jdk 到容器中的指定目录
COPY ./apache-tomcat-8.5.40.tar.gz ./

# 更改系统的时区设置
#RUN echo "Asia/Shanghai" > /etc/timezone
# -v /etc/localtime:/etc/localtime 让容器使用和服务器同样的时间设置。

RUN  tar xzvf apache-tomcat-8.5.40.tar.gz -C ./  \
  #&& mv apache-tomcat-8.5.40 tomcat \
  && ln -s apache-tomcat-8.5.40 tomcat \
  && rm -r apache-tomcat-8.5.40.tar.gz

ENV PATH /usr/local/nginx/sbin:$PATH

#EXPOSE 8080

CMD /usr/local/apache-tomcat-8.5.40/bin/catalina.sh run


----
docker build -t antball/tomcat-web .

docker network create simple-network 

docker run -d \
  -v /root/docker/images/tomcat/conf:/usr/local/apache-tomcat-8.5.40/conf:ro  \
  -v /root/docker/images/tomcat/mywebapps:/usr/local/apache-tomcat-8.5.40/mywebapps:ro   \
  -v /root/docker/images/tomcat/logs:/usr/local/apache-tomcat-8.5.40/logs   \
   -p 8080:8080  \
  --name tomcat_web_container  \
 --network=simple-network --network-alias myhostname  \
  antball/tomcat-web 



-----
#tomcat8 openjdk8

FROM centos:7

MAINTAINER fengzp <fengzp@gzyitop.com>

ENV LANG en_US.UTF-8
ENV TOMCAT_VERSION 8.5.13
ENV CATALINA_HOME /opt/apache-tomcat-$TOMCAT_VERSION
ENV PATH $CATALINA_HOME/bin:$PATH
ENV JDK_VERSION 1.8.0

WORKDIR $CATALINA_HOME

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

RUN yum -y install java-$JDK_VERSION-openjdk-devel && rm -rf /var/cache/yum/*
ENV JAVA_HOME /usr/lib/jvm/java-openjdk

RUN yum -y install wget
RUN cd /opt/ && wget "http://apache.fayea.com/tomcat/tomcat-8/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz"
RUN cd /opt/ && tar -zxf apache-tomcat-$TOMCAT_VERSION.tar.gz
RUN cd /opt/ && rm -rf apache-tomcat-$TOMCAT_VERSION.tar.gz
RUN chmod +x $CATALINA_HOME/bin/*.sh

VOLUME $CATALINA_HOME/webapps 
VOLUME $CATALINA_HOME/logs
VOLUME $CATALINA_HOME/conf

EXPOSE 8080

CMD $CATALINA_HOME/bin/startup.sh && tail -F $CATALINA_HOME/logs/catalina.out


https://www.cnblogs.com/areyouready/p/8971817.html
https://www.cnblogs.com/zxf330301/p/8527480.html
https://blog.csdn.net/aloneno/article/details/89600245
https://www.jianshu.com/p/369e75f6303b
docker容器中用普通用户起服务

nginx dockerfile

# 定义基础镜像
FROM centos:latest

# 定义维护者信息
LABEL maintainer="antball"

#定义构建时的参数
ARG NGINX_VERSION=nginx-1.15.10

WORKDIR /temp

#添加宿主机的jdk 到容器中的指定目录
COPY $NGINX_VERSION.tar.gz ./


WORKDIR /usr/local/nginx

#VOLUME ["/usr/local/nginx/conf"] 
 # -v /root/docker/images/nginx/conf:/usr/local/nginx/conf  \


RUN yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel \
&& tar -zxvf /temp/$NGINX_VERSION.tar.gz -C /temp/ \
&& cd /temp/$NGINX_VERSION \
&& useradd -M -s /sbin/nologin nginx \
&& ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install \
&& rm -rf /temp \
&& ln -s /usr/local/nginx/sbin/* /usr/local/sbin/ 

ENV PATH /usr/local/nginx/sbin:$PATH

CMD ["nginx", "-g", "daemon off;"]

#CMD ["sbin/nginx", "-g", "daemon off;"]

#CMD /bin/sh -c 'nginx -g "daemon off;"'

---

docker build -t antball/nginx .

docker run -d -p 80:80 --name nginx_demo antball/nginx


https://www.cnblogs.com/zhhuihui/p/docker_z.html
https://blog.csdn.net/wuapeng/article/details/80974417

jenkins dockerfile

docker run -d -p 9999:8080 -p 50000:50000 -v /root/docker/images/jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins jenkins


5bcfdae93d2441c2bf2aed3c7d8cc341

Docker版本Jenkins的使用
https://www.cnblogs.com/Erick-L/p/8818697.html
https://www.cnblogs.com/zhaojiankai/p/7828181.html
https://blog.51cto.com/lizhenliang/2159817

mysql dockerfile

docker run --name mysql5.7 -p 3306:3306 -v /my/mysql/datadir:/var/lib/mysql -v /my/mysql/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7



docker run -d -p 3306:3306 -e MYSQL_USER="woniu" -e MYSQL_PASSWORD="123456" -e MYSQL_ROOT_PASSWORD="123456" --name mysqltest1 mysql:5.7 --character-set-server=utf8 --collation-server=utf8_general_ci


docker run --name bulls_test_mysql5.7 
--restart always 
--privileged=true 
-p 3306:3306 
-v /usr/local/apps/mysql5.7/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf 
-v /usr/local/apps/mysql5.7/data:/var/lib/mysql 
# - ./mysql/db_init_sql:/docker-entrypoint-initdb.d
# - ./mysql/log:/var/log
-e MYSQL_USER="apps" 
-e MYSQL_PASSWORD="123456" 
-e MYSQL_ROOT_PASSWORD="123456" 
-d mysql:5.7


#在配置文件my.cnf中关闭sql_mode=ONLY_FULL_GROUP_BY.。msqyl的默认配置是sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION。可以把ONLY_FULL_GROUP_BY去掉,也可以去掉所有选项设置成sql_mode=,如果你确信其他选项不会造成影响的话。

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

[https://www.cnblogs.com/fswhq/p/9729761.html](https://www.cnblogs.com/fswhq/p/9729761.html)

mysqld.conf
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
lower_case_table_names=1
#log-error      = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address   = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

default-time-zone = '+08:00'


---

[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
lower_case_table_names=1

datadir         = /var/lib/mysql
bind-address = 0.0.0.0

symbolic-links=0
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

default-time-zone = '+08:00'

https://www.liangzl.com/get-article-detail-126398.html
https://www.imooc.com/article/24544
https://blog.csdn.net/haiyangyiba/article/details/88805729
https://www.cnblogs.com/notejava/p/7124189.html
https://blog.csdn.net/woniu211111/article/details/80968154
Docker安装MySql-挂载外部数据和配置
使用docker安装mysql,挂载外部配置和数据
Docker Mysql容器--开启binlog日志

容器访问


docker exec -it container /bin/bash  

docker attach server


docker network ls

#创建一个网络
docker network create mynet
#移除网络
docker network rm mynet

#查看自定义网络
docker network inspect mynet

将 #2 接入 #1 同一网络(bridge)
docker network connect bridge 4f91e220c912

#安装 ifconfig 和 ping 工具包
apt-get update
apt-get install net-tools
apt-get install iputils-ping

#容器断开与网络连接
docker network disconnect mynet containerID

#运行镜像 --network mynet表示使用mynet网络  -alias表示该镜像的网络别名
docker run -it --network mynet --network-alias myhostname imagename



若访问容器中服务,可以使用这用方式访问 <网络别名>:<服务端口号> 




http://dockone.io/article/1156
https://www.cnblogs.com/yulibostu/articles/8510463.html
https://blog.csdn.net/subfate/article/details/81396532
Docker容器互访三种方式

https://www.cnblogs.com/jinzesudawei/p/11790038.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,036评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,046评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,411评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,622评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,661评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,521评论 1 304
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,288评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,200评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,644评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,837评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,953评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,673评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,281评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,889评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,011评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,119评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,901评论 2 355