Olá pessoal,
Anteriormente vimos o que era uma imagem e o que era um Dockerfile, agora vamos descobrir como criar uma imagem a partir da interação com um container. Vamos trabalhar da seguinte maneira:
Vamos criar uma imagem com apache com interação com o container.
Vamos começar criando o container com docker run -it centos /bin/bash
agora que estamos dentro dele, vamos executar os seguintes comandos:
yum install wget -y
wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
rpm -ivh epel-release-7-5.noarch.rpm
yum install httpd -y,
Instalamos o apache dentro do container, mas quando iniciarmos o container novamente, o serviço do apache não irá iniciar, pois o container não possui os serviços de inicialização então vamos usar um serviço chamado Supervisord que faz com que sempre que eu reiniciar o container eu possa já iniciar alguns serviços.
sudo yum install python-setuptools
sudo easy_install pip
sudo pip install supervisor
echo_supervisord_conf > supervisord.conf
sudo cp supervisord.conf /etc/supervisord.conf
sudo mkdir /etc/supervisord.d/
sudo vi /etc/supervisord.conf
Com o arquivo de configurações do supervisord aberto vamos alterar e adicionar algumas linhas:
Altere a linha que tenha
[include]
files =
[include]
files = /etc/supervisord.d/*.conf
Agora vamos criar o arquivo: vi /etc/rc.d/init.d/supervisord
Coloque esse código dentro do arquivo:
#!/bin/sh
#
# /etc/rc.d/init.d/supervisord
#
# Supervisor is a client/server system that
# allows its users to monitor and control a
# number of processes on UNIX-like operating
# systems.
#
# chkconfig: - 64 36
# description: Supervisor Server
# processname: supervisord
# Source init functions
. /etc/rc.d/init.d/functions
prog="supervisord"
prefix="/usr/"
exec_prefix="$"
prog_bin="${exec_prefix}/bin/supervisord"
PIDFILE="/var/run/$prog.pid"
start()
{
echo -n $"Starting $prog: "
daemon $prog_bin --pidfile $PIDFILE
[ -f $PIDFILE ] && success $"$prog startup" || failure $"$prog startup"
echo
}
stop()
{
echo -n $"Shutting down $prog: "
[ -f $PIDFILE ] && killproc $prog || success $"$prog shutdown"
echo
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status $prog
;;
restart)
stop
start
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
;;
esac
sudo chmod +x /etc/rc.d/init.d/supervisord
sudo chkconfig --add supervisord
sudo chkconfig supervisord on
supervisord
Agora já podemos adicionar nosso serviço até o supervisord. Abra novamente o arquivo: /etc/supervisord.conf
Adicione ao final do arquivo as seguintes linhas.
[program:httpd]
command=/usr/sbin/httpd -D FOREGROUND -k start
environment=APACHE_LOG_DIR=/var/log/httpd
redirect_stderr=true
Após isso vamos executar supervisorctl update
e supervisorctl
você poderá ver que foi adicionado o serviço httpd ao supervisord.
Vamos criar o arquivo vi /run.sh e dentro dele colocar as linhas seguintes:
#!/bin/bash
supervisord &
sleep 2
/bin/bash
chmod +x /run.sh
Agora vamos criar a imagem, pressione CTRL + P + Q
. Agora estamos no console do Host, para criar a imagem vamos executar docker commit id_container nome_imagem
. Agora é só colocar docker run -it nome_imagem /run.sh
e você estará iniciando seu Servidor Web.
Obrigado pessoal, por hoje é isso.