基于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容器互访三种方式