docker 网络 && docker compose

docker 网络 && docker compose

Um, interconexão de contêiner

(1) Mapeamento da porta para realizar a interconexão do contêiner

  • O mecanismo de mapeamento de porta promove os serviços no contêiner para acesso à rede externa
  • Intervalo de porta de mapeamento aleatório ou especificado

docker run -d -P httpd:centos  ##  -P 是随机分配端口

docker run -d -p 49888:80 httpd:centos   ##-p  是指定端口映射

(2) O túnel de comunicação da rede realiza a interconexão do contêiner

Interconexão de contêineres

  • Estabeleça um túnel de comunicação de rede entre o recipiente de origem e o recipiente coletor
  • Use a opção docker run command --link para obter a interconexão e comunicação entre os contêineres

Perceba a interconexão do contêiner


docker run -d -P --name web1 httpd:centos
docker run -d -P --name web2 --link web1:web1 httpd:centos

docker exec -it web2 /bin/bash

ping web1

(3) Implementar a interconexão de contêiner especificando a mesma ponte docker


//新建docker网卡
docker network create --subnet=172.19.0.0/24 mynetwork   ##mynetwork 是docker网络名字

//基于同一张docker 网卡新建一个容器test22
docker run -itd --name test22 --network mynetwork centos:7 /bin/bash

 //基于同一张docker 网卡新建一个容器test33
docker run -itd --name test33 --network mynetwork centos:7 /bin/bash 

//进入容器test33
docker exec -it test33 /bin/bash

//ping test22通
[root@52c6aa6a2235 /]# ping test22 
PING test22 (172.19.0.2) 56(84) bytes of data.
64 bytes from test22.mynetwork (172.19.0.2): icmp_seq=1 ttl=64 time=0.082 ms
64 bytes from test22.mynetwork (172.19.0.2): icmp_seq=2 ttl=64 time=0.096 ms
--- test22 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.082/0.089/0.096/0.007 ms


Dois, quatro modos de rede docker

  • Quando o Docker é instalado, ele cria automaticamente três redes, ponte (o contêiner criado é conectado a esta rede por padrão), nenhuma, host
  • host: O contêiner não virtualizará sua própria placa de rede, configurará seu próprio IP, etc., mas usará o IP e a porta do host.
  • Container: O container criado não criará sua própria placa de rede e configurará seu próprio ip, mas compartilhará o ip e o intervalo de portas com um container especificado.
  • Nenhum: Este modo desativa a função de rede do contêiner.
  • Bridge: Este modo aloca e define ip para cada contêiner, conecta o contêiner a uma ponte virtual docker0 e se comunica com o host por meio da ponte docker0 e da configuração da tabela iptablesNAT.

Os itens acima são todos configurados sem as mãos, o que realmente precisa ser configurado é uma rede personalizada.

(1) Ponte


docker run -itd --name test1 --network bridge --ip 172.17.0.10 centos:7 /bin/bash

(发现是失败的,因为使用bridge无法支持指定ip——需要自定义ip然后指定ip)

(2) IP fixo de rede personalizado


docker network create --subnet=172.19.0.0/24 mynetwork

docker run -itd --name test44 --net mynetwork --ip 172.19.0.20 centos:7 /bin/bash

  • Exibir rede personalizada mynetwork

docker network ls

[root@localhost opt] docker network ls
NETWORK ID          NAME                    DRIVER              SCOPE
d88329f07179        bridge                  bridge              local
a58999c6c705        compose_nginx_cluster   bridge              local
1236c91097a9        host                    host                local
34801c075b17        mynetwork               bridge              local
a79f44bb5700        none                    null                local

  • Veja o teste do docker container 44

docker ps -a
[root@localhost opt] docker ps -a
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS                      PORTS                                         NAMES
fe58a4a7528c        centos:7              "/bin/bash"         14 seconds ago      Up 13 seconds                                                             test44

  • Excluir rede docker

docker network rm NETWORK ID   (网络ID)docker network ls

docker network rm 后面输入要删除的network id

Nota: Se a placa de rede tiver um contêiner especificado em execução, ele precisa ser interrompido ou excluído para excluir a janela de encaixe personalizada - rede

Três, orquestração de composição docker

(1) O que é compor?

O predecessor do Docker Compose é o Fig. É uma ferramenta para definir e executar vários contêineres. O
Docker Compose não precisa mais usar scripts de shell para iniciar o contêiner. O
Docker Compose pode usar arquivos YML para configurar todos os serviços exigidos pelo aplicativo.

  • O Docker Compose é muito adequado para cenários onde vários contêineres são combinados para desenvolvimento

YAML é um formato de serialização de dados muito intuitivo com uma linguagem de marcação, que é muito adequado para expressar ou editar estruturas de dados, vários arquivos de configuração, contornos de arquivos, etc. Por exemplo: muitos formatos de cabeçalho de e-mail são muito semelhantes ao YAML

  • Formato de arquivo e anotações

1. O recuo da tecla Tab não é suportado. O recuo do espaço é necessário. Use o recuo para indicar a relação hierárquica.
2. Normalmente o início do recuo é de 2 espaços. O número de espaços recuados não é importante, desde que os elementos do mesmo nível estejam alinhados à esquerda pode ser
3, recuado um caractere de espaço, como dois-pontos, vírgula, uma barra transversal
4, usando um # Nota
5, se os caracteres especiais entre aspas simples
6, os valores booleanos devem ser colocados entre aspas

  • Exemplo de estrutura de arquivo Docker Compose: docker-compose.yml

    1. Compor o número da versão e o identificador do serviço deve ser escrito na caixa superior

    2. O nome do atributo e o valor do atributo são separados por: (dois pontos mais espaço)

    3. Use dois espaços para indicar o nível

    4. O atributo de serviço é representado por- (espaço espaço-espaço)

(2) Campos comuns de configuração do Docker Compose

Os campos comuns têm algumas explicações no formato de arquivo yml acima, a seguir está uma explicação detalhada

Insira a descrição da imagem aqui

  • Comandos comumente usados ​​do Docker Compose

Formato de comando básico: docker-compose [opção] [comando] [parâmetro]

Insira a descrição da imagem aqui

Insira a descrição da imagem aqui
Explicação detalhada sobre o uso do Docker Compose: etapas de uso, preparação do ambiente, formato detalhado

  • Três etapas usadas para escrever

1. Use Dockerfile para definir o ambiente do aplicativo

2. Use docker-compose.yml para definir os serviços que compõem o aplicativo para que possam ser executados juntos em um ambiente isolado

3. Por fim, execute o comando docker-compose up para iniciar e executar todo o aplicativo

Quatro, compor a implantação e operação com um clique do contêiner Nginx

  • Preparação do ambiente Docker Compose
将docker-compose文件拖至opt中,
cp -p docker-compose /usr/local/bin/

chmod +x /usr/local/bin/dockers-compose

mkdir /root/compose_nginx
cd /root/compose_nginx
mkdir wwwroot
cd wwwroot
vim index.html
<h1>this is compose</h1>
mkdir nginx
cd nginx

vim Dockerfile
FROM centos:7
MAINTAINER this is nginx
RUN yum -y update
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++  pcre  make
RUN useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.2.tar.gz /usr/local/src
WORKDIR /usr/local/src
WORKDIR nginx-1.12.2
RUN ./configure  --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && make && make install
ENV PATH /usr/local/nginx/sbin/nginx:$PATH
EXPOSE 80
EXPOSE 443
RUN echo "daemon off;" >>/usr/local/nginx/conf/nginx.conf
ADD run.sh /run.sh
RUN chmod 755 /run.sh
CMD ["/run.sh"]
~  
   

vim run.sh 

#!/bin/bash
/usr/local/nginx/sbin/nginx

  • Definir docker-comppose.yml
cd /root/compose_nginx

[root@localhost compose_nginx]# vim docker-comppose.yml 

version: '3'
services:    ##services 是定义下面的服务
  nginx:
    hostname: nginx   ##主机名
    build:          ##创建Nginx镜像
      context: ./nginx   ##切换到镜像目录
      dockerfile: Dockerfile   ##执行Dockerfile
    ports:  #开放端口
     - 1216:80
     - 1217:443
    networks:
     - cluster
    volumes:
     - ./wwwroot:/usr/local/nginx/html    ##宿主机站点目录挂载到Nginx容器中
networks:    ##网络部分:指定上面用到的网络
  cluster:       
[root@localhost compose_nginx]# tree
.
├── docker-comppose.yml
├── nginx
│   ├── Dockerfile
│   ├── nginx-1.12.2.tar.gz
│   └── run.sh
└── wwwroot
    └── index.html

2 directories, 5 files


将Nginx安装包拖至/root/compose_nginx/nginx
  • Use docker-comppose.yml para implantar o Nginx com um clique

docker-compose -f docker-comppose.yml up -d   //up 是指开启,-d 后台运行,守护进程  -f 使用docker-compose.yml

  • Ver imagem compose_nginx_nginx e container
[root@localhost compose_nginx]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
compose_nginx_nginx   latest              baaf5c9230ec        20 minutes ago      480MB

[root@localhost compose_nginx]# docker ps -a
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS                                         NAMES
144bbbf52901        compose_nginx_nginx   "/run.sh"           20 minutes ago      Up 20 minutes       0.0.0.0:1216->80/tcp, 0.0.0.0:1217->443/tcp   compose_nginx_nginx_1

  • verificação
  • Acesso ao navegador da máquina real

192.168.75.200:1216

Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/weixin_42099301/article/details/108747832
Recomendado
Clasificación