quarta-feira, 13 de fevereiro de 2019

Utilizando o Git - Pegar o Projeto enviar arquivos e pegar as atualizações

Para acessar e conhecer os Projetos que estão no GitLab informe se usuário e senha, para fazer o acesso e serão exibidos apenas os projetos que o seu usuário te permissão, dependendo da permissão de visibilidade do projeto, que pode ser: "Público", "Privado" ou Usuários Logados podem ver.

Baixando o Projeto:

Para fazer o download de um projeto do GitLab, utilizaremos o exemplo de um projeto já existente chamado dir_projeto, que será baixado dentro do diretório /home/dev/git/, lembrando que o diretório:

user@host:/home/dev/git$ git clone https://git.host/dir_projeto/dir_projeto.git


Será solicitado o usuário e senha:

Cloning into 'dir_projeto'...
Username for 'https://git.host': user
Password for 'https:host':
remote: Counting objects: 40, done.
remote: Compressing objects: 100% (34/34), done.
remote: Total 40 (delta 13), reused 0 (delta 0)
Unpacking objects: 100% (40/40), done.
Checking connectivity... done.

Perceba que foi criado um diretório dir_projeto com todos os arquivos do projeto

Enviando arquivos e diretórios ("Commitando"):

Segue um exemplo para fazer o commit das alterações ou novos arquivos, basta realizar os seguintes comandos:

user@host:/home/dev/git/dir_projeto$ git add *
user@host:/home/dev/git/dir_projeto$ git commit -m "Arquivos explicativos para criação do diretório" 


Teremos a seguinte saída de tela:

[master b8eee04] Arquivos explicativos para criação do diretório
8 files changed, 56 insertions(+)
create mode 100644 /home/dev/git/dir_projeto/leiame.txt

...

Ainda os arquivo não foram enviados.
Para realizar o envio para o servidor do GitLab, utilizamos o comando:

user@host:/home/dev/git/dir_projeto$ git push origin master


Saída de tela:

Counting objects: 7, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (7/7), 900 bytes | 0 bytes/s, done.
Total 7 (delta 1), reused 0 (delta 0)
To ost:dir_projeto/dir_projeto.git
4aad466..b8eee04 master -> master

Baixando Alterações e Novos Arquivos (Update):

user@host:/home/dev/git/dir_projeto$ git pull


O usuário e senha são solicitados novamente, mas nesse caso, não haverá nenhum arquivo para ser baixado:

Username for 'https://git.host': user
Password for 'https:ost':
Already up-to-date.

Sobrescrevendo os arquivos locais

git fetch --all
git reset --hard origin/master


Obs: Todos os arquivos locais serão substituídos pelos vindo do Servidor, isso fará com que você perca todas as alterações que foram feitas na máquina local.

GitLAb por SSH + Chave Criptografada

Se possuir um client SSH com chave criptografada, também é possível fazer os acessos ao repositório, a vantagem é que não é necessário ficar digitando a senha de usuário a todo momento de push e pull.
Para isso, basta que o projeto seja criado da seguinte maneira:

user@host:/home/dev/git/$ git clone git@git.host:dir_projeto/dir_projeto.git


Nesse caso será solicitada a senha da chave criptografada do SSH, criando o link de confiança entre a sua máquina e o repositório!

Dockerizando

Instalar docker (CentOS7)

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --enable docker-ce-edge
yum install docker-ce
systemctl start docker
groupadd docker
usermod -aG docker $USER

Outra forma de instalar (CentOS7)

Criar o arquivo docker.repo em /etc/yum.repos.d/ com o conteúdo:

[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
Executar os comandos abaixos:
yum install docker-engine
systemctl start docker
systemctl enable docker
yum install -y python-pip
pip install docker-compose

Instalação Debian 9 / Ubuntu 16.04+:

Com super usuário (ou sudo), execute os seguintes comandos

apt-get remove docker docker-engine docker.io

  sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
apt-key fingerprint 0EBFCD88
add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/debian \
   $(lsb_release -cs) \
   stable" 
apt-get update
apt-get install docker-ce

OBS: Possivelmente também funcione com Ubuntu (Não testado)

Imagens do Docker:

docker images

Obteremos a seguinte saída de exemplo:

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx-php7      1.12                267c03fe7642        2 minutes ago       157MB
mariadb         10.1                ef76a230d60e        2 hours ago         207MB
alpine              3.7                 3fd9065eaf02        4 months ago        4.14MB
alpine              latest              3fd9065eaf02        4 months ago        4.14MB

Para remover uma imagem utilizamos o comando:

docker rmi [IMAGE_ID], conforme o exemplo:
docker rmi 267c

OBS: Apenas parte do ID já irá funcionar. Não é necessário utilizar o
 ID inteiro, basta apenas parte dele, se não houver repetido, ou a parte
 for diferenciada.

Processos do Docker:

docker ps

Obteremos a saída conforme exemplo:

CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                         NAMES
523c5e905bf1        nginx-php7:1.12   "/usr/local/bin/do..."   7 minutes ago       Up 7 minutes        0.0.0.0:80->80/tcp, 443/tcp   web
754408af3ab9        mariadb:10.1      "/scripts/run.sh"        2 hours ago         Up 2 hours          0.0.0.0:3306->3306/tcp        db

Criando rede Docker:

docker network create --driver bridge [NOME_DA_REDE]

Limpando Docker:

docker system prune --all

OBS: Tudo que não estiver sendo utilizado, por nenhum contêiner (Processo Docker), será apagado, incluindo redes.
A saída desse comando irá gerar algo do tipo:

WARNING! This will remove:
    - all stopped containers
    - all volumes not used by at least one container
    - all networks not used by at least one container
    - all images without at least one container associated to them
Are you sure you want to continue? [y/N] y
]Deleted Containers:
624fae42277f3a735f0a981bd896d97a6641c551b5e3317a2e301a62889e9458
5907b5398035030826dbad6d4b9cd906604f28d74759361fc54379dd0b348212
15242833ebf65c07df68ded825f14d5f8a4873d6e3ede55d64b38b5c4b28c37f
e0eb43bf776b8863330edd3937076268930bbbd57bfb9344b56d7b900c170116
4afa38bb6a500a1c08ee137e0419373ed2d8bc5a55520f41cdd0e41701905b3a
d87db5b1107b0513de582b6d0296a91337c86e1c66a272495f18a37eac71a85c
8a696aae4a70227f3589194c0ad057618644f6a9b1a5623bf91bf7800cad5e01
a2980d01aaf8290670112669d920db44af71c0bc3d8e2e4a53a7ab972497a823
aaa59c6257023e0d9eda22ae40ab0d526a2ffc60db946e33200336342e13c92b
90bb9ab5d49eea03f8a323ac9992c73edb30e5bfa2207a2515fdc1d1fda86c43

Deleted Volumes:
c7ddda00247b7c653205d2e541b1f47d2fee7b16a0530543b96753633f9dee5e
54ca3dadafd1b53568686ce7cf0e421796251f95743ba209562ccb80195f0858
796ed51f5e45ef2a9ec2f93dfee09a5268517d9c0ddd101b8d8d59f34e590026

Deleted Networks:
net

Deleted Images:
deleted: sha256:ba3678f609b221f5c5bcc872821dee565286edc757de298a49adf4f18a4d2d83
deleted: sha256:b713b248db24fcb617eae474a38b78235569b96ac7957e54b75853528630c0d6
...
deleted: sha256:c5b65b0d88e270043ae217c5fbd897c1cb66c2a1d3333d3ad089a6e573f8cdfc
deleted: sha256:a52bb21efc57851191d28a648fe23963d8e1fc386d4369424829a069cfa04c1d
untagged: alpine:latest
untagged: alpine@sha256:e1871801d30885a610511c867de0d6baca7ed4e6a2573d506bbec7fd3b03873f
untagged: nginx-php7:1.12
deleted: sha256:4a1639baeb752a431a4aa557b49a42998f68a9bdd8afcb5a99257dbdbc95630e
deleted: sha256:d7a9f9ff766a1d39b48e15cae4d882a5ff7dcc5b6ae6c967d5f4fb5a970f8fb8
...
deleted: sha256:3fd9065eaf02feaf94d68376da52541925650b81698c53c6824d92ff63f98353
deleted: sha256:cd7100a72410606589a54b932cabd804a17f9ae5b42a1882bd56d263e02b6215

Total reclaimed space: 485.7MB

Exemplos de comandos para utitização do docker:

Comandos para instalação e utilização de projetos no docker
-----------------------------------------------------------

Ver sua versão do linux
$ lsb_release -cs

Ver a versão do docker instalado no host:
$ docker -v

Instalação:
ver na wiki (no início dessa página) a instalação para seu S.O.

Criar um grupo e incluir seu usuario do S.O. para como sudo do docker
$sudo groupadd docker
$sudo usermod -aG docker $USER

Para iniciar automaticamente o serviço docker 
$ sudo systemctl enable docker

Para configurar o docker para responder via TCP na porta 2375
$sudo systemctl edit docker.service
OBS: Incluir as três linhas abaixo no arquivo

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375

Recarregando o servico docker
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker.service

Onde o docker guarda os dados (imagens, containers, networks e vlumes)
$ sudo ls -lha /var/lib/docker/

user@host:~$ sudo ls -lha /var/lib/docker/
total 56K
drwx--x--x 14 root root 4,0K Jun  7 09:37 .
drwxr-xr-x 70 root root 4,0K Jun  6 15:55 ..
drwx------  2 root root 4,0K Jun  6 15:55 builder
drwx--x--x  3 root root 4,0K Jun  6 15:55 containerd
drwx------  2 root root 4,0K Jun  7 10:35 containers
drwx------  3 root root 4,0K Jun  6 15:55 image
drwxr-x---  3 root root 4,0K Jun  6 15:55 network
drwx------  3 root root 4,0K Jun  7 10:36 overlay2
drwx------  4 root root 4,0K Jun  6 15:55 plugins
drwx------  2 root root 4,0K Jun  7 09:37 runtimes
drwx------  2 root root 4,0K Jun  6 15:55 swarm
drwx------  2 root root 4,0K Jun  7 10:14 tmp
drwx------  2 root root 4,0K Jun  6 15:55 trust
drwx------  2 root root 4,0K Jun  7 10:39 volumes

O log do docker
$ journalctl -u docker.service

Status, stop e start do serviço docker

$ sudo service docker status
$ sudo service docker stop
$ sudo service docker start

procurar uma imagem (por exemplo ubuntu) no Docker Hub
$ docker search ubuntu

baixar uma imagem do Docker Hub (mas sem executar)
$ docker pull mariadb:latest

listar as imagens baixadas no seu docker host
$ docker images

O comando run abaixo baixa a imagem (no nosso exemplo mysql:5.6) e já executa o respectivo container (container_mysql-5.6)
$ docker run -p 3306:3306 --name container_mysql-5.6 -e MYSQL_ROOT_PASSWORD=segredo -d mysql:5.6

Iniciar, parar, reiniciar um container docker
$ docker start container_mysql-5.6 
$ docker stop container_mysql-5.6 
$ docker restart container_mysql-5.6 

listar os containers existentes (inclusive os que não estão rodando)
$ docker ps -l

Overview do ambiente docker:
$ docker system df

    Retorno:
    user@host:~$ docker system df
    TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
    Images              0                   0                   0B                  0B
    Containers          0                   0                   0B                  0B
    Local Volumes       0                   0                   0B                  0B
    Build Cache                                                 0B                  0B

Apaga tudo que não está sendo mais utilizado no docker:
$ docker system prune

    Retorno:
    WARNING! This will remove:
            - all stopped containers
            - all networks not used by at least one container
            - all dangling images
            - all build cache
    Are you sure you want to continue? [y/N] y
    Total reclaimed space: 0B

Comandos poderosos (e perigosos)
--------------------------------

*Apaga todos os objetos (imagens, containers, networks e volumes) não utilizados (danglin's) do seu host docker
docker system prune --all --force --volumes

*pode ser criado um alias no S.O. para ser chamado no terminal com o comando: docker-clean-unused
alias docker-clean-unused='docker system prune --all --force --volumes'

*Apaga todos os objetos (imagens, containers, networks e volumes) mesmo que utilizados, do seu host docker
* Esse cara APAGA TUDO MESMO
docker stop $(docker container ls -a -q) && docker system prune -a -f --volumes

*pode ser criado um alias no S.O. para ser chamado no terminal com o comando: docker-clean-all
* Esse cara APAGA TUDO MESMO
alias docker-clean-all='docker stop $(docker container ls -a -q) && docker system prune -a -f --volumes'

Referências


https://docs.docker.com/install/linux/docker-ce/centos/