创建nginx、httpd容器
[root@localhost ~]
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd v0.1 3709a35b5387 15 minutes ago 423MB
nginx v0.1 45d2af2e6e0f 27 minutes ago 549MB
centos latest 5d0da3dc9764 2 months ago 231MB
// nginx
[root@localhost ~]
31c71361384a121630a4d14b525a0adac65c9c1694a5a0892a0140aad36802a3
[root@localhost ~]
[root@31c71361384a /]
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
[root@31c71361384a /]
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
35: eth0@if36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
// httpd
[root@localhost opt]
27e9997db224f1074f2d686cedb7e8be0a53af600b4b833afbf94bad9f0fc16a
[root@localhost opt]
[root@27e9997db224 apache]
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
[root@27e9997db224 apache]
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
29: eth0@if30: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
目录结构
[root@localhost ~]
haproxy/
|-- Dockerfile
`-- files
|-- haproxy-2.4.0.tar.gz
|-- haproxy-2.5.0.tar.gz
|-- haproxy.cfg
|-- install.sh
`-- start.sh
1 directory, 6 files
Dockerfile文件
[root@localhost ~]
// 基础镜像
FROM centos
// 作者信息
LABEL MAINTAINER “gaofan1225 123@qq.com”
// 环境变量
ENV haproxy_version 2.5.0
// 传输文件
ADD files/haproxy-${haproxy_version}.tar.gz /usr/src
ADD files/haproxy.cfg /usr/local/haproxy/conf/haproxy.cfg
ADD files/start.sh /scripts/
ADD files/install.sh /scripts/
// 安装
RUN ["/bin/bash","-c","/scripts/install.sh"]
// 暴露端口
EXPOSE 80 8189
// 启动命令
CMD ["/scripts/start.sh"]
安装脚本
[root@localhost ~]
[root@localhost files]
haproxy-2.5.0.tar.gz
[root@localhost files]
[root@localhost files]
[root@localhost files]
rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-$(awk -F'"' 'NR==5{print $2}' /etc/os-release).repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
yum clean all && yum makecache
yum -y install make gcc gcc-c++ pcre-devel bzip2-devel openssl-devel systemd-devel
useradd -r -M -s /sbin/nologin haproxy
cd /usr/src/haproxy-${haproxy_version}
make clean && \
make -j $(nproc) \
TARGET=linux-glibc \
USE_OPENSSL=1 \
USE_ZLIB=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
rm -rf /usr/src/haproxy-${
haproxy_version/ /var/cache/*
yum -y remove make gcc gcc-c++
启动服务脚本
[root@localhost files]
[root@localhost files]
[root@localhost files]
haproxy -f /usr/local/haproxy/conf/haproxy.cfg
/bin/bash
编写配置文件
[root@localhost files]
global
log 127.0.0.1 local0 info
maxconn 20480
pidfile /var/run/haproxy.pid
user haproxy
group haproxy
daemon
defaults
mode http
log global
option dontlognull
option httpclose
option httplog
option redispatch
balance roundrobin
timeout connect 10s
timeout client 10s
timeout server 10s
timeout check 10s
maxconn 60000
retries 3
listen admin_stats
bind 0.0.0.0:8189
stats enable
mode http
log global
stats uri /haproxy_stats
stats realm Haproxy\ Statistics
stats auth admin:admin
stats admin if TRUE
stats refresh 30s
listen webcluster
bind 0.0.0.0:80
mode http
log global
maxconn 3000
balance roundrobin
cookie SESSION_COOKIE insert indirect nocache
server web1 172.17.0.2:80 check inter 2000 fall 5
server web2 172.17.0.3:80 check inter 2000 fall 5
构建haproxy镜像
[root@localhost ~]
Successfully built afaead465206
Successfully tagged haproxy:v0.1
创建haproxy容器
[root@localhost ~]
REPOSITORY TAG IMAGE ID CREATED SIZE
haproxy v0.1 afaead465206 4 minutes ago 412MB
httpd v0.1 3709a35b5387 15 minutes ago 423MB
nginx v0.1 45d2af2e6e0f 27 minutes ago 549MB
centos latest 5d0da3dc9764 2 months ago 231MB
[root@localhost ~]
35179537b8345e14a6d2abb61ad6b1f7655a0e26d04963d51ec39c1eeed17781
[root@localhost ~]
[root@35179537b834 /]
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 0.0.0.0:8189 0.0.0.0:*
[root@35179537b834 /]
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
41: eth0@if42: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:04 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.4/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
页面访问