docker复制文件从一个容器到另一个?

我是一个非常新手,整个docker和docker组成。

这是我想要做的

  1. docker构build
  2. docker-compose $ COMPOSE_ARGS运行–rm task1
  3. docker-compose $ COMPOSE_ARGS运行–rm task2
  4. docker-compose $ COMPOSE_ARGS运行–rm combine-both-task2
  5. docker-compose $ COMPOSE_ARGS运行–rm selenium-test

和一个像这样的docker-compose.yml

task1: build: ./task1 volumes_from: - task1_output command: ./task1.sh task1_output: image: alpine:3.3 volumes: - /root/app/dist command: /bin/sh # essentially I want to copy task1 output into task2 because they each use different images and use different tech stacks... task2: build: ../task2 volumes_from: - task2_output - task1_output:ro command: /bin/bash -cx "mkdir -p task1 && cp -R /root/app/dist/* ." 

所以现在所有需要的文件在task2容器中…我将如何启动一个Web服务器,并暴露与task2内容的端口?

卡在这里…我如何访问我的combine-tasks / Dockerfile中的task2_output的东西

 combine-both-task2: build: ../combine-tasks volumes_from: - task2_output 

任何帮助是极大的赞赏。 谢谢

在Docker的最新版本中, 命名卷取代数据容器是在容器之间共享数据的简单方法。

 docker volume create --name myshare docker run -v myshare:/shared task1 docker run -v myshare:/shared -p 8080:8080 task2 ... 

这些命令将设置一个本地卷,并且-v myshare:/shared参数将使该共享可用作每个容器内的文件夹/shared

要在撰写文件中expression这一点:

 version: '2' services: task1: build: ./task1 volumes: - 'myshare:/shared' task2: build: ./task2 ports: - '8080:8080' volumes: - 'myshare:/shared' volumes: myshare: driver: local 

为了testing这个,我做了一个小项目:

 - docker-compose.yml (above) - task1/Dockerfile - task1/app.py - task2/Dockerfile 

我使用节点的http服务器作为task2/Dockerfile

 FROM node RUN npm install -g http-server WORKDIR /shared CMD http-server 

task1/Dockerfile使用python:alpine ,来显示两个不同的堆栈书写和阅读。

 FROM python:alpine WORKDIR /app COPY . . CMD python app.py 

这里是task1/app.py

 import time count = 0 while True: fname = '/shared/{}.txt'.format(count) with open(fname, 'w') as f: f.write('content {}'.format(count)) count = count + 1 time.sleep(10) 

docker-compose.yml四个文件,并通过docker compose up docker-compose.yml目录中docker-compose.yml – 然后访问$ DOCKER_HOST:8080看到一个稳定更新的文件列表。

此外,我使用docker版本1.12.0和组成版本1.8.0但这应该为几个版本回来。

请务必查看Docker文档,以了解可能在此处错过的详细信息:
https://docs.docker.com/engine/tutorials/dockervolumes/