我试图得到一个docker撰写文件与气流和Spark工作。气流通常在 8080:8080
这也是spark所需要的。我有以下docker compose文件:
version: '3.7'
services:
master:
image: gettyimages/spark
command: bin/spark-class org.apache.spark.deploy.master.Master -h master
hostname: master
environment:
MASTER: spark://master:7077
SPARK_CONF_DIR: /conf
SPARK_PUBLIC_DNS: localhost
expose:
- 7001
- 7002
- 7003
- 7004
- 7005
- 7077
- 6066
ports:
- 4040:4040
- 6066:6066
- 7077:7077
- 8080:8080
volumes:
- ./conf/master:/conf
- ./data:/tmp/data
worker:
image: gettyimages/spark
command: bin/spark-class org.apache.spark.deploy.worker.Worker spark://master:7077
hostname: worker
environment:
SPARK_CONF_DIR: /conf
SPARK_WORKER_CORES: 2
SPARK_WORKER_MEMORY: 1g
SPARK_WORKER_PORT: 8881
SPARK_WORKER_WEBUI_PORT: 8081
SPARK_PUBLIC_DNS: localhost
links:
- master
expose:
- 7012
- 7013
- 7014
- 7015
- 8881
ports:
- 8081:8081
volumes:
- ./conf/worker:/conf
- ./data:/tmp/data
postgres:
image: postgres:9.6
environment:
- POSTGRES_USER=airflow
- POSTGRES_PASSWORD=airflow
- POSTGRES_DB=airflow
logging:
options:
max-size: 10m
max-file: "3"
webserver:
image: puckel/docker-airflow:1.10.9
restart: always
depends_on:
- postgres
environment:
- LOAD_EX=y
- EXECUTOR=Local
logging:
options:
max-size: 10m
max-file: "3"
volumes:
- ./dags:/usr/local/airflow/dags
# Add this to have third party packages
- ./requirements.txt:/requirements.txt
# - ./plugins:/usr/local/airflow/plugins
ports:
- "8082:8080" # NEED TO CHANGE THIS LINE
command: webserver
healthcheck:
test: ["CMD-SHELL", "[ -f /usr/local/airflow/airflow-webserver.pid ]"]
interval: 30s
timeout: 30s
retries: 3
但特别需要改变路线:
ports:
- "8082:8080" # NEED TO CHANGE THIS LINE
在web服务器下,所以没有端口冲突。但是当我把集装箱港口改成其他港口时 8080:8080
它不工作(无法连接/找到服务器)。如何成功更改集装箱港口?
1条答案
按热度按时间llmtgqce1#
在docker中指定端口Map时,将提供2个端口,例如:
8082:8080
. 正确的端口是在容器中侦听的端口。可以有多个容器在内部侦听同一端口。它们在您的localhost中仍然不可用-这就是为什么我们使用ports
的节。现在,在localhost中不能多次绑定同一端口。这就是为什么当你试图在左边设置时docker失败了
8080
不止一次。在当前的撰写文件中spark
服务端口Map到8080(端口左侧8080:8080
)以及webserver
服务Map到8082
(左侧)8082:8080
).如果要访问spark,请转到:http://localhost:8080对于web服务器,转到http://localhost:8082