如何将dockercompose配置转换为dockerfile



我有点困惑,我试图将弹性kibana的dockercompose转换为dockerfile。但网络部分和连接部分对我来说有点困惑。有人能帮我转换和解释一下吗。

非常感谢!

version: "3.0"
services:
elasticsearch:
container_name: es-container
image: docker.elastic.co/elasticsearch/elasticsearch:6.5.4
environment:
- xpack.security.enabled=true
- "discovery.type=single-node"
networks:
- es-net
ports:
- 9200:9200  
kibana:
container_name: kb-container
image: docker.elastic.co/kibana/kibana:6.5.4
environment:
- ELASTICSEARCH_HOSTS=http://es-container:9200
networks:
- es-net
depends_on:
- elasticsearch
ports:
- 5601:5601
networks:
es-net:
driver: bridge
Docker Compose和Dockerfiles是完全不同的东西。Dockerfile是一个用于创建Docker镜像的配置文件。docker-compose.yml文件是Docker Compose用于使用Docker镜像启动Docker容器的配置文件。

要在不使用Docker Compose的情况下启动上述容器,您可以运行:

docker network create es-net
docker run -d -e xpack.security.enabled=true -e "discovery.type=single-node" -p 9200:9200 --network es-net --name es-container docker.elastic.co/elasticsearch/elasticsearch:6.5.4
docker run -d -e ELASTICSEARCH_HOSTS=http://es-container:9200 -p 5601:5601 --network es-net --name kb-container docker.elastic.co/kibana/kibana:6.5.4

或者,您可以在主机网络堆栈上运行容器(而不是es-netnework(。Kibana将能够在localhost:上与ElasticSearch对话

docker run -d -e xpack.security.enabled=true -e "discovery.type=single-node" --network host --name es-container docker.elastic.co/elasticsearch/elasticsearch:6.5.4
docker run -d -e ELASTICSEARCH_HOSTS=http://localhost:9200 --network host --name kb-container docker.elastic.co/kibana/kibana:6.5.4

(我实际上还没有运行这些,所以命令可能需要一些调整(

docker-compose.yml文件中,唯一可以构建到映像中的是环境变量,像这样对部署配置进行硬编码没有多大好处。特别是,您不能在映像中强制指定最终的容器名称或手动指定最终的网络配置。

如果你正在寻找一个紧凑的、自包含的、可以重新分发的运行描述,docker-compose.yml就是它。不要试图四处发送图像,或者专注于尝试使用一个容器;相反,分发docker-compose.yml文件作为运行应用程序的方式。我认为Compose是一个足够标准的工具,任何拥有Docker的人都已经拥有它,并且知道如何运行docker-compose up -d

# How to run this application on a different system
# (with Docker and Compose preinstalled):
here$ scp docker-compose.yml there:
here$ ssh there
there$ sudo docker-compose up -d

最新更新