>_Docker Linux Container – Instalando no CentOS 6.5 e subindo o primeiro Container – 1.2

docker

Neste segundo tutorial sobre Docker Container, vou abordar a instalação do docker-io no CentOS 6.5 x64. Também irei abordar a configuração do primeiro Container Ubuntu, já com alguns de seus parâmetros pré configurados: ip, mac, gateway e hostname.

Mão na Massa!

Ambiente:
1 Servidor Linux CentOS 6.5 x64 – Virtualizado com XenServer 6.0.
1 Interface de rede (eth0) via dhcp.

Host: docker-centos6-5 – IP – 192.168.0.227/22
Container: docker-ubuntu-1 – IP – 192.168.0.7/22

Passo 1 – Configurando a interface de rede eth0 como bridge no Host (docker-centos6-5).

# cd /etc/sysconfig/network-scripts/
# vim ifcfg-eth0

eth0

DEVICE="eth0"
HWADDR="B2:5F:F5:7F:2B:5E"
NM_CONTROLLED="no"
ONBOOT="yes"
BRIDGE="docker0"

docker0

# vim ifcfg-docker0
DEVICE="docker0"
TYPE="Bridge"
BOOTPROTO="dhcp"
ONBOOT="yes"
NAME="Bridge docker0"

Passo 2 – Reiniciando as interfaces de rede.

# /etc/init.d/network restart

Passo 3 – Verificando a configuração.

# ifconfig 
docker0   Link encap:Ethernet  Endereço de HW B2:5F:F5:7F:2B:5E  
          inet end.: 192.168.0.227  Bcast:192.168.3.255  Masc:255.255.252.0
          endereço inet6: fe80::b05f:f5ff:fe7f:2b5e/64 Escopo:Link
          UP BROADCASTRUNNING MULTICAST  MTU:1500  Métrica:1
          RX packets:114023 errors:0 dropped:0 overruns:0 frame:0
          TX packets:31148 errors:0 dropped:0 overruns:0 carrier:0
          colisões:0 txqueuelen:0 
          RX bytes:79006015 (75.3 MiB)  TX bytes:2774362 (2.6 MiB)

eth0      Link encap:Ethernet  Endereço de HW B2:5F:F5:7F:2B:5E  
          endereço inet6: fe80::b05f:f5ff:fe7f:2b5e/64 Escopo:Link
          UP BROADCASTRUNNING MULTICAST  MTU:1500  Métrica:1
          RX packets:122949 errors:0 dropped:0 overruns:0 frame:0
          TX packets:36385 errors:0 dropped:0 overruns:0 carrier:0
          colisões:0 txqueuelen:1000 
          RX bytes:90677018 (86.4 MiB)  TX bytes:3178641 (3.0 MiB)
          IRQ:24 

lo        Link encap:Loopback Local  
          inet end.: 127.0.0.1  Masc:255.0.0.0
          endereço inet6: ::1/128 Escopo:Máquina
          UP LOOPBACKRUNNING  MTU:65536  Métrica:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          colisões:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Passo 4 – Instalando o repositório Epel.

# yum install epel-release
# cd /etc/yum.repos.d/
ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-fasttrack.repo  CentOS-Media.repo  CentOS-Vault.repo  epel.repo  epel-testing.repo

Passo 5 – Ativando o Centos Plus no repositório CentOS-Base.

# vim CentOS-Base.repo
 36 #additional packages that extend functionality of existing packages
 37 [centosplus]
 38 name=CentOS-$releasever - Plus
 39 mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
 40 #baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
 41 gpgcheck=1
 42 enabled=0
 43 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

PARA

 36 #additional packages that extend functionality of existing packages
 37 [centosplus]
 38 name=CentOS-$releasever - Plus
 39 mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
 40 #baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
 41 gpgcheck=1
 42 enabled=1
 43 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

Passo 6 – Atualizando o Host (docker-centos6-5).

# yum update -y
Passo 7 - Reiniciando o Host (docker-centos6-5).
# reboot

Passo 8 – Instalando o docker-io no Host (docker-centos6-5).

# yum install docker-io -y

Passo 9 – Configurando o compartilhamento de memória para o LXC.

# /etc/init.d/cgconfig stop
# cd /cgroup/memory/
# vim memory.use_hierarchy

0 – Desativa
1 – Ativa

1

Ou

# vim /etc/cgconfig.conf
...
group . {
memory {
memory.use_hierarchy = "1";
}
}

Fechando o arquivo.
:x!

Passo 11 – Configurando o docker para que possa utilizar o LXC.

# vim /etc/sysconfig/docker
other_args="--exec-driver=lxc"

Passo 12 – Reiniciando o cgconfig e o docker.

# /etc/init.d/cgconfig start
Starting cgconfig service:                                 [  OK  ]
# /etc/init.d/docker start
Starting cgconfig service:                                 [  OK  ]
Starting docker:	                                   [  OK  ]

Passo 13 – Verificando as imagens que o Host possui com o comando docker images.

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

Passo 14 – Baixando a imagens do Ubuntu no repositório oficial do Docker.

# docker pull ubuntu

Passo 15 – Verificando novamente as imagens que o Host possui com o comando docker images.

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu              latest              07f8e8c5e660        9 days ago          188.3 MB
ubuntu              trusty              07f8e8c5e660        9 days ago          188.3 MB
ubuntu              trusty-20150427     07f8e8c5e660        9 days ago          188.3 MB
ubuntu              14.04               07f8e8c5e660        9 days ago          188.3 MB
ubuntu              14.04.2             07f8e8c5e660        9 days ago          188.3 MB

Passo 16 – Criando o arquivo de inicialização do primeiro Container Docker.

# cd /etc/docker/
# vim docker-ubuntu-1.sh 
#!/bin/bash

# Iniciando o Container.
# Não ativando nenhum tipo de rede pelo docker.
# Ativando privilégios do root.
# Aqui o legal da brincadeira. Criando uma interface Bridge,
# passando um IP, MAC, GW e por fim o hostname do Container.
# -d o Container rodará em background -t -i para usar o /bin/bash.
docker run \
--net="none" \
--privileged \
--lxc-conf="lxc.network.type = veth" \
--lxc-conf="lxc.network.link = docker0" \
--lxc-conf="lxc.network.flags = up" \
--lxc-conf="lxc.network.hwaddr=5e:1e:bf:52:7c:ac" \
--lxc-conf="lxc.network.ipv4 = 192.168.0.7/22" \
--lxc-conf="lxc.network.ipv4.gateway = 192.168.0.5" \
--lxc-conf="lxc.utsname=docker-ubuntu-1" \
-d -t -i ubuntu /bin/bash

Passo 17 – Iniciando o Container.

# sh docker-ubuntu-1.sh 
a2b244aa44d8efa6dcf02bb6541949aeb66372768d672e34c4801e69794b89da

Passo 18 – Verificando o processo do Container.

# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
a2b244aa44d8        ubuntu:14.04        "/bin/bash"         3 seconds ago       Up 2 seconds                            thirsty_ardinghelli  

Passo 19 – Acessando o Container com o comando docker attach + id do Container.

# docker attach a2b244aa44d8

root@docker-ubuntu-1:/# 

Passo 20 – Verificando se o Container iníciou com as configurações corretas.

root@docker-ubuntu-1:/# ifconfig 
eth0      Link encap:Ethernet  HWaddr 5e:1e:bf:52:7c:ac  
          inet addr:192.168.0.7  Bcast:192.168.3.255  Mask:255.255.252.0
          inet6 addr: fe80::5c1e:bfff:fe52:7cac/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2864 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:479538 (479.5 KB)  TX bytes:468 (468.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
root@docker-ubuntu-1:/# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.0     0.0.0.0         255.255.252.0   U     0      0        0 eth0
0.0.0.0         192.168.0.5     0.0.0.0         UG    0      0        0 eth0
root@docker-ubuntu-1:/# hostname
docker-ubuntu-1

Passo 21 – Para sair do Container, digite a sequência dos comandos abaixo:

Observação: Para sair do Container encerrando o processo (docker stop <id>), basta digitar o comando exit.

Ctrl+p + Ctrl+q
root@docker-ubuntu-1:/# [root@docker-centos6-5 docker]# 
[root@docker-centos6-5 docker]# 

Passo 22 – Verificando se o processo do Container ainda existe, após a sequência dos comandos.

[root@docker-centos6-5 docker]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
a2b244aa44d8        ubuntu:14.04        "/bin/bash"         7 minutes ago       Up 7 minutes                            thirsty_ardinghelli  

Passo 23 – Encerrando o Container com o comando docker stop + id do Container.

# docker stop a2b244aa44d8
a2b244aa44d8

UFA!
Continua …
Fonte:

http://www.ricardomartins.com.br/
https://github.com/lxc/lxc/issues/345
http://unix-linux-server.blogspot.com.br/2014/07/virtualization-technology-with-docker.html
https://docs.docker.com

>_Docker Linux Container – Instalando no CentOS 6.5 e subindo o primeiro Container – 1.2
Tagged on:

One thought on “>_Docker Linux Container – Instalando no CentOS 6.5 e subindo o primeiro Container – 1.2

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

%d blogueiros gostam disto: