Docker学习6:使用docker构建Jekyll服务和java服务
2021-03-17 09:27
标签:artifact 基础 upd stash def 会链接 soft usr bio Dockerfile源码,见下面作者github source.list 文件见下面链接 文件位置与Dockerfile文件在同一级目录下 deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse 构建2个镜像: 1、一个镜像安装Jekyll以及构建jekyll的软件包 2、通过Apache让Jekyll网站工作起来 工作流程: 1.创建Jekyll镜像和Apache镜像 2.从Jekyll镜像创建容器,通过卷挂载网站源代码 3.从Apache镜像创建容器,运行服务 4.在需要更新时,重复工作 具体步骤可借鉴下面博客 https://www.cnblogs.com/manmanchanglu/p/12000025.html 1.一个镜像从URL拉取指定war包文件保存到卷中 2.一个含有Tomcat服务器的镜像运行在这些下载的war文件中 构建一个镜像会下载war文件,挂载到卷中 mkdir fetcher cd fetcher vim Dockerfile 构建镜像docker build -t jamtur01/fetcher . docker run -t -i --name sample jamtur01/fetcher \ https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/sample.war 查看卷目录 ## 更换镜像RUN rm-rf/etc/apt/sources.listADD sources.list/etc/apt/ vim Dockerfile FROMubuntu:18.04 LABELmaintainer="james@example.com" ENVREFRESHED_AT 2016-06-01 RUN apt-get -qq update RUN apt-get -qq install tomcat8 default-jdk ENVCATALINA_HOME /usr/share/tomcat8 ENVCATALINA_BASE /var/lib/tomcat8 ENVCATALINA_PID /var/run/tomcat8.pid ENVCATALINA_SH /usr/share/tomcat8/bin/catalina.sh ENVCATALINA_TMPDIR /tmp/tomcat8-tomcat8-tmp RUNmkdir -p $CATALINA_TMPDIR VOLUME["/var/lib/tomcat8/webapps/"] EXPOSE8080 ENTRYPOINT["/usr/share/tomcat8/bin/catalina.sh","run"] docker build -t jamtur01/tomcat8 . 2.4 运行WAR文件 创建tomcat8示例 docker run --name sample_app --volumes-from sample \ -d -P jamtur01/tomcat8 查看容器暴露的端口 docker port sample_app 8080 2.5基于tomcat应用服务器的构建服务 安装ruby apt-get -qqy install ruby make ruby-dev 安装TProv应用 gem install --no-rdoc --no-ri tprov tprov // 运行项目 会显示你运行的所有的容器 一个Node容器,用来服务于Node应用,这个容器会链接到。 一个Redis主容器,用于保存和集群化应用状态,这个容器会链接到。 两个Redis副本容器,用于集群化应用状态。 一个日志容器,用于捕获应用日志。 创建dockerfile wget https://github.com/turnbullpress/dockerbook-code/blob/master/code/6/node/nodejs/nodeapp/package.json wget https://github.com/turnbullpress/dockerbook-code/blob/master/code/6/node/nodejs/nodeapp/server.js cd .. vim Dockerfile FROM ubuntu:18.04 LABEL maintainer="james@example.com" ENV REFRESHED_AT 2016-06-01 RUN apt-get -qq update RUN apt-get -qq install nodejs npm RUN mkdir -p /var/log/nodeapp ADD nodeapp /opt/nodeapp/ WORKDIR /opt/nodeapp RUN npm install VOLUME ["/var/log/nodeapp"] EXPOSE 3000 ENTRYPOINT ["nodejs","server.js"] 构建node.js镜像 docker build -t jamtur01/nodejs . FROMubuntu:18.04 LABELmaintainer="james@example.com" ENVREFRESHED_AT 2017-06-01 RUNapt-get -qq update RUNapt-get install -qq software-properties-common RUNadd-apt-repository ppa:chris-lea/redis-server RUNapt-get -qq update RUNapt-get -qq install redis-server redis-tools VOLUME["/var/lib/redis","/var/log/redis"] EXPOSE6379 CMD[] 构建redis基础镜像 docker build -t jamtur01/redis . FROMjamtur01/redis LABELmaintainer="james@example.com" ENVREFRESHED_AT 2016-06-01 ENTRYPOINT["redis-server","--protected-mode no","--logfile /var/log/redis/redis-server.log"] 构建Redis主镜像 docker build -t jamtur01/redis_primary . FROMjamtur01/redis LABELmaintainer="james@example.com" ENVREFRESHED_AT 2016-06-01 ENTRYPOINT["redis-server","--protected-mode no","--logfile /var/log/redis/redis-replica.log","--slaveof redis_primary 6379"] docker build -t jamtur01/redis_replica . 创建express网络 docker network create express 运行redis 主容器 docker run -d -h redis_primary \ --net express --name redis_primary jamtur01/redis_primary -h 用来设置容器的主机名,可以确保redis_primary 作为主机名,并被本地DNS服务正确解析 redis容器日志 docker logs redis_primary 看不到日志。 redis服务会将日志保存成文件,使用docker看不到日志,可以使用之前看到的 /var/log/redis 卷。 读取redis主日志 docker run -ti --rm --volume-from redis_primary \ ubuntu cat /var/log/redis/redis-server.log 运行第一个redis容器副本 docker run -d -h redis_replica1 \ --name redis_replica1 \ --net express \ jamtur01/redis_replica 读取redis副本容器日志 docker run -ti --volumes-from redis_replica1 \ ubuntu cat /var/log/redis/redis-replica.log 运行第二个redis容器副本 docker run -d -h redis_replica2 \ --name redis_replica2 \ --net express \ jamtur01/redis_replica 读取redis副本容器日志 docker run -ti --volumes-from redis_replica2 \ ubuntu cat /var/log/redis/redis-replica.log 运行Node.js容器 docker run -d \ --name nodeapp -p 3000:3000 \ --net express \ jamtur01/nodejs 查看nodeapp容器日志 docker logs nodeapp 创建Dockerfile FROMubuntu:18.04 LABELmaintainer="james@example.com" ENVREFRESHED_AT 2016-06-01 RUNapt-get -qq update RUNapt-get -qq install wget gnupg2 openjdk-8-jdk RUNwget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add - RUNecho"deb https://artifacts.elastic.co/packages/5.x/apt stable main"| tee -a /etc/apt/sources.list.d/elastic-5.x.list RUNapt-get -qq update RUNapt-get -qq install logstash WORKDIR/usr/share/logstash ADDlogstash.conf /usr/share/logstash/ ENTRYPOINT["bin/logstash"] CMD["-f","logstash.conf","--config.reload.automatic"] 使用docker kill发送信号 docker kill -s 安装nsenter 工具nsenter可以进入docker用来构成容器的内核命名空间,进入一个已经存在的容器shell,即使容器没有运行ssh或任何的守护进程。 docker run -v /usr/local/bin:/target jpetazzo/nsenter 获取容器进程ID sudo docker inspect --format ‘{{.State.Pid}}‘ nodeapp 使用nsenter进入容器 nsenter --target $PID --mount --uts --ipc --net --pid Docker学习6:使用docker构建Jekyll服务和java服务 标签:artifact 基础 upd stash def 会链接 soft usr bio 原文地址:https://www.cnblogs.com/ecplko/p/13976804.html写在前面
## 文章Dockerfile中涉及apt-get 等操作需更换镜像 在Dockerfile中添加下列
https://github.com/turnbullpress/dockerbook-code/blob/master/code/6RUN rm -rf /etc/apt/sources.list
ADD sources.list /etc/apt/
1.构建第一个应用
2.使用docker构建一个java服务
2.1war文件获取程序
2.2.获取war文件
2.3 Tomcat8应用服务器
3.多容器应用栈
3.1Node.js镜像
3.2 Redis基础镜像
3.3 Redis主镜像
3.4 Redis 副本镜像
3.5 创建Redis后端集群
3.6创建Node容器
3.7 捕获应用日志
4. 不使用SSH管理Docker容器
文章标题:Docker学习6:使用docker构建Jekyll服务和java服务
文章链接:http://soscw.com/essay/65250.html