Instalando o Docker no Ubuntu 14.04
Usando um sistema diferente? O Docker é um aplicativo que permite implantar programas executados como contêineres. Foi escrito no popular programa Go
Os contêineres LXC (contêineres do Linux) são um recurso do sistema operacional no Linux que pode ser usado para executar vários sistemas Linux isolados em um único host.
Essas instruções orientarão você nas etapas básicas da configuração do servidor para hospedagem isolada de contêineres Linux. Vamos configurar os seguintes recursos:
ssh [email protected]
essh [email protected]
Este guia pressupõe que:
No final do tutorial, obteremos dois contêineres virtuais que terão acesso à Internet, mas não poderão executar ping um ao outro. Também configuraremos o encaminhamento de porta example.com
para os contêineres. Implementaremos o painel de configuração e gerenciamento seguro com a ajuda de ferramentas do pacote Proxmox.
Usaremos o Proxmox apenas para o gerenciamento de contêineres LXC. Geralmente, ele também suporta KVM, mas a virtualização aninhada é proibida no Vultr. Antes do início, um Proxmox ISO deve ser baixado do site oficial. Nós vamos usar o Proxmox VE 5.0 ISO Installer
. Instale o sistema operacional a partir da imagem com as configurações padrão e reinicie a máquina virtual. Além disso, você pode instalar manualmente o proxmox a partir de fontes, mas isso não é necessário na maioria dos casos (siga as instruções aqui ).
Conecte-se ao seu host por SSH, atualize a lista de modelos proxmox e faça o download de um modelo adequado para contêineres.
apt-get update
pveam update
pveam available
pveam download local ubuntu-14.04-standard_14.04-1_amd64.tar.gz
Agora, precisamos criar um contêiner linux com a interface de rede conectada a uma ponte linux. Abra /etc/network/interfaces
e acrescente as seguintes linhas:
auto vmbr1
iface vmbr1 inet static
address 10.100.0.1
netmask 255.255.255.0
bridge_ports none
bridge_stp off
bridge_fd 0
Após a reinicialização do sistema, você pode criar um novo contêiner a partir do Ubuntu 14.04
modelo.
pct create 200 /var/lib/vz/template/cache/ubuntu-14.04-standard_14.04-1_amd64.tar.gz -storage local-lvm -net0 name=eth0,bridge=vmbr1,ip=10.100.0.200/24,gw=10.100.0.1
Você pode verificar seu contêiner usando pct list
, inicie o contêiner nº 200 pct start 200
e insira seu shell com pct enter 200
. Você também pode verificar as configurações e endereços de rede com ip addr
.
Para fornecer conexão à Internet dentro do seu contêiner, precisamos ativar NAT
. O seguinte permitirá que o tráfego seja encaminhado do contêiner para a Internet com a ajuda da tecnologia NAT. A vmbr0
ponte está conectada à interface externa e a vmbr1
ponte está conectada aos contêineres.
sysctl -w net.ipv4.ip_forward=1
iptables --table nat --append POSTROUTING --out-interface vmbr0 -j MASQUERADE
iptables --append FORWARD --in-interface vmbr1 -j ACCEPT
Entre no contêiner pct enter 200
e configure o servidor da web.
apt-get update
apt-get install nginx
service nginx start
exit
Agora, precisamos configurar o Nginx no seu servidor para proxy de sites em contêineres.
apt-get update
apt-get install nginx
Crie um novo arquivo de configuração /etc/nginx/sites-available/box200
com o seguinte conteúdo:
server {
listen 80;
server_name server200.example.com;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
location / {
proxy_pass http://10.100.0.200/;
}
}
O Nginx agora fará proxy de cada solicitação HTTP server200.example.com
do servidor para o contêiner com IP 10.100.0.200. Ative esta configuração.
ln -s /etc/nginx/sites-available/box200 /etc/nginx/sites-enabled/
service nginx restart
Se você deseja fornecer acesso fácil às caixas de proteção, é necessário encaminhar as sessões SSH para os contêineres. Para fazer isso, crie um novo usuário no seu servidor raiz. Não se esqueça de inserir uma senha, outros parâmetros não são necessários.
adduser box200
su - box200
ssh-keygen
cat .ssh/id_rsa.pub
exit
Copie essa chave SSH e insira o contêiner para anexar a chave.
pct enter 200
mkdir .ssh
nano .ssh/authorized_keys
exit
No seu servidor, adicione a seguinte linha ao .ssh/authorized_keys
arquivo.
command="ssh [email protected]",no-X11-forwarding,no-agent-forwarding,no-port-forwarding <YOUR SSH KEY>
Não esqueça de mudar <YOUR SSH KEY>
para sua chave pública doméstica. Como alternativa, você pode executar o seguinte na linha de comando.
echo 'command="ssh [email protected]",no-X11-forwarding,no-agent-forwarding,no-port-forwarding <YOUR SSH KEY>' >> .ssh/authorized_keys
Em seguida, você pode se conectar à sua caixa de areia com o ssh.
`ssh box200@<your_server_IP>`
É hora de implementar várias melhorias de segurança. Primeiro, queremos alterar a porta SSH padrão. Em seguida, queremos proteger nossa página de gerenciamento do Proxmox com autenticação HTTP básica.
nano /etc/ssh/sshd_config
Remova o comentário e altere a linha
#Port 22
para
Port 24000
Reinicie o ssh.
service ssh restart
Reconecte-se ao ssh com a nova porta.
ssh root@<your_IP> -p 24000
Crie arquivo /etc/default/pveproxy
.
ALLOW_FROM="127.0.0.1"
DENY_FROM="all"
POLICY="allow"
Reinicie pveproxy
para que as alterações tenham efeito.
/etc/init.d/pveproxy restart
Configure o nginx (se você não tiver feito isso antes).
apt-get install nginx
service nginx restart
Crie uma configuração padrão no /etc/nginx/site-available/default
.
server {
listen 80;
server_name example.com;
rewrite ^ https://$hostname.example.com$request_uri? permanent;
}
server {
listen 443 ssl;
server_name example.com;
#auth_basic "Restricted";
#auth_basic_user_file htpasswd;
#location / { proxy_pass https://127.0.0.1:8006; }
}
Obtenha um certificado SSL válido e atualize sua configuração nginx. Por exemplo, isso pode ser feito com a ajuda de certbox e letsencrypt. Para mais informações, clique aqui .
wget https://dl.eff.org/certbot-auto
chmod +x certbot-auto
./certbot-auto --nginx
Agora, sua configuração do nginx deve ficar assim (ou você pode alterá-la manualmente depois). Não se esqueça de descomentar ssl, auth e linhas de localização.
server {
listen 80;
server_name example.com;
rewrite ^ https://$hostname.example.com$request_uri? permanent;
}
server {
listen 443 ssl;
server_name example.com;
ssl on;
auth_basic "Restricted";
auth_basic_user_file htpasswd;
location / { proxy_pass https://127.0.0.1:8006; }
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
}
Crie um /etc/htpasswd
arquivo usando o gerador Htpasswd .
nano /etc/nginx/htpasswd
Reinicie o Nginx
service nginx restart
Agora você pode visualizar o console de gerenciamento https://example.com
após a autenticação básica.
Os contêineres estão agora disponíveis por solicitações HTTP e SSH. Agora, podemos configurar o encaminhamento de porta do servidor externo para os contêineres. Por exemplo, para mapear example.com:8080
para 10.100.0.200:3000
inserir o seguinte.
iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 8080 -j DNAT --to 10.100.0.200:3000
Você pode ver as regras atuais.
`iptables -t nat -v -L PREROUTING -n --line-number`
Você também pode excluir uma regra pelo número com o seguinte.
`iptables -t nat -D PREROUTING <#>`.
Agora podemos acessar um contêiner de outro.
pct create 250 /var/lib/vz/template/cache/ubuntu-14.04-standard_14.04-1_amd64.tar.gz -storage local-lvm -net0 name=eth0,bridge=vmbr1,ip=10.100.0.250/24,gw=10.100.0.1
pct start 250
pct enter 250
ping 10.100.0.200
Se você deseja restringir o acesso do contêiner 250 a 200, é necessário conectar cada contêiner a uma ponte pessoal e desativar o encaminhamento entre pontes.
Exclua contêineres existentes.
pct stop 200
pct stop 250
pct destroy 200
pct destroy 250
Mude o conteúdo de /etc/network/interfaces
.
auto vmbr1
iface vmbr1 inet static
address 10.100.1.1
netmask 255.255.255.0
bridge_ports none
bridge_stp off
bridge_fd 0
auto vmbr2
iface vmbr2 inet static
address 10.100.2.1
netmask 255.255.255.0
bridge_ports none
bridge_stp off
bridge_fd 0
reboot
o sistema
Ativar encaminhamento
`sysctl -w net.ipv4.ip_forward=1`
Para tornar essas alterações permanentes, você pode editar o /etc/sysctl.conf
arquivo e encontrar o texto a seguir.
#net.ipv4.ip_forward=1
Remova o comentário.
net.ipv4.ip_forward=1
Você também pode executar sysctl -p
para que as alterações entrem em vigor imediatamente.
Crie contêineres.
pct create 200 /var/lib/vz/template/cache/ubuntu-14.04-standard_14.04-1_amd64.tar.gz -storage local-lvm -net0 name=eth0,bridge=vmbr1,ip=10.100.1.200/24,gw=10.100.1.1
pct create 250 /var/lib/vz/template/cache/ubuntu-14.04-standard_14.04-1_amd64.tar.gz -storage local-lvm -net0 name=eth0,bridge=vmbr2,ip=10.100.2.250/24,gw=10.100.2.1
Inicie os contêineres com pct start 200
e pct start 250
.
Liberar as iptables
regras.
iptables -F
Habilite o NAT.
iptables --table nat --append POSTROUTING --out-interface vmbr0 -j MASQUERADE
vmbr0
é a ponte que inclui interface externa.
Permitir o encaminhamento a partir da interface externa.
iptables --append FORWARD --in-interface vmbr0 -j ACCEPT
Permitir o encaminhamento dos contêineres para a Internet.
iptables -A FORWARD -i vmbr1 -o vmbr0 -s 10.100.1.0/24 -j ACCEPT
iptables -A FORWARD -i vmbr2 -o vmbr0 -s 10.100.2.0/24 -j ACCEPT
Solte o outro encaminhamento.
iptables -A FORWARD -i vmbr1 -j DROP
iptables -A FORWARD -i vmbr2 -j DROP
Agora, verifique se é 10.100.1.200
possível executar ping 8.8.8.8
mas não pode executar ping 10.100.2.250
e se 10.100.2.250
pode executar ping 8.8.8.8
mas não pode executar ping 10.100.1.200
.
A ordem dos comandos relacionados ao iptables é importante. A melhor maneira de operar suas regras é usar iptables-persistent
. Este pacote ajuda a salvar as regras do iptables nos arquivos /etc/iptables/rules.v4
e /etc/iptables/rules.v6
pode carregá-las automaticamente após a reinicialização do sistema. Basta instalá-lo com o seguinte.
apt-get install iptables-persistent
Selecione YES
quando solicitado.
Usando um sistema diferente? O Docker é um aplicativo que permite implantar programas executados como contêineres. Foi escrito no popular programa Go
Usando um sistema diferente? Introdução O Sentry é uma solução de código aberto para rastreamento de erros. O Sentry rastreia exceções e outras mensagens úteis
O RancherOS é um sistema operacional incrivelmente leve (apenas cerca de 60 MB) que executa um daemon do Docker do sistema como PID 0 para executar serviços do sistema
O Harbor é um servidor de registro de classe empresarial de código aberto que armazena e distribui imagens do Docker. Harbor estende o Docker Distribution b de código aberto
Este tutorial explica os conceitos básicos de introdução ao Docker. Presumo que você já tenha o Docker instalado. As etapas deste tutorial funcionarão em um
Ao executar um aplicativo Web, normalmente você deseja aproveitar ao máximo seus recursos sem precisar converter seu software para usar multithreading
Todos conhecemos e amamos o Docker, uma plataforma para criar, gerenciar e distribuir contêineres de aplicativos em várias máquinas. A Docker Inc. fornece um serviço t
Este artigo mostra como implantar o aplicativo Node em um contêiner do Docker. Nota: Este tutorial pressupõe que você tenha o Docker instalado e leia
Introdução Este guia mostra como criar e configurar um enxame Docker usando vários servidores Alpine Linux 3.9.0 e o Portainer. Esteja ciente de que
Visão geral Este artigo tem como objetivo ajudá-lo a colocar um cluster do Kubernetes em funcionamento com o kubeadm rapidamente. Este guia estará implantando dois servidores, em
Este artigo explica como instalar o docker-compose no CoreOS. No CoreOS, a pasta / usr / é imutável, portanto o caminho padrão / usr / local / bin não está disponível para
Introdução O Docker é um aplicativo que nos permite implantar programas executados como contêineres. Foi escrito na popular linguagem de programação Go
O Kubernetes é uma plataforma de código aberto desenvolvida pelo Google para gerenciar aplicativos em contêineres em um cluster de servidores. Ele se baseia em uma década e
Os aplicativos PHP geralmente são compostos por um servidor da web, um sistema de banco de dados relacional e o próprio interpretador de linguagem. Neste tutorial, estaremos alavancando
Usando um sistema diferente? Introdução O Rancher é uma plataforma de código aberto para executar contêineres e criar um serviço de contêiner particular. Rancheiro é a base
Usando um sistema diferente? Introdução O Docker Swarm transforma seus servidores individuais em um cluster de computadores; facilitando o dimensionamento, alta disponibilidade e
A tecnologia de contêiner do Docker permite executar aplicativos em um ambiente específico e isolado. Docker Community Edition (CE) é o novo nome para o fre
Pré-requisitos Docker engine 1.8+. Mínimo de 4 GB de espaço em disco. Mínimo de 4 GB de RAM. Etapa 1. Instalar o Docker Para instalar o SQL-Server, o Docker deve
Usando um sistema diferente? Introdução O Docker é um aplicativo que permite a implantação de software em contêineres virtuais. Foi escrito no G
Os ataques de ransomware estão aumentando, mas a IA pode ajudar a lidar com os vírus de computador mais recentes? AI é a resposta? Leia aqui para saber se é AI boone ou bane
ReactOS, um sistema operacional de código aberto e gratuito está aqui com a versão mais recente. Será que ela pode atender às necessidades dos usuários modernos do Windows e derrubar a Microsoft? Vamos descobrir mais sobre esse estilo antigo, mas uma experiência de sistema operacional mais recente.
O Whatsapp finalmente lançou o aplicativo Desktop para usuários de Mac e Windows. Agora você pode acessar o Whatsapp do Windows ou Mac facilmente. Disponível para Windows 8+ e Mac OS 10.9+
Leia isto para saber como a Inteligência Artificial está se tornando popular entre as empresas de pequena escala e como está aumentando as probabilidades de fazê-las crescer e dar vantagem a seus concorrentes.
Recentemente, a Apple lançou o macOS Catalina 10.15.4, uma atualização suplementar para corrigir problemas, mas parece que a atualização está causando mais problemas, levando ao bloqueio de máquinas mac. Leia este artigo para saber mais
13 Ferramentas de Extração de Dados Comerciais de Big Data
Nosso computador armazena todos os dados de uma maneira organizada conhecida como sistema de arquivos Journaling. É um método eficiente que permite ao computador pesquisar e exibir arquivos assim que você clicar em search.https: //wethegeek.com/? P = 94116 & preview = true
À medida que a ciência evolui em um ritmo rápido, assumindo muitos de nossos esforços, os riscos de nos sujeitarmos a uma singularidade inexplicável também aumentam. Leia, o que a singularidade pode significar para nós.
Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1
A IA na área da saúde deu grandes saltos nas últimas décadas. Portanto, o futuro da IA na área da saúde ainda está crescendo dia a dia.