docker 配置文件使用经验,后续持续增加

1. 容器中如何访问主机服务

在docker容器、docker compose 中如何访问主机服务呢?

docker容器

20.10.0 版本在 linux 新增 host.docker.internal 支持docker run -it --add-host=host.docker.internal:host-gateway alpine cat /etc/hosts

sh 复制代码
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.1      host.docker.internal # --add-host的作用就是添加了这行到/etc/hosts
172.17.0.3      cb0565ceea26

add-host 的意思是告诉容器,容器对域名 host.docker.internal 的访问都将转发到 host-gateway 去。

即容器内部访问这个域名 host.docker.internal 时,就会访问到对应的主机上的 host-gateway 地址,从而达到容器访问主机上服务的效果。

docker compose

注意:8080是宿主机提供的服务

yaml 复制代码
version: "2.3" # version改为3.3也可以
services:
  server:
    image: curlimages/curl
    command: curl http://host.docker.internal:8080
    extra_hosts:
      - "host.docker.internal:host-gateway"

2. docker-compose使用多个docker-compose.yaml配置文件创建容器

如何使用多个Docker compose文件,参见:multiple-compose-files

Docker Compose lets you merge and override a set of Compose files together to create a composite Compose file.

By default, Compose reads two files, a compose.yml and an optional compose.override.yml file. By convention, the compose.yml contains your base configuration. The override file can contain configuration overrides for existing services or entirely new services.

If a service is defined in both files, Compose merges the configurations using the rules described below and in the Compose Specification.

后面的docker compose配置如何与前面的docker compose配置合并,参见:compose-file/13-merge

指定多个docker compose配置文件示例

bash 复制代码
docker compose -f docker-compose.yaml -f docker-compose.gpu.yaml up -d --build

docker compose -f docker-compose.yaml -f docker-compose.api.yaml up -d --build

docker-compose.yaml

YAML 复制代码
version: '3.8'

services:
  ollama:
    volumes:
      - ollama:/root/.ollama
    container_name: ollama
    pull_policy: always
    tty: true
    restart: unless-stopped
    image: ollama/ollama:${OLLAMA_DOCKER_TAG-latest}

  open-webui:
    build:
      context: .
      args:
        OLLAMA_BASE_URL: '/ollama'
      dockerfile: Dockerfile
    image: ghcr.io/open-webui/open-webui:${WEBUI_DOCKER_TAG-main}
    container_name: open-webui
    volumes:
      - open-webui:/app/backend/data
    depends_on:
      - ollama
    ports:
      - ${OPEN_WEBUI_PORT-3000}:8080
    environment:
      - 'OLLAMA_BASE_URL=http://ollama:11434'
      - 'WEBUI_SECRET_KEY='
    extra_hosts:
      - host.docker.internal:host-gateway
    restart: unless-stopped

volumes:
  ollama: {}
  open-webui: {}

docker-compose.gpu.yaml

YAML 复制代码
version: '3.8'

services:
  ollama:
    # GPU support
    deploy:
      resources:
        reservations:
          devices:
            - driver: ${OLLAMA_GPU_DRIVER-nvidia}
              count: ${OLLAMA_GPU_COUNT-1}
              capabilities:
                - gpu

docker-compose.api.yaml

YAML 复制代码
version: '3.8'

services:
  ollama:
    # Expose Ollama API outside the container stack
    ports:
      - ${OLLAMA_WEBAPI_PORT-11434}:11434
相关推荐
郝开3 小时前
Docker Compose 模块化多环境配置规范指南:示例搭建Kibana 9.4.2
docker·容器·kibana
虎王物联4 小时前
Docker BuildKit多阶段构建:IoT固件交叉编译流水线实战
运维·物联网·ci/cd·docker·容器·物联网嵌入式
LlmCraft|大模型工程实践4 小时前
14. CI/CD 流水线中集成 Docker:GitHub Actions 自动构建部署
ci/cd·docker·github
10mAh4 小时前
【Docker】磁盘空间被占满怎么清理?——overlay2、容器日志与 Build Cache 排查实战
docker·容器·eureka
xhaxy4 小时前
docker,k8s安装,k8s集群搭建(OS7)
docker·容器·kubernetes
guo_wen_qiang7 小时前
mac中docker desktop服务端开启远程访问
运维·服务器·macos·docker
Sayai8 小时前
Elasticsearch 9 安装验证实战:start-local 一键部署 + Docker 手动安装踩坑指南
大数据·elasticsearch·docker
名字还没想好☜14 小时前
Docker 容器安全加固实战:非 root、只读根文件系统、drop capabilities 与最小攻击面
运维·安全·docker·容器·kubernetes
码--到成功14 小时前
Docker、Kubernetes安装系列 二
docker·容器·kubernetes
M--Y16 小时前
Docker镜像与仓库管理详解
docker·容器