docker基础(下)

docker所有包下载

链接:https://pan.baidu.com/s/13QiQ_dj5aXQqr-nmiYLuYQ 
提取码:g5j3

 

五,网络管理

 

5.1 容器网络模式

Docker支持5种网络模式

(1)bridge(nat模式) 
默认网络,Docker启动后默认创建一个docker0网桥,默认创建的容器也是添加到这个网桥中

(2)host(仅主机模式) 
容器不会获得一个独立的network namespace,而是与宿主机共用一个

(3)none(不给容器配置任何网络环境,专门用来配桥接模式) 
获取独立的network namespace,但不为容器进行任何网络配置

(4)container(让两个容器用一个网卡) 
与指定的容器使用同一个network namespace,网卡配置也都是相同的

(5)自定义(能给默认的网络模式起名) 
自定义网桥,默认与bridge网络一样

 

5.1.1 bridge网络类型

 

安装bridge管理工具

yum -y install bridge-utils

which brctl

image_1ctf5eheb1vkndq417a21svttj79.png-11.4kB

 

查看网桥状态

brctl show

image_1ctf5jms4144i15ggi8k1v11v6816.png-105kB

 

查看网络类型

docker network ls

image_1ctf5mq0s1f9o3au19jj1uommtc4j.png-19.5kB

 

查看容器进程

docker ps

image_1ctf5nbbr2k11qta22thmcdfk50.png-26.6kB

 

查看容器lnmp_mysql的网络信息

docker inspect lnmp_mysql | grep -A 15 "Networks"

image_1ctf5nnloknp1v7g1b301na31ml35d.png-49.5kB

 

查看容器lnmp_web的网络信息

docker inspect lnmp_web | grep -A 15 "Networks"

image_1ctf5o55ukalj9i1rerse31et75q.png-49.1kB

 

5.1.2 host网络类型

 

启动一个网络类型为host的容器

docker run -dit --name xin --net host centos:latest /bin/bash

docker ps -a

image_1ctf6gp2b1acu111f1l6s1gn415nl7n.png-40.8kB

 

查看容器的ip

docker exec xin hostname -I #这就是网络类型为host的容器,ip地址和docker宿主机完全一样

image_1ctf6jv62lri1ql2v0n8mt12oqdq.png-9kB

 

5.1.3 none网络类型(用于建立与宿主机的桥接模式)

 

启动一个网络类型为none的容器

docker run -dit --name xin1 --net none centos:latest /bin/bash

docker ps -a

image_1ctf6l6ai1ake12ku1smfms2858e7.png-45.5kB

 

查看容器IP地址

docker exec xin1 hostname -I

查询后发现,什么IP地址都没有,none类型就是暂时不给容器指定网卡。

image_1ctf6lior11eo1vugdl0vp01d9lek.png-7.2kB

 

5.1.4 container网络类型

 

指定新容器使用指定容器的网卡

 

启动一个容器,网络类型container,使用test容器的网卡

docker run -dit --name xin2 --net container:xin centos:latest /bin/bash

docker inspect xin | grep -A 15 "Networks"

docker inspect xin2 | grep -A 15 "Networks"

 
  1. "Networks": {} #xin2容器并没有自己的网络设置

docker exec xin2 hostname -I #xin2没有网络设置却有IP地址和xin容器完全一样

image_1ctf6omtb698iir1n05go7efoh1.png-119.5kB

 

5.2 桥接宿主机网络与配置固定IP地址

 

5.2.1 建立网桥桥接到宿主机网络

image_1crs4t7kt18685qm181kb28m929.png-201.2kB

 

构建一个永久生效的网桥br0

cd /etc/sysconfig/network-scripts/

ls

cp ifcfg-ens32 ifcfg-br0

vim ifcfg-ens32

vim ifcfg-br0

cat ifcfg-ens32

 
  1. TYPE=Ethernet
  2. BOOTPROTO=none
  3. NAME=ens32
  4. DEVICE=ens32
  5. ONBOOT=yes
  6. BRIDGE=br0

cat ifcfg-br0

 
  1. TYPE=Bridge
  2. DEVICE=br0
  3. ONBOOT=yes
  4. BOOTPROTO=static
  5. IPADDR=192.168.200.70
  6. NETMASK=255.255.255.0
  7. GATEWAY=192.168.200.2
  8. DNS1=192.168.200.2

image_1ctf84iu71oo1lb9qog1og3kpciu.png-98.5kB

 

查看网卡IP

systemctl restart network

ifconfig ens32 --->ens32网卡已经没有IP地址了

ifconfig br0 --->网桥br0代替了ens32

brctl show --->网桥br0,桥接在了真实的物理网卡ens32上

image_1ctf89el476jd201urdat315plkb.png-92.5kB

 

5.2.2 通过pipework工具配置容器固定IP

 

pipework工具下载地址(上边有下载链接)

https://github.com/jpetazzo/pipework.git

 

解压安装pipework工具

yum -y install unzip

which unzip

ls

unzip pipework-master.zip

mv pipework-master /usr/local/

ln -s /usr/local/pipework-master/pipework /usr/local/bin/

which pipework

image_1ctfgpeh3l18n849mu1hr9ruf9.png-78.3kB

 

建立网络类型为none的容器,并通过pipework配置固定ip地址

docker exec xin1 hostname -I

pipework br0 xin1 192.168.200.166/24@192.168.200.2

docker exec xin1 hostname -I #有IP了

ping 192.168.200.166 #宿主机ping能通

docker exec -it xin1 /bin/bash #进入容器

ping www.baidu.com #能连接外网

image_1ctfgubs52e01c725ho35qmg9m.png-85.1kB

 

通过windows宿主机ping虚拟机中的容器进程IP进行测试

image_1ctfgvcr1uis1m6qce31rriooq13.png-62.2kB

综上,外部机器访问虚拟机中的容器进程也可以连通了

 

六,Docker的镜像制作

 

6.1 Dockerfile常用指令介绍

 
  1. 指令 描述
  2. FROM 构建的新镜像是基于哪个镜像。例如:FROM centos:6
  3. MAINTAINER 镜像维护者姓名或邮箱地址。例如:MAINTAINER Mr.sl
  4. RUN 构建镜像时运行的Shell命令。例如:RUN ["yum","install","httpd"]
  5. 或者RUN yum install httpd
  6. CMD 运行容器时执行的Shell命令(可以被运行时传递的参数覆盖)。例如:CMD ["-c","/start.sh"]
  7. 或者CMD ["/usr/sbin/sshd","-D"]或者CMD /usr/sbin/sshd -D
  8. EXPOSE 声明容器运行的服务端口。例如:EXPOSE 80 443
  9. ENV 设置容器内环境变量。例如:ENV MYSQL_ROOT_PASSWORD 123456
  10. ADD 拷贝文件或目录到镜像(可以自动解压缩或者下载)
  11. 例如:ADD ["src","dest"]或者ADD https://xxx.com/html.tar.gz /var/www/html
  12. 或者:ADD html.tar.gz /var/www/html
  13. COPY 拷贝文件或目录到镜像(不能自动解压缩)。例如:COPY ./start.sh /start.sh
  14. ENTRYPOINT 运行容器时执行的Shell命令(不能被运行时传递的参数覆盖)。例如:ENTRYPOINT ["/bin/bash","-c","/start.sh"]
  15. 或者ENTRYPOINT /bin/bash -c "/start.sh"
  16. VOLUME 指定容器挂载点到宿主机自动生成的目录或其他容器
  17. 例如:VOLUME ["/var/lib/mysql"]
  18. USER RUNCMDENTRYPOINT执行命令指定运行用户
  19. 例如:USER Mr_chen
  20. WORKDIR RUNCMDENTRYPOINTCOPYADD设置工作目录(指定进入容器中默认被切换的目录)。
  21. 例如:WORKDIR /data
  22. HEALTHCHECK 健康检查。例如:HEALTHCHECK --interval=5m --timeout=3s --retries=3
  23. CMD curl -f http://localhost/ || exit 1
  24. ARG 在构建镜像时指定一些参数。例如:ARG user
 

6.2 利用Dockerfile编写简单的nginxWeb镜像

 

首先我们开启ipv4转发

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf

sysctl -p

image_1ctfh3jqm1enc5s61so01dn61fdd1g.png-18.5kB

 

创建nginx的镜像目录

ls

mkdir dockerfile/lib/nginx

cd dockerfile/lib/nginx

image_1ctfhbshvm7t1o5b1aj311iofou2d.png-31.6kB

 

准备Dockerfile文件

vim Dockerfile

cat Dockerfile

 
  1. FROM centos:7
  2. MAINTAINER www.yunjisuan.com
  3. RUN yum install -y gcc gcc-c++ make openssl-devel pcre-devel
  4. ADD nginx-1.12.1.tar.gz /tmp
  5. RUN cd /tmp/nginx-1.12.1 && \
  6. ./configure --prefix=/usr/local/nginx && \
  7. make -j 2 && \
  8. make install
  9. RUN rm -rf /tmp/nginx-1.12.1* && yum clean all
  10. COPY nginx.conf /usr/local/nginx/conf
  11. WORKDIR /usr/local/nginx
  12. EXPOSE 80
  13. CMD ["./sbin/nginx", "-g", "daemon off;"]

image_1ctfhf405gia1iod9hv9qtojs52.png-79.6kB


ls --->#将事先准备好的nginx-1.12.1.tar.gz和nginx.conf配置文件拷贝到当前目录下

image_1ctfhgq91dn31prd152trd1ifu5f.png-10.2kB

 

build基于nginx的docker镜像

docker build -t nginx:1 .

docker images

image_1ctfho2f997d79389iffe1eb56c.png-127.3kB

 

6.3 构建PHP网站平台镜像实战

 

创建php的镜像目录

ls

mkdir dockerfile/lib/php

cd dockerfile/lib/php

image_1ctfhu677hq51gl6oasuc38ojs.png-36kB

 

准备Dockerfile文件

vim Dockerfile

cat Dockerfile

 
  1. FROM centos:7
  2. MAINTAINER www.yunjisuan.com
  3. RUN yum install -y gcc gcc-c++ make gd-devel libxml2-devel libcurl-devel libjpeg-devel libpng-devel openssl-devel
  4. ADD php-5.6.31.tar.gz /tmp
  5. RUN cd /tmp/php-5.6.31 && \
  6. ./configure --prefix=/usr/local/php \
  7. --with-config-file-path=/usr/local/php/etc \
  8. --with-mysql --with-mysqli \
  9. --with-openssl --with-zlib --with-curl --with-gd \
  10. --with-jpeg-dir --with-png-dir --with-iconv \
  11. --enable-fpm --enable-zip --enable-mbstring && \
  12. make -j 4 && \
  13. make install && \
  14. cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf && \
  15. sed -i "s#127.0.0.1#0.0.0.0#" /usr/local/php/etc/php-fpm.conf && \
  16. sed -i "21a \daemonize = no" /usr/local/php/etc/php-fpm.conf
  17. COPY php.ini /usr/local/php/etc
  18. RUN rm -rf /tmp/php-5.6.31* && yum -y clean all
  19. WORKDIR /usr/local/php
  20. EXPOSE 9000
  21. CMD ["./sbin/php-fpm","-c","/usr/local/php/etc/php-fpm.conf"]

image_1ctfhv3vi5461cg7rl7plr1apo19.png-76.4kB


ls --->#将事先准备好的php.ini文件及php-5.6.31.tar.gz拷贝到当前目录下

image_1ctfi1i86107u60acu9f7r1p0o1m.png-9.7kB

 

build基于php的docker镜像

docker build -t php:1 .

docker images

image_1ctfiv8u07ov7h81rdv1c6a1el123.png-126.5kB

 

6.4 创建nginx-php网络环境,并启动容器

 

创建一个叫做lnmp的网络(没有则需要创建,否则会报错)

docker network create lnmp

docker network ls

image_1ctfj08ph1famldm1j2aoed14ln2g.png-20.2kB

 

创建nginx-php网页挂载目录

mkdir -p /app/wwwroot

image_1ctfj7f3k9gq1f0e1sncosi1tsg2t.png-13.5kB

 

启动php容器

docker run -dit --name lnmp_php --net lnmp --mount type=bind,src=/app/wwwroot/,dst=/usr/local/nginx/html php:1

docker ps -a

docker exec lnmp_php hostname -I

image_1ctfjavvh1v8n15as1ocmofor8e3a.png-33.7kB

 

启动nginx容器

docker run -dit --name lnmp_nginx -p 888:80 --net lnmp --mount type=bind,src=/app/wwwroot/,dst=/usr/local/nginx/html nginx:1

docker ps -a

docker exec lnmp_nginx hostname -I

image_1ctfjikd5bsv1oimm1ff5vcr3n.png-40.6kB

 

创建测试页面php.info

echo "" > /app/wwwroot/index.php

cat /app/wwwroot/index.php

image_1ctfjkn2g16ho21q13qqdnf71244.png-13.6kB

 

最后通过浏览器进行访问测试

http://192.168.200.70:888

image_1ctfkstfm1lrh1ah61eso184d1fhh8e.png-127.7kB

 

构建MySQL网站平台镜像实战

 

创建Mysql的镜像目录

ls

mkdir dockerfile/lib/mysql

cd dockerfile/lib/mysql

image_1ctfmnj1kers144fhuf175nt329.png-42.3kB

 

准备Dockerfile文件

vim dockerfile.sh

vim Dockerfile

cat dockerfile.sh

 
  1. #!/bin/bash
  2. while true
  3. do
  4. echo "welcome"
  5. sleep 5
  6. done

cat Dockerfile

 
  1. FROM centos:7
  2. MAINTAINER www.yunjisuan.com
  3. RUN yum -y install ncurses-devel cmake gcc gcc-c++ make autoconf automake
  4. ADD cmake-2.8.6.tar.gz /usr/src/
  5. RUN cd /usr/src/cmake-2.8.6 && \
  6. ./configure && \
  7. gmake && \
  8. gmake install
  9. COPY docker.sh /home/test/
  10. RUN chmod +x /home/test/docker.sh
  11. ADD mysql-5.5.22.tar.gz /usr/src/
  12. RUN useradd -s /sbin/nologin -M mysql && \
  13. cd /usr/src/mysql-5.5.22 && \
  14. cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all && \
  15. make -j 2 && \
  16. make install && \
  17. chown -R mysql.mysql /usr/local/mysql && \
  18. /bin/cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf && \
  19. /bin/cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld && \
  20. chmod +x /etc/init.d/mysqld && \
  21. ln -s /usr/local/mysql/bin/* /usr/local/bin && \
  22. /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data && \
  23. /etc/init.d/mysqld restart && \
  24. mysql -e "grant all on *.* to 'root'@'%' identified by '123123';" && \
  25. mysql -e "grant all on *.* to 'root'@'localhost' identified by '123123';" && \
  26. mysql -uroot -p123123 -e "grant all on wordpress.* to 'wordpress'@'%' identified by '123123';" && \
  27. mysql -uroot -p123123 -e "flush privileges;"
  28. RUN rm -rf mysql-5.5.22.tar.gz && \
  29. rm -f cmake-2.8.6.tar.gz && yum -y clean all
  30. WORKDIR /usr/local/mysql
  31. EXPOSE 3306
  32. CMD ["/home/test/docker.sh"]

image_1ctg42eq41ga81vl3tt411k614ju9.png-128.9kB


ls --->#将事先准备好的cmake-2.8.6.tar文件及mysql-5.5.22.tar拷贝到当前目录下

image_1ctg42obl1a5f1jsetupl661cgdm.png-14.1kB

 

build基于mysql的docker镜像

docker build -t mysql:1 .

docker images

image_1ctg5nhnq1bsd1smtm0124l1l8u7f.png-135.7kB

 

创建一个叫做lnmp的网络(没有则需要创建,否则会报错)

docker network create lnmp --->创建网络

docker network ls --->查看网络

image_1ctg0j8l31dau1619hpi7m1ire4r.png-22kB

 

启动mysql容器

docker run -dit --name lnmp_mysql -p 3306:3306 --net lnmp mysql:1

docker ps -a

image_1ctg62dqrk39ue71kt05le137ta9.png-45.3kB

 

解压workpress到网页目录

ls

tar xf wordpress-4.9.8.tar -C /app/wwwroot

image_1ctg639jn16f91njt1sgd1j6b1gugam.png-28.3kB

 

最后通过浏览器进行workpress注册

http://192.168.200.70:888/wordpress/

image_1ctg641emv3fnbf18fd1gfnl8sb3.png-84.9kB

 

6.5 docke基础阶段作业

在nginx-php镜像的基础上构建mysql:1的镜像,并启动lnmp_mysql容器进程 
实现wordpress博客的部署

 

6.6 构建JAVA网站环境镜像实战

 

创建java镜像构建存储目录

mkdir dockerfile/lib/centos/tomcat

cd dockerfile/lib/centos/tomcat

image_1ctfvn2oq4s0ssi16gob491gq29.png-50.8kB

 

筹备Dockerfile

vim Dockerfile

cat Dockerfile

 
  1. FROM centos:7
  2. MAINTAINER www.yunjisuan.com
  3. ADD jdk-8u45-linux-x64.tar.gz /usr/local
  4. ENV JAVA_HOME /usr/local/jdk1.8.0_45
  5. ADD apache-tomcat-8.0.46.tar.gz /usr/local
  6. COPY server.xml /usr/local/apache-tomcat-8.0.46/conf
  7. RUN rm -f /usr/local/apache*.tar.gz
  8. WORKDIR /usr/local/apache-tomcat-8.0.46
  9. EXPOSE 8080
  10. ENTRYPOINT ["./bin/catalina.sh", "run"]

image_1ctfvq5261j9l9s81aqimk91kjdm.png-41.9kB


ls --->#将事先准备好的apache-tomcat-8.0.46.tar.gz文件及jdk-8u45-linux-x64.tar.gz及server.xml拷贝到当前目录下

image_1ctfvqk7c1m5l5oi4arnbj17hf13.png-15.4kB

 

build基于tomcat的镜像

docker build -t tomcat:1 .

docker images

image_1ctg01038qhu1ahic9492b9tv20.png-124.3kB

 

创建网页挂载目录

mkdir /app/webapps

image_1ctg06nek1946q211cv811dfp2d.png-15.6kB

 

创建tomcat的容器并查看

docker run -dit --name=tomcat -p 8080:8080 --mount type=bind,src=/app/webapps/,dst=/usr/local/apache-tomcat-8.0.46/webapps tomcat:1

docker ps -a

image_1ctg08du9q3q138f6cun5j1jfl2q.png-44.6kB

 

创建网站测试页

mkdir /app/webapps/ROOT

echo "welcome to yunjisuan" >> /app/webapps/ROOT/index.html

image_1ctg0at9f1rsk1nsd97d1qam5sa37.png-23.2kB

 

然后我们用浏览器访问8080端口

http://192.168.200.70:8080

image_1ctg0b8ed20o538dna16h910lo3k.png-13kB

 

特别提示

tomcat有三种启动方式:

直接启动./startup.sh

作为服务启动 nohup ./startup.sh &

控制台动态输出方式启动./catalina.sh run动态地显示tomcat后台的控制台输出信息,Ctrl+C后退出并关闭服务

构建镜像的Dockerfile里的最后一步启动的进程不能是后台模式,否则容器直接退出。因此,nginxWeb镜像构建时,用CMD ["./sbin/nginx", "-g", "daemon off;"]方式进行启动

 

七,Docker企业实战案例一:整套项目一键打包部署

 

7.1 Docker Compose用法

 

7.1.1 介绍

Compose是一个定义和管理多容器的工具,使用Python语言编写。使用Compose配置文件描述多个容器应用的架构,比如使用什么镜像,数据卷,网络,映射端口等;然后一条命令管理所有服务,比如启动,停止,重启等。

 

7.1.2 安装(上文有下载包)

ls

which unzip

unzip docker-compose-linux-x86_64.zip

ll -d docker-compose

chmod +x docker-compose

mv docker-compose /usr/bin/

which docker-compose

docker-compose version --->查看版本

image_1ctg1e23j1upqmb91b5a1hd4ej613.png-63.4kB

 

7.1.3 YAML文件格式及编写注意事项

YAML是一种标记语言很直观的数据序列化格式,可读性高。类似于XML数据描述语言,语法比XML简单的很多。

YAML数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号括起来,hash用花括号括起来。

 

YAML文件格式注意事项

不支持制表符tab键缩进,需要使用空格缩进

通常开头缩进2个空格

字符后缩进1个空格,如冒号,逗号,横杆 
用井号注释 
如果包含特殊字符用单引号引起来 
布尔值(true,false,yes,no,on,off)必须用引号括起来,这样分析器会将他们解释为字符串。

 

配置文件常用字段

 
  1. 字段 描述
  2. build 下级字段dockerfile:指定Dockerfile文件名
  3. 下级字段context;构建镜像上下文路径
  4. image 指定镜像
  5. command 执行命令,覆盖默认命令
  6. container_name 指定容器名称
  7. deploy 指定部署和运行服务相关配置,只能在Swarm模式使用
  8. environment 添加环境变量
  9. networks 加入网络,引用顶级networks下条目
  10. ports 暴露端口,与-p相同,但端口不能低于60
  11. volumes 挂载宿主机路径或命名卷。如果是命名卷在顶级volumes定义卷名称
  12. restart 重启策略,默认noalways | on-failure | unless-stopped
  13. hostname 容器主机名
 

docker-compose常用命令

 
  1. 字段 描述
  2. build 重新构建服务
  3. ps 列出容器
  4. up 创建和启动容器
  5. exec 在容器里执行命令
  6. scale 指定一个服务容器启动数量
  7. top 显示容器进程
  8. logs 查看容器输出
  9. down 删除容器,网络,数据卷和镜像
  10. stop/start/restart 停止/启动/重启服务
 

例如

cat docker-compose.yml

 
  1. version: '3'
  2. services:
  3. nginx:
  4. hostname: nginx
  5. build:
  6. context: ./nginx
  7. dockerfile: Dockerfile
  8. ports:
  9. - 81:80
  10. networks:
  11. - lnmp
  12. volumes:
  13. - ./wwwroot:/usr/local/nginx/html
  14. php:
  15. hostname: php
  16. build:
  17. context: ./php
  18. dockerfile: Dockerfile
  19. networks:
  20. - lnmp
  21. volumes:
  22. - ./wwwroot:/usr/local/nginx/html
  23. mysql:
  24. hostname: mysql
  25. image: mysql:5.6
  26. ports:
  27. - 3306:3306
  28. networks:
  29. - lnmp
  30. volumes:
  31. - ./mysql/conf:/etc/mysql/conf.d
  32. - ./mysql/data:/var/lib/mysql
  33. command: --character-set-server=utf8
  34. environment:
  35. MYSQL_ROOT_PASSWORD: 123456
  36. MYSQL_DATABASE: wordpress
  37. MYSQL_USER: user
  38. MYSQL_PASSWORD: user123
  39. networks:
  40. lnmp:
 

7.2 一键部署LNMP网站平台实战

 

查看compose_lnmp包

tree compose_lnmp/

 
  1. docker-compose.yml #docker-compose启动接口文件
  2. my.cnf #mysql配置文件
  3. data #待挂载mysql数据目录
  4. Dockerfile #自定义nginx的Docker镜像配置文件
  5. nginx-1.12.1.tar.gz #源码包
  6. nginx.conf #nginx配置文件
  7. Dockerfile #自定义php的Docker镜像配置文件
  8. php-5.6.31.tar.gz #源码包
  9. php.ini #php解析器配置文件
  10. wwwroot #nginx容器和php容器待挂载的网页目录
  11. index.php #网页测试文件

image_1ctg3lfslc9i1nitjfbg4k14rl2a.png-80.9kB

 

一键部署LNMP

docker-compose -f compose_lnmp/docker-compose.yml up

image_1ctg4fcie10g8mfv12aob4ie4513.png-48.5kB

 

浏览器访问

image_1ctg4oksc1mean6i1k4ktse1cmj1g.png-127.9kB

 

查看所有部署的容器进程

docker-compose -f compose_lnmp/docker-compose.yml ps

image_1ctg4r7hsormdu013utjic151s1t.png-33.6kB

 

终止所有部署的容器进程

docker-compose -f compose_lnmp/docker-compose.yml stop

docker-compose -f docker-compose.yml ps

image_1ctg4t0t5mjsc6t11eqssb1j4c2a.png-34.2kB

 

清理所有部署的容器进程

docker-compose -f compose_lnmp/docker-compose.yml down

docker-compose -f compose_lnmp/docker-compose.yml ps

image_1ctg4tnu5f5219ih1sv91u2chg37.png-26.4kB

 

7.3 一键部署Nginx反向代理Tomcat集群实战

 

查看compose_nginx_tomcat包

tree compose_nginx_tomcat

 
  1. compose_nginx_tomcat/
  2. ├── docker-compose.yml
  3. ├── mysql
  4. ├── conf
  5. └── my.cnf #mysql的配置文件
  6. └── data #待挂载mysql数据目录
  7. ├── nginx
  8. ├── Dockerfile #自定义镜像配置文件
  9. ├── nginx-1.12.1.tar.gz #源码包
  10. └── nginx.conf #nginx配置文件
  11. ├── tomcat
  12. ├── apache-tomcat-8.0.46.tar.gz #源码包
  13. ├── Dockerfile #自定义镜像配置文件
  14. └── server.xml #tomcat配置文件
  15. └── webapps
  16. └── ROOT
  17. └── index.html #网页测试文件
  18. 7 directories, 9 files

image_1ctg516gf110qi437l212cefev3k.png-46.4kB

 

查看docker-compose的启动接口文件

cat compose_nginx_tomcat/docker-compose.yml

 
  1. version: '3'
  2. services:
  3. nginx:
  4. hostname: nginx
  5. build:
  6. context: ./nginx
  7. dockerfile: Dockerfile
  8. ports:
  9. - 82:80
  10. networks:
  11. - lnmt
  12. volumes:
  13. - ./webapps:/opt/webapps
  14. tomcat01:
  15. hostname: tomcat01
  16. build: ./tomcat
  17. networks:
  18. - lnmt
  19. volumes:
  20. - /usr/local/jdk1.8.0_45:/usr/local/jdk1.8.0_45
  21. - ./webapps:/usr/local/apache-tomcat-8.0.46/webapps
  22. tomcat02:
  23. hostname: tomcat02
  24. build: ./tomcat
  25. networks:
  26. - lnmt
  27. volumes:
  28. - /usr/local/jdk1.8.0_45:/usr/local/jdk1.8.0_45
  29. - ./webapps:/usr/local/apache-tomcat-8.0.46/webapps
  30. mysql:
  31. hostname: mysql
  32. image: mysql:5.6
  33. ports:
  34. - 3307:3306
  35. networks:
  36. - lnmt
  37. volumes:
  38. - ./mysql/conf:/etc/mysql/conf.d
  39. - ./mysql/data:/var/lib/mysql
  40. environment:
  41. MYSQL_ROOT_PASSWORD: 123456
  42. MYSQL_DATABASE: db
  43. MYSQL_USER: user
  44. MYSQL_PASSWORD: user123
  45. networks:
  46. lnmt:

image_1ctg53j8ercl1ur98dh99p17e241.png-60.4kB


由于tomcat容器进程需要挂载docker宿主机本地的java环境

 

所以在docker宿主机本地安装jdk-8u45-linux-x64.tar.gz

ls

tar xf jdk-8u45-linux-x64.tar.gz -C /usr/local

ll -d /usr/local/jdk1.8.0_45

image_1ctg55ke7nm67aukvakim3o5e.png-34.7kB

 

一键部署ngxin+tomcat反向代理集群并启动

pwd

docker-compose -f compose_nginx_tomcat/docker-compose.yml up

image_1ctg58a60oe2fa614npjeo1sdc5r.png-57.8kB

 

浏览器访问

http://192.168.200.70:82

image_1ctg5gei91lhd18go1dt914t4unv68.png-12.5kB

 

停止一台tomcat并测试

http://192.168.200.70:82

image_1ctg5jd6jkg01d2g1dqsqcgd606l.png-92.9kB


image_1ctg5lood1g241adi4efrt1i4272.png-11.7kB

posted @ 2019-07-24 15:36  L1n  阅读(635)  评论(0编辑  收藏  举报