Docker容器和主机互相连接的三种情景

情景一:主机连接容器

需求:主机内的某个应用需要用到容器启动的数据库,主机的应用关于该容器数据库的host,port该如何填写?

情景二:容器连接容器

第一种:同一配置文件

第二种:不同配置文件

新建一个网络,把容器都加入到这个网络里

1
docker network create my_network

容器1:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
version: '3.3'
services:
    maccms10:
        image: esme518/docker-maccms10
        container_name: maccms10
        volumes:
            - ./data:/var/www/html
        ports:
            - 2419:80
        networks:
          - my_network
        environment:
          - DB_HOST=mariadb
          - DB_PORT=3306
networks:
  my_network:
    external: true

容器2:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
version: '3.3'
services:
    mariadb:
        image: mariadb:10.3
        container_name: mariadb
        volumes:
            - ./mysql:/var/lib/mysql
            - ./backup:/backup
        environment:
            - MARIADB_ROOT_PASSWORD=12345678
        ports:
            - 2420:3306
        networks:
          - my_network
networks:
  my_network:
    external: true

情景三:容器连接主机

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
version: '3.3'
services:
    maccms10:
        image: esme518/docker-maccms10
        container_name: maccms10
        volumes:
            - ./data:/var/www/html
        ports:
            - 2419:80
        environment:
          - DB_HOST=host.docker.internal  # 使用特殊的DNS名称连接到主机上的数据库
          - DB_PORT=3306  # 主机上数据库的端口
使用 Hugo 构建
主题 StackJimmy 设计