1.Docker介绍
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux
机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
2.docker安装
1)更新yum
yum update
2)安装docker
yum install docker
3)安装完成后,使用下面的命令来启动 docker 服务,并将其设置为开机启动:
systemctl start docker.service
systemctl enable docker.service
3.容器安装
3.1.安装基础镜像
docker镜像作为基础容器Docker 需要一个基本的镜像才能运行,我们的所有容器都是(直接或间接)基于这样一个镜像来运行的 。
1)下载centos7
docker pull registry.aliyuncs.com/acs-sample/centos
2)列出docker镜像
docker images
3)为我们的容器创建第一个镜像, 注:-t -i 参数用于创建一个虚拟的命令行。
docker run -t -i imagid
4)现在我们已经成功的运行了自己的第一个容器,并且进入到容器的命令行界面中。在容器中,我们执行下面的命令:
① yum -y update # 更新软件包
② 安装并配置jdk
a.复制gz文件到容器中的root的用户目录下
Ctrl d退出容器
docker cp jdk8.tar.gz 92c482466609:/usr
b.进入容器
docker start 容器id
docker attach 容器id
c.在容器中解开gz文件
cd usr
tar -zxvf jdk8.tar.gz
d.建立容器系统的JAVA_HOME目录,移动jdk目录到JAVA_HOME目录
mkdir /usr/lib/jvm
mv jdk1.8.0_72 /usr/lib/jvm
e.设置环境变量
cd /
vi ~/.bashrc
#set oracle jdk environment
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_72
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
f.使得环境变量马上生效
source ~/.bashrc
安装完成后,按 Ctrl + d 来退出容器的命令行。
执行docker ps -a,可以看到被我们终止的容器
g.把我们刚才所做的改变提交到新的容器:
docker commit CONTAINER ID httpserverbase
docker commit CONTAINER ID realcollbase
容器成功提交后,执行 sudo docker images 可以看到刚才提交的容器。
3.2.配置web前端组件容器
3.2.1.Apache http Server
1)进入httpserverbase容器,首次进入使用docker run 命令以后使用docker start配合docker attach容器id/或者docker exec -i -t 容器id/bin/bash命令。
docker run -i -t httpserverbase
2)安装 apache
yum install httpd
3)修改httpd.conf 配置apache服务
① cd /etc/httpd/conf
② vi httpd.conf
DocumentRoot "/usr/httpwebapps"
<Directory "/usr/httpwebapps">
……
</Directory>
<Directory "/usr/httpwebapps">
……
</Directory>
4)在usr下创建httpwebapps文件夹
mkdir /usr/httpwebapps
5)在root目录下创建run脚本用于自启动XGCMCS.jar。
① cd root
② vi run.sh
#!/bin/bash
# Make sure we're not confused by old, incompletely-shutdown httpd
# context after restarting the container. httpd won't start correctly
# if it thinks it is already running.
rm -rf /run/httpd/*
exec /usr/sbin/apachectl -D FOREGROUND
6)将刚才容器提交创建新的镜像容器
docker commit CONTAINER ID httpserver
7)运行新容器并设置主机8080端口映射该镜像80端口并设置容器开机自启动
docker run -i -t -p 8080:80 --restart=always httpserver /root/run.sh
8)退出容器将web程序发布到容器httpserver的usr/httpwebapps下。
docker cp /usr/httpserver/xiegou 89c5b8950cee:usr/httpwebapps/
3.2.2.Nginx
1)进入httpserverbase容器,首次进入使用docker run 命令以后使用docker start配合docker attach容器id/或者docker exec -i -t 容器id/bin/bash命令。
docker run -i -t httpserverbase
2)使用源码安装nginx
① 安装依赖环境
安装gcc编译器
yum install gcc
安装PCRE库,因为Nginx的Rewrite和HTTP核心模块会用到PCRE正则 表达式
yum install pcre pcre-devel
安装zlib,Nginx的各种模块中使用gzip压缩。
yum install zlib zlib-devel
安装OpenSSL,如果服务器提供安全网页时会使用到OpernSSL库。
yum install pernssl openssl-devel
② 安装Nginx
mkdir src && cd src
wget http://nginx.org/download/nginx-1.13.6.tar.gz
tar zxf nginx-1.13.6.tar.gz
./configure
make
make install
3)安装完修改配置文件/usr/local/nginx/conf/nginx.conf,
cd /usr/local/nginx/conf
vi nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index XGCMFD/GRO/hcj/login.html;
}
location /real/ {
proxy_pass http://192.163.20.150:8081/XGCMCS/;
}
location /login/{
proxy_pass http://192.163.20.150:8083/XGCMCS_Base/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
daemon off;
4)在root目录下创建run脚本用于自启动XGCMCS.jar。
cd root
vi run.sh
#!/bin/bash
exec /usr/local/nginx/sbin/nginx
5)将刚才容器提交创建新的镜像容器
docker commit CONTAINER ID httpserver
6)运行新容器并设置主机8080端口映射该镜像80端口并设置容器开机自启动
docker run -i -t -p 8080:80 --restart=always httpserver /root/run.sh
7)退出容器将web程序发布到容器httpserver的usr/httpwebapps下。
docker cp /usr/httpserver/xiegou 89c5b8950cee:usr/local/nginx/html
3.3.配置java程序
1)进入容器
docker run -i -t realcollbase
2)在usr目录下创建文件夹如XGCMCS,并将XXX.jar放到该文件夹下。
从主机复制到容器docker cp host_path containerID:container_path
3)在root目录下创建run脚本用于自启动XGCMCS.jar。
③ cd root
④ vi run.sh
#!/bin/bash
source ~/.bashrc
cd /usr/XGCMCS
java -jar XGCMCS.jar
/bin/bash
4)设置root/run.sh可读可写可执行权限
chmod 777 /root/run.sh
5)将刚才容器提交创建新的镜像容器
docker commit CONTAINER ID realcoll
6)运行新容器并设置主机8081端口映射该镜像8081端口;设置容器开机自启动;调用脚本设置实时采集组建服务自启动。
docker run -i -t -p 8081:8081 --restart=always realcollect /root/run.sh
4.附录
Apache服务自启动脚本
#!/bin/bash
# Make sure we're not confused by old, incompletely-shutdown httpd
# context after restarting the container. httpd won't start correctly
# if it thinks it is already running.
rm -rf /run/httpd/*
exec /usr/sbin/apachectl -D FOREGROUND
Nginx服务自启动脚本
#!/bin/bash
exec /usr/local/nginx/sbin/nginx