案例描述
(1)了解Mariadb服务的容器化部署。
(2)了解Redis服务的容器化部署。
(3)了解Pig服务的容器化部署。
(4)了解Nginx服务的容器化部署。
规划节点
节点规划,见表1。
表1 节点规划
IP |
主机名 |
节点 |
10.24.2.17 |
master |
docker-compose节点 |
基础准备
Docker和Docker Compose已安装完成,将提供的软件包Pig.tar.gz上传至master节点/root目录下并解压。
案例实施
容器化部署MariaDB
编写Dockerfile
编写init.sh脚本:
1 2 3 4 5 6 7 8 9
| [root@k8s-worker-node1 ~]# cd Pig/ [root@k8s-worker-node1 Pig]# cat mysql_init.sh #!/bin/bash mysql_install_db --user=root mysqld_safe --user=root & sleep 8 mysqladmin -u root password 'root' mysql -uroot -proot -e "grant all on *.* to 'root'@'%' identified by 'root'; flush privileges;" mysql -uroot -proot -e " source /opt/pig.sql;source /opt/pig_codegen.sql;source /opt/pig_config.sql; source /opt/pig_job.sql;"
|
编写yum源:
1 2 3 4 5 6
| [root@k8s-worker-node1 Pig]# cat local.repo [pig] name=pig baseurl=file:///root/yum gpgcheck=0 enabled=1
|
编写Dockerfile文件:
1 2 3 4 5 6 7 8 9 10 11 12 13
| [root@k8s-worker-node1 Pig]# cat Dockerfile-mariadb FROM centos:centos7.9.2009 MAINTAINER Chinaskills RUN rm -rf /etc/yum.repos.d/* COPY local.repo /etc/yum.repos.d/ COPY yum /root/yum ENV LC_ALL en_US.UTF-8 RUN yum -y install mariadb-server COPY mysql /opt/ COPY mysql_init.sh /opt/ RUN bash /opt/mysql_init.sh EXPOSE 3306 CMD ["mysqld_safe","--user=root"]
|
构建镜像
构建镜像:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| [root@k8s-worker-node1 Pig]# docker build -t pig-mysql:v1.0 -f Dockerfile-mariadb . Sending build context to Docker daemon 890.9MB Step 1/12 : FROM centos:centos7.9.2009 ---> eeb6ee3f44bd Step 2/12 : MAINTAINER Chinaskills ---> Using cache ---> 815a4a5f2242 Step 3/12 : RUN rm -rf /etc/yum.repos.d/* ---> Using cache ---> 6afa0315cb5b Step 4/12 : COPY local.repo /etc/yum.repos.d/ ---> Using cache ---> 4f07e082cc00 Step 5/12 : COPY yum /root/yum ---> Using cache ---> 7042f9e7f455 Step 6/12 : ENV LC_ALL en_US.UTF-8 ---> Using cache ---> df0aa8985d61 Step 7/12 : RUN yum -y install mariadb-server ---> Using cache ---> 9ad09d62d373 Step 8/12 : COPY mysql /opt/ ---> Using cache ---> 75adb0e3bbb0 Step 9/12 : COPY mysql_init.sh /opt/ ---> Using cache ---> 3cc10e8ca0cc Step 10/12 : RUN bash /opt/mysql_init.sh ---> Using cache ---> f7fe9f822cc3 Step 11/12 : EXPOSE 3306 ---> Using cache ---> 70f2274acbeb Step 12/12 : CMD ["mysqld_safe","--user=root"] ---> Using cache ---> f088fb18dedf Successfully built f088fb18dedf Successfully tagged pig-mysql:v1.0
|
容器化部署Redis
编写Dockerfile
编写Dockerfile文件:
1 2 3 4 5 6 7 8 9 10 11
| [root@k8s-worker-node1 Pig]# cat Dockerfile-redis FROM centos:centos7.9.2009 MAINTAINER Chinaskills RUN rm -rf /etc/yum.repos.d/* COPY local.repo /etc/yum.repos.d/ COPY yum /root/yum RUN yum -y install redis RUN sed -i 's/127.0.0.1/0.0.0.0/g' /etc/redis.conf && \ sed -i 's/protected-mode yes/protected-mode no/g' /etc/redis.conf EXPOSE 6379 CMD ["/usr/bin/redis-server","/etc/redis.conf"]
|
构建镜像
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| [root@k8s-worker-node1 Pig]# docker build -t pig-redis:v1.0 -f Dockerfile-redis . Sending build context to Docker daemon 890.9MB Step 1/9 : FROM centos:centos7.9.2009 ---> eeb6ee3f44bd Step 2/9 : MAINTAINER Chinaskills ---> Using cache ---> 815a4a5f2242 Step 3/9 : RUN rm -rf /etc/yum.repos.d/* ---> Using cache ---> 6afa0315cb5b Step 4/9 : COPY local.repo /etc/yum.repos.d/ ---> Using cache ---> 4f07e082cc00 Step 5/9 : COPY yum /root/yum ---> Using cache ---> 7042f9e7f455 Step 6/9 : RUN yum -y install redis ---> Using cache ---> 2d0b65ca48f0 Step 7/9 : RUN sed -i 's/127.0.0.1/0.0.0.0/g' /etc/redis.conf && sed -i 's/protected-mode yes/protected-mode no/g' /etc/redis.conf ---> Using cache ---> fcb84f12d0cf Step 8/9 : EXPOSE 6379 ---> Using cache ---> 37ac24f680d6 Step 9/9 : CMD ["/usr/bin/redis-server","/etc/redis.conf"] ---> Using cache ---> ee5f16785493 Successfully built ee5f16785493 Successfully tagged pig-redis:v1.0
|
容器化部署Pig
编写Dockerfile
编写启动脚本:
1 2 3 4 5 6 7 8 9 10 11
| [root@k8s-worker-node1 Pig]# cat pig-start.sh #!/bin/bash sleep 60 nohup java -jar /root/pig-register.jar $JAVA_OPTS >/dev/null 2>&1 & sleep 60 nohup java -jar /root/pig-gateway.jar $JAVA_OPTS >/dev/null 2>&1 & sleep 20 nohup java -jar /root/pig-auth.jar $JAVA_OPTS >/dev/null 2>&1 & sleep 20 nohup java -jar /root/pig-upms-biz.jar $JAVA_OPTS >/dev/null 2>&1 & sleep 1h
|
编写Dockerfile文件:
1 2 3 4 5 6 7 8 9 10 11 12
| [root@k8s-worker-node1 Pig]# cat Dockerfile-pig FROM centos:centos7.9.2009 MAINTAINER Chinaskills COPY service /root ADD yum /root/yum RUN rm -rfv /etc/yum.repos.d/* COPY local.repo /etc/yum.repos.d/local.repo RUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel COPY pig-start.sh /root RUN chmod +x /root/pig-start.sh EXPOSE 8848 9999 3000 4000 CMD ["/bin/bash","/root/pig-start.sh"]
|
构建镜像
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| [root@k8s-worker-node1 Pig]# docker build -t pig-service:v1.0 -f Dockerfile-pig . Sending build context to Docker daemon 890.9MB Step 1/11 : FROM centos:centos7.9.2009 ---> eeb6ee3f44bd Step 2/11 : MAINTAINER Chinaskills ---> Using cache ---> 815a4a5f2242 Step 3/11 : COPY service /root ---> Using cache ---> f0afce9f674f Step 4/11 : ADD yum /root/yum ---> Using cache ---> e7af4c1e3ee4 Step 5/11 : RUN rm -rfv /etc/yum.repos.d/* ---> Using cache ---> 204b3a407438 Step 6/11 : COPY local.repo /etc/yum.repos.d/local.repo ---> Using cache ---> 601071e881c5 Step 7/11 : RUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel ---> Using cache ---> d80f53c29912 Step 8/11 : COPY pig-start.sh /root ---> Using cache ---> cf9abaa6c27b Step 9/11 : RUN chmod +x /root/pig-start.sh ---> Using cache ---> 7d8c3c7a3eaf Step 10/11 : EXPOSE 8848 9999 3000 4000 ---> Using cache ---> 172a68bf40ed Step 11/11 : CMD ["/bin/bash","/root/pig-start.sh"] ---> Using cache ---> c890d15338b2 Successfully built c890d15338b2 Successfully tagged pig-service:v1.0
|
容器化部署前端服务
编写Dockerfile
编写Dockerfile:
1 2 3 4 5 6 7 8 9 10 11 12
| [root@k8s-worker-node1 Pig]# cat Dockerfile-nginx FROM centos:centos7.9.2009 MAINTAINER Chinaskills RUN rm -rf /etc/yum.repos.d/* COPY local.repo /etc/yum.repos.d/ COPY yum /root/yum RUN yum -y install nginx COPY nginx/dist /data ADD nginx/pig-ui.conf /etc/nginx/conf.d/ RUN /bin/bash -c 'echo init ok' EXPOSE 80 CMD ["nginx","-g","daemon off;"]
|
构建镜像
构建镜像:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| [root@k8s-worker-node1 Pig]# docker build -t pig-ui:v1.0 -f Dockerfile-nginx . Sending build context to Docker daemon 890.9MB Step 1/11 : FROM centos:centos7.9.2009 ---> eeb6ee3f44bd Step 2/11 : MAINTAINER Chinaskills ---> Using cache ---> 815a4a5f2242 Step 3/11 : RUN rm -rf /etc/yum.repos.d/* ---> Using cache ---> 6afa0315cb5b Step 4/11 : COPY local.repo /etc/yum.repos.d/ ---> Using cache ---> 4f07e082cc00 Step 5/11 : COPY yum /root/yum ---> Using cache ---> 7042f9e7f455 Step 6/11 : RUN yum -y install nginx ---> Using cache ---> b6ee699b51ed Step 7/11 : COPY nginx/dist /data ---> Using cache ---> 04b6d05ba642 Step 8/11 : ADD nginx/pig-ui.conf /etc/nginx/conf.d/ ---> Using cache ---> 661b56e2cff6 Step 9/11 : RUN /bin/bash -c 'echo init ok' ---> Using cache ---> 0d98b6d8a81c Step 10/11 : EXPOSE 80 ---> Using cache ---> b1f5ecafc494 Step 11/11 : CMD ["nginx","-g","daemon off;"] ---> Using cache ---> c20fc29b9daa Successfully built c20fc29b9daa Successfully tagged pig-ui:v1.0
|
编排部署pig
编写docker-compose.yaml
编写docker-compose.yaml编排文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| version: '2' services: pig-mysql: environment: MYSQL_ROOT_PASSWORD: root restart: always container_name: pig-mysql image: pig-mysql:v1.0 ports: - 3306:3306 links: - pig-service:pig-register pig-redis: image: pig-redis:v1.0 ports: - 6379:6379 restart: always container_name: pig-redis hostname: pig-redis links: - pig-service:pig-register pig-service: ports: - 8848:8848 - 9999:9999 restart: always container_name: pig-service hostname: pig-service image: pig-service:v1.0 extra_hosts: - pig-register:127.0.0.1 - pig-upms:127.0.0.1 - pig-gateway:127.0.0.1 - pig-auth:127.0.0.1 - pig-hou:127.0.0.1 stdin_open: true tty: true privileged: true pig-ui: restart: always container_name: pig-ui image: pig-ui:v1.0 ports: - 8888:80 links: - pig-service:pig-gateway
|
部署服务
部署服务:
1 2 3 4 5 6 7
| [root@k8s-worker-node1 Pig]# docker-compose up -d [+] Running 5/5 ⠿ Network pig_default Created 0.1s ⠿ Container pig-service Started 0.7s ⠿ Container pig-mysql Started 1.5s ⠿ Container pig-redis Started 1.7s ⠿ Container pig-ui Started 1.8s
|
查看服务:
1 2 3 4 5 6
| [root@k8s-worker-node1 Pig]# docker-compose ps NAME COMMAND SERVICE STATUS PORTS pig-mysql "mysqld_safe --user=…" pig-mysql running 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp pig-redis "/usr/bin/redis-serv…" pig-redis running 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp pig-service "/bin/bash /root/pig…" pig-service running 0.0.0.0:8848->8848/tcp, 0.0.0.0:9999->9999/tcp, :::8848->8848/tcp, :::9999->9999/tcp pig-ui "nginx -g 'daemon of…" pig-ui running 0.0.0.0:8888->80/tcp, :::8888->80/tcp
|
等待3分钟左右,在浏览器上通过http://IP:8888访问Pig,如图所示:

图1
账号和密码默认,输入验证码,点击登录。如图所示:

图2