提前通过docker run运行两台Apache镜像
[root@localhost ~]# docker run -it -d --name web1 luojiatian1904/httpd [root@localhost ~]# docker run -it -d --name web2 luojiatian1904/httpd [root@localhost ~]# docker ps -a ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1854792e046f luojiatian1904/httpd "/usr/local/apache/b…" 22 minutes ago Up 22 minutes 80/tcp web2 55a78e08619e luojiatian1904/httpd "/usr/local/apache/b…" 22 minutes ago Up 22 minutes 80/tcp web1
更改web2的访问内容
[root@localhost ~]# docker exec -it 1854792e046f /bin/bash [root@1854792e046f src]# cd /usr/local/apache/htdocs/ [root@1854792e046f htdocs]# vi index.html123
[root@1854792e046f ~]# /usr/local/apache/bin/apachectl restart AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.2.3. Set the 'ServerName' directive globally to suppress this message [root@1854792e046f src]# exit exit [root@localhost ~]# curl 192.168.2.3123
[root@localhost ~]# curl 192.168.2.4It works!
在/opt/下创建一个haproxy目录负责存放haproxy的Dockerfile和文件目录
[root@localhost opt]# mkdir -p haproxy/files
编写Dockerfile文件
[root@localhost ~]# cd /opt/haproxy/ [root@localhost haproxy]# vim Dockerfile FROM centos LABEL MAINTAINER='jtluo luojiatian01518@163.com' ENV version 2.4.0 ADD files/haproxy-$version.tar.gz /usr/src/ ADD files/install.sh /tmp/ ADD files/RSs.txt /tmp/ RUN ["/bin/bash","-c","/tmp/install.sh"] ADD files/run_haproxy.sh /usr/bin/run_haproxy.sh EXPOSE 80 8189 CMD ["/usr/local/haproxy/sbin/haproxy" ,"-Ws","-f","/etc/haproxy/haproxy.cfg"]
编写install.sh脚本
[root@localhost haproxy]# vim files/install.sh #!/bin/bash yum -y install make gcc pcre-devel bzip2-devel openssl-devel systemd-devel useradd -r -M -s /sbin/nologin haproxy cd /usr/src/haproxy-$version && make -j $(nproc) TARGET=linux-glibc USE_OPENSSL=1 USE_PCRE=1 USE_SYSTEMD=1 && make install PREFIX=/usr/local/haproxy cp haproxy /usr/sbin/ echo 'net.ipv4.ip_nonlocal_bind = 1' >> /etc/sysctl.conf && echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf mkdir /etc/haproxy cat > /etc/haproxy/haproxy.cfg <> /etc/haproxy/haproxy.cfg < 创建RSs.txt指定RSip
[root@localhost opt]# vim haproxy/files/RSs.txt 192.168.2.3 192.168.2.4通过Dockerfile构建镜像
[root@localhost haproxy]# docker build -t luojiatian1904/haproxy . Sending build context to Docker daemon 3.576MB Step 1/8 : FROM centos ---> 5d0da3dc9764 Step 2/8 : LABEL MAINTAINER='jtluo luojiatian01518@163.com' ---> Running in 24208436303a Removing intermediate container 24208436303a ---> c275c0a9d87f Step 3/8 : ENV version 2.4.0 ---> Running in 2ae60af8198e Removing intermediate container 2ae60af8198e ---> 7882265ae12c Step 4/8 : ADD files/haproxy-$version.tar.gz /usr/src/ ---> b22cbc18f7b6 Step 5/8 : ADD files/install.sh /tmp/ ---> 76bacc0cdbd7 Step 6/8 : RUN ["/bin/bash","-c","/tmp/install.sh"] Step 7/8 : EXPOSE 80 ---> Running in 778fa1a221a9 Removing intermediate container 778fa1a221a9 ---> 6754842547f6 Step 8/8 : CMD ["/usr/local/haproxy/sbin/haproxy" ,"-Ws","-f","/etc/haproxy/haproxy.cfg"] ---> Running in 88adffe6b5fa Removing intermediate container 88adffe6b5fa ---> f98d1403450b Successfully built f98d1403450b Successfully tagged luojiatian1904/haproxy:latest通过镜像构建容器
[root@localhost opt]# docker run -d --name haproxy -p 80:80 -p 8189:8189 luojiatian1904/haproxy:latest 10ec98a57295730bf58136e583e04f1b4824323abb2771d3791063ddf72950b9 [root@localhost opt]# docker ps -a ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 67538d318390 luojiatian1904/httpd "/usr/local/apache/b…" 3 minutes ago Up 3 minutes 80/tcp web2 0da2f785d283 luojiatian1904/httpd "/usr/local/apache/b…" 3 minutes ago Up 3 minutes 80/tcp web1 10ec98a57295 haproxy:v2 "/usr/local/haproxy/…" 4 minutes ago Up 4 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:8189->8189/tcp, :::8189->8189/tcp haproxy [root@localhost haproxy]# ss -anlt State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 128 0.0.0.0:8080 0.0.0.0:* LISTEN 0 128 0.0.0.0:8189 0.0.0.0:*通过浏览器访问宿主机



