docker 网络 && docker compose

docker 网络 && docker compose

Uno, interconexión de contenedores

(1) Mapeo de puertos para realizar la interconexión de contenedores

  • El mecanismo de mapeo de puertos promueve los servicios en el contenedor para el acceso a la red externa
  • Rango de puertos de mapeo aleatorio o especificado

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

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

(2) El túnel de comunicación en red realiza la interconexión de contenedores

Interconexión de contenedores

  • Establecer un túnel de comunicación de red entre el contenedor fuente y el contenedor receptor
  • Utilice la opción de enlace del comando docker run para lograr la interconexión y comunicación entre contenedores

Realice la interconexión de contenedores


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 la interconexión de contenedores especificando el mismo puente 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


Dos, cuatro modos de red acoplable

  • Cuando Docker está instalado, creará automáticamente tres redes, puente (el contenedor creado está conectado a esta red de forma predeterminada), ninguna, host
  • host: el contenedor no virtualizará su propia tarjeta de red, configurará su propia IP, etc., sino que utilizará la IP y el puerto del host.
  • Contenedor: El contenedor creado no creará su propia tarjeta de red ni configurará su propia IP, sino que compartirá la IP y el rango de puertos con un contenedor específico.
  • Ninguno: este modo desactiva la función de red del contenedor.
  • Puente: este modo asigna y configura ip para cada contenedor, conecta el contenedor a un puente virtual docker0 y se comunica con el host a través del puente docker0 y la configuración de la tabla iptablesNAT.

Todo lo anterior está configurado sin manos, lo que realmente necesita configurarse es una red personalizada.

(1) Puente


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

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

(2) IP fija de red personalizada


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

  • Ver red 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

  • Ver prueba de contenedor docker44

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

  • Eliminar la red de Docker

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

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

Nota: Si la tarjeta de red tiene un contenedor específico en ejecución, debe detenerse o eliminarse para eliminar la ventana acoplable personalizada —— red

Tres, docker componer orquestación

(1) ¿Qué es componer?

Docker Compose 的前身是Fig,它是一个定义及运行多个容器的工具
使用Docker Compose不再需要使用shell脚本来启动容器
通过Docker Compose可以使用YML文件来配置应用程序所需要的的所有服务

  • Docker Compose非常适合组合使用多个容器进行开发的场景

YAML是一种标记语言很直观的数据序列化格式,非常适合用来表达或者编辑数据结构、各种配置文件、文件大纲等,例如:许多电子邮件标题格式和YAML非常接近

  • 文件格式以及编写注意事项

1、不支持制表符tab键缩进,需要使用空格缩进,使用缩进表示层级关系
2、通常开头缩进2个空格,缩进的空格数不重要,只要相同层级的元素左对齐即可
3、字符后缩进一个空格,如冒号、逗号、横杆
4、用#号注释
5、如果包含特殊字符用单引号引起来
6、布尔值必须用引号括起来

  • Docker Compose文件结构举例:docker-compose.yml

    1、compose版本号、服务标识符必须顶格写

    2、属性名与属性值以:(冒号加空格)分隔开

    3、层级使用两个空格表示

    4、服务属性使用-(空格空格-空格)表示

(2) Docker Compose配置常用字段

常用字段在上述的yml文件格式中有过一些解释,下面是详细解释

Inserte la descripción de la imagen aquí

  • Docker Compose常用命令

基本的命令格式:docker-compose [选项] [命令] [参数]

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí
使用Docker Compose详解:使用步骤、环境准备、格式详解

  • compose使用的三个步骤

1、使用Dockerfile定义应用程序的环境

2、使用docker-compose.yml定义构成应用程序的服务,这样它们可以在隔离环境中一起运行

3、最后执行docker-compose up命令来启动并运行整个应用程序

Cuatro, componga la implementación y operación con un solo clic del contenedor Nginx

  • Preparación del entorno de composición de Docker
将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

  • Establecer 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
  • Utilice docker-comppose.yml para implementar Nginx con un clic

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

  • Ver imagen compose_nginx_nginx y contenedor
[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

  • verificación
  • Acceso al navegador de la máquina real

192.168.75.200:1216

Inserte la descripción de la imagen aquí

Supongo que te gusta

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