jck28 - 小柒 - Docker 网络模式与Docker-compose介绍

一,docker与虚拟机解析

1,架构区别

  • 虚拟机是有独立内核的,是一个独立完整的虚拟化方案。
  • Docker虚拟化软件,没有虚拟化操作系统(没有隔离内核,使用宿主机的内核)。

2,使用场景区别

  • 部署测试(TO B)只能用虚拟机
  • 需要挑内核的场景都不能用Docker

二,Docker网络模式

1,bridge 网桥模式

  • Docker安装启动后会在宿主主机上创建一个名为 docker0 的虚拟网桥,处于七层网络模型的数据链路层,后续每当我们创建一个新的docker容器,在不指定容器网络模式的情况下,docker会通过docker0 与主机的网络连接,docker0 相当于网桥。

  • 使用 bridge 模式新创建的容器,容器内部都会有一个虚拟网卡,名为 eth0,容器之间可以通过容器内部的IP相互通信。

  • 命令: docker run -d -name tomcat01 --net=bridge -p 8085:80 tomcat:latest

2,host模式

  • 如果指定的host模式容器不会拥有一个独立network namesace,而是与宿主主机共用network namesace。也就说明容器本身不会有的网卡信息,而是使用宿主主机的网络信息。容器除了网络,其他比如文件系统、进程等依然都是隔离的。
  • 命令:指定 --net=host

3,container模式

  • container模式和指定的容器共享,两者之间除了网络共享(网卡、主机名、IP 地址),其他方面还是隔离的。

  • 命令:docker run -d -name tomcat02 --net=container:name/id -p 8000:80 tomcat:latest

三,Docker-compose

3.1 简介

  • Docker-compose 是用于定义和运行多容器的 Docker 应用程序的工具。通过Compose,可以使用 YAML 文件来配置应用程序的服务。
  • Compose 的使用一般分为三步:
    1. 使用 Dockerfile 定义应用程序的环境,以便可以在任何地方复制它。
    2. 在 docker-compose.yml 中定义组成应用程序的服务,以便它们可以在隔离的环境中一起运行。
    3. 运行 docker-compose up,然后 Compose 启动并运行您的整个应用程序。

3.2 安装 (以testlink为例)

curl -SL "https://github.com/docker/compose/releases/download/v2.24.6/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • 更改权限:chmod +x /usr/local/bin/docker-compose

  • 查看版本:docker-compose --version

  • 在根目录下新建docker-compose.yml文件,并配置启动mariadb和testlink启容器:

version: '2'
services:
  mariadb:
    image: "bitnami/mariadb:latest"
    environment:
       - MARIADB_USER=bn_testlink
       - MARIADB_DATABASE=bitnami_testlink
       - ALLOW_EMPTY_PASSWORD=yes

  testlink:
    image: "bitnami/testlink:latest"
    environment:
       - MARIADB_HOST=mariadb
       - MARIADB_PORT=3306
       - TESTLINK_DATABASE_USER=bn_testlink
       - TESTLINK_DATABASE_NAME=bitnami_testlink
       - ALLOW_EMPTY_PASSWORD=yes
    ports:
       - '5003:8080'
       - '443:443'
    depends_on:
       - mariadb

3.3 常用命令