Нурмухамед Артыкалы

Блог обо всем

CoreOS: Создание контейнеров для тестовой площадки

Введение

Создать контейнеры для docker можно двумя способами:

  • ручное
  • через dockerfile

В данное время будем рассматривать только ручное создание. Для создания контейнеров используем Developers.

Контейнеры

curl

Запустить контейнер centos-base-with-localrepo – базовый контейнер, использующий локальные репозитории

1
docker run -i -t hub.nurm.local:5000/centos-base-with-localrepo /bin/bash

Создать скрипт – бесконечный цикл, запрашивающий страницу

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cat <<EOF > /root/curl_loop.sh
#!/bin/bash

CURL=/usr/bin/curl
#echo $CURL

while true
do
        $CURL -silent http://a.haproxy.nurm.local/counter.php > /dev/null
        sleep 300
done
EOF

chmod + x /root/curl_loop.sh

Сохранить изменения, загрузить образ в репозиторий

1
2
3
docker commit ${CONTAINER_ID} centos-test-curl
docker tag ${IMAGE_ID} hub.nurm.local:5000/centos-test-curl
docker push hub.nurm.local:5000/centos-test-curl

haproxy

Запустить контейнер centos-base-with-localrepo – базовый контейнер, использующий локальные репозитории

1
docker run -i -t hub.nurm.local:5000/centos-base-with-localrepo /bin/bash

Установить балансировщик нагрузки haproxy

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
yum install haproxy

cat <<EOF > /etc/haproxy/haproxy.cfg
global
    maxconn 4096

defaults
    log global
    mode    http
    option  httplog
    option  dontlognull
    retries 3
    redispatch
    maxconn 2000
    contimeout  5000
    clitimeout  50000
    srvtimeout  50000

frontend http-in
    bind *:80
    default_backend http

backend http
    server a-httpd 192.168.254.207:80 maxconn 32
    server b-httpd 192.168.254.208:80 maxconn 32
    server c-httpd 192.168.254.209:80 maxconn 32
EOF

Сохранить изменения, загрузить образ в репозиторий

1
2
3
docker commit ${CONTAINER_ID} centos-test-haproxy
docker tag ${IMAGE_ID} hub.nurm.local:5000/centos-test-haproxy
docker push hub.nurm.local:5000/centos-test-haproxy

httpd

Запустить контейнер centos-base-with-localrepo – базовый контейнер, использующий локальные репозитории

1
docker run -i -t hub.nurm.local:5000/centos-base-with-localrepo /bin/bash

Установить вебсервер с поддержкой php, загрузить простейший счетчик посещений

1
2
3
4
5
6
7
8
9
10
11
12
yum install httpd php

curl http://dnsmasq/simphp.php -o /var/www/html/simphp.php

cat <<EOF > /var/www/html/counter.php
<?php require("simphp.php"); ?>

<p class="hits"><?php echo $info; ?></p>

EOF

chown apache:root -R /var/www/

Сохранить изменения, загрузить образ в репозиторий

1
2
3
docker commit ${CONTAINER_ID} centos-test-httpd
docker tag ${IMAGE_ID} hub.nurm.local:5000/centos-test-httpd
docker push hub.nurm.local:5000/centos-test-httpd

Comments

Comments